terruvim-core-test 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/dist/src/core/config.js +2 -0
  2. package/dist/src/core/configMerge.js +266 -0
  3. package/dist/src/core/configUtils.js +72 -0
  4. package/dist/src/core/dependencyResolver.js +17 -0
  5. package/dist/src/core/deployUtils.js +73 -0
  6. package/dist/src/core/dynamicResourceManager.js +709 -0
  7. package/dist/src/core/entrypoint.js +56 -0
  8. package/dist/src/core/generateFinalConfig.js +45 -0
  9. package/dist/src/core/index.js +24 -0
  10. package/dist/src/core/resourceMap.js +99 -0
  11. package/dist/src/factories/accountPermissions.js +134 -0
  12. package/dist/src/factories/acmFactory.js +30 -0
  13. package/dist/src/factories/albFactory.js +331 -0
  14. package/dist/src/factories/attachSecretAccessPolicy.js +56 -0
  15. package/dist/src/factories/auroraFactory.js +619 -0
  16. package/dist/src/factories/backupPolicy.js +152 -0
  17. package/dist/src/factories/bastionFactory.js +91 -0
  18. package/dist/src/factories/bedrockFactory.js +334 -0
  19. package/dist/src/factories/budgetFactory.js +64 -0
  20. package/dist/src/factories/buildAlbCloudWatchAlarmsHelper.js +79 -0
  21. package/dist/src/factories/buildAlbCloudWatchDashboardHelper.js +106 -0
  22. package/dist/src/factories/buildAlbListenerRulesHelper.js +45 -0
  23. package/dist/src/factories/buildAlbListenersHelper.js +64 -0
  24. package/dist/src/factories/buildAlbResourceHelper.js +54 -0
  25. package/dist/src/factories/buildAlbRoute53RecordHelper.js +49 -0
  26. package/dist/src/factories/buildAlbTargetGroupsHelper.js +47 -0
  27. package/dist/src/factories/buildAlbWafAssociationHelper.js +43 -0
  28. package/dist/src/factories/buildAndPushDockerImage.js +57 -0
  29. package/dist/src/factories/buildAwsCloudWatchAlarmsHelper.js +118 -0
  30. package/dist/src/factories/buildCloudFrontRoute53RecordHelper.js +49 -0
  31. package/dist/src/factories/buildEcsClusterArgs.js +32 -0
  32. package/dist/src/factories/buildEcsSecrets.js +48 -0
  33. package/dist/src/factories/buildForceRedeployEnv.js +8 -0
  34. package/dist/src/factories/buildResourceOptions.js +11 -0
  35. package/dist/src/factories/buildS3StaticHostingCicdHelper.js +142 -0
  36. package/dist/src/factories/buildS3StaticHostingCloudWatchDashboardHelper.js +122 -0
  37. package/dist/src/factories/cloudTrailFactory.js +22 -0
  38. package/dist/src/factories/cloudWatchCompositeAlarmFactory.js +91 -0
  39. package/dist/src/factories/cloudWatchInsightsQueryFactory.js +83 -0
  40. package/dist/src/factories/cloudWatchLogGroupFactory.js +84 -0
  41. package/dist/src/factories/cloudfrontCodePipelineFactory.js +357 -0
  42. package/dist/src/factories/cloudwatchAlarmsFactory.js +121 -0
  43. package/dist/src/factories/codePipelineNotificationFactory.js +193 -0
  44. package/dist/src/factories/codePipelineNotificationRulesFactory.js +117 -0
  45. package/dist/src/factories/codeStarConnectionFactory.js +56 -0
  46. package/dist/src/factories/collectSecretKeys.js +18 -0
  47. package/dist/src/factories/comprehensiveNotificationFactory.js +250 -0
  48. package/dist/src/factories/costAndUsageReportFactory.js +32 -0
  49. package/dist/src/factories/createAwsAcmCertificate.js +40 -0
  50. package/dist/src/factories/createAwsBudget.js +40 -0
  51. package/dist/src/factories/createAwsCloudTrail.js +59 -0
  52. package/dist/src/factories/createAwsCloudwatchDashboard.js +59 -0
  53. package/dist/src/factories/createAwsEc2Instance.js +40 -0
  54. package/dist/src/factories/createAwsEventBridgeEventBus.js +40 -0
  55. package/dist/src/factories/createAwsGuardDutyDetector.js +40 -0
  56. package/dist/src/factories/createAwsGuardDutyDetectorFeature.js +45 -0
  57. package/dist/src/factories/createAwsGuardDutyFilter.js +46 -0
  58. package/dist/src/factories/createAwsGuardDutyPublishingDestination.js +50 -0
  59. package/dist/src/factories/createAwsHostedZone.js +40 -0
  60. package/dist/src/factories/createAwsIamRole.js +49 -0
  61. package/dist/src/factories/createAwsIamRoleInlinePolicies.js +48 -0
  62. package/dist/src/factories/createAwsIdentitystoreGroup.js +44 -0
  63. package/dist/src/factories/createAwsIdentitystoreGroupMembership.js +56 -0
  64. package/dist/src/factories/createAwsIdentitystoreUser.js +47 -0
  65. package/dist/src/factories/createAwsInspectorAssessmentTarget.js +47 -0
  66. package/dist/src/factories/createAwsInspectorDelegatedAdminAccount.js +47 -0
  67. package/dist/src/factories/createAwsInspectorEnabler.js +49 -0
  68. package/dist/src/factories/createAwsInspectorOrganizationConfiguration.js +55 -0
  69. package/dist/src/factories/createAwsKmsAliases.js +47 -0
  70. package/dist/src/factories/createAwsKmsKey.js +51 -0
  71. package/dist/src/factories/createAwsMacieAccount.js +45 -0
  72. package/dist/src/factories/createAwsMacieClassificationJob.js +53 -0
  73. package/dist/src/factories/createAwsMacieMember.js +49 -0
  74. package/dist/src/factories/createAwsMacieOrganizationConfiguration.js +44 -0
  75. package/dist/src/factories/createAwsRdsCluster.js +40 -0
  76. package/dist/src/factories/createAwsRdsClusterInstance.js +40 -0
  77. package/dist/src/factories/createAwsRdsInstance.js +40 -0
  78. package/dist/src/factories/createAwsRdsSubnetGroup.js +40 -0
  79. package/dist/src/factories/createAwsRoute53Record.js +40 -0
  80. package/dist/src/factories/createAwsSecret.js +40 -0
  81. package/dist/src/factories/createAwsSecretRotation.js +40 -0
  82. package/dist/src/factories/createAwsSecretVersion.js +40 -0
  83. package/dist/src/factories/createAwsSecurityGroup.js +40 -0
  84. package/dist/src/factories/createAwsSecurityGroupRule.js +40 -0
  85. package/dist/src/factories/createAwsSecurityHubAccount.js +40 -0
  86. package/dist/src/factories/createAwsSecurityHubAutomationRule.js +48 -0
  87. package/dist/src/factories/createAwsSecurityHubStandardsControl.js +44 -0
  88. package/dist/src/factories/createAwsSecurityHubStandardsSubscription.js +42 -0
  89. package/dist/src/factories/createAwsSesDomainDkim.js +40 -0
  90. package/dist/src/factories/createAwsSesDomainIdentity.js +40 -0
  91. package/dist/src/factories/createAwsSesEmailIdentity.js +40 -0
  92. package/dist/src/factories/createAwsSnsSubscription.js +62 -0
  93. package/dist/src/factories/createAwsSnsTopic.js +41 -0
  94. package/dist/src/factories/createAwsSqsQueue.js +40 -0
  95. package/dist/src/factories/createAwsSsmParameters.js +66 -0
  96. package/dist/src/factories/createAwsSsoAccountAssignment.js +66 -0
  97. package/dist/src/factories/createAwsSsoPermissionSet.js +64 -0
  98. package/dist/src/factories/createAwsStepFunctionsStateMachine.js +40 -0
  99. package/dist/src/factories/createBudget.js +56 -0
  100. package/dist/src/factories/createBudgetWithSnsAlert.js +79 -0
  101. package/dist/src/factories/createCostAndUsageReport.js +40 -0
  102. package/dist/src/factories/createEcrRepo.js +69 -0
  103. package/dist/src/factories/createEcsRolesAndPolicies.js +84 -0
  104. package/dist/src/factories/createEcsService.js +71 -0
  105. package/dist/src/factories/createEnvSecret.js +60 -0
  106. package/dist/src/factories/createGithubCodeStarConnection.js +44 -0
  107. package/dist/src/factories/createIamUserWithAccessKey.js +44 -0
  108. package/dist/src/factories/createLambdaFunction.js +89 -0
  109. package/dist/src/factories/createLambdaPermission.js +57 -0
  110. package/dist/src/factories/createListenerRule.js +68 -0
  111. package/dist/src/factories/createLogGroup.js +44 -0
  112. package/dist/src/factories/createSlackChannelConfiguration.js +49 -0
  113. package/dist/src/factories/createTargetGroup.js +50 -0
  114. package/dist/src/factories/createTaskDefinition.js +49 -0
  115. package/dist/src/factories/createVpcEndpoint.js +49 -0
  116. package/dist/src/factories/dashboardFactory.js +94 -0
  117. package/dist/src/factories/dataProtectionPolicyBuilder.js +103 -0
  118. package/dist/src/factories/ec2Factory.js +67 -0
  119. package/dist/src/factories/ecsClusterFactory.js +90 -0
  120. package/dist/src/factories/ecsCodePipelineFactory.js +308 -0
  121. package/dist/src/factories/ecsServiceFactory.js +350 -0
  122. package/dist/src/factories/enhancedCloudFrontCodePipelineFactory.js +205 -0
  123. package/dist/src/factories/enhancedEcsCodePipelineFactory.js +189 -0
  124. package/dist/src/factories/eventBridgeBusFactory.js +84 -0
  125. package/dist/src/factories/eventBridgeFactory.js +26 -0
  126. package/dist/src/factories/eventBridgeRuleFactory.js +114 -0
  127. package/dist/src/factories/fetchAllSecrets.js +51 -0
  128. package/dist/src/factories/getDeterministicPriority.js +13 -0
  129. package/dist/src/factories/getOrCreateSshKeyPair.js +57 -0
  130. package/dist/src/factories/guardDutyFactory.js +151 -0
  131. package/dist/src/factories/hostedZoneFactory.js +30 -0
  132. package/dist/src/factories/iamRoleFactory.js +29 -0
  133. package/dist/src/factories/inspectorFactory.js +109 -0
  134. package/dist/src/factories/kmsKeyFactory.js +32 -0
  135. package/dist/src/factories/lambdaFactory.js +133 -0
  136. package/dist/src/factories/lambdaPermissionFactory.js +32 -0
  137. package/dist/src/factories/logDataProtectionPolicyFactory.js +81 -0
  138. package/dist/src/factories/macieFactory.js +85 -0
  139. package/dist/src/factories/networkingFactory.js +429 -0
  140. package/dist/src/factories/opensearchCollectionFactory.js +109 -0
  141. package/dist/src/factories/organizationFactory.js +221 -0
  142. package/dist/src/factories/processReservedInstances.js +6 -0
  143. package/dist/src/factories/processSavingsPlans.js +43 -0
  144. package/dist/src/factories/rdsFactory.js +40 -0
  145. package/dist/src/factories/recordFactory.js +36 -0
  146. package/dist/src/factories/resolveEnvSecrets.js +14 -0
  147. package/dist/src/factories/resourceFactory.js +12 -0
  148. package/dist/src/factories/s3Factory.js +262 -0
  149. package/dist/src/factories/s3StaticHostingFactory.backup.js +424 -0
  150. package/dist/src/factories/s3StaticHostingFactory.js +348 -0
  151. package/dist/src/factories/s3StaticHostingFactory.refactored.js +334 -0
  152. package/dist/src/factories/savingsPlanFactory.js +26 -0
  153. package/dist/src/factories/secretsManagerFactory.js +107 -0
  154. package/dist/src/factories/securityGroupFactory.js +28 -0
  155. package/dist/src/factories/securityGroupRuleFactory.js +43 -0
  156. package/dist/src/factories/securityHubFactory.js +96 -0
  157. package/dist/src/factories/sesDomainDkimFactory.js +25 -0
  158. package/dist/src/factories/sesFactory.js +25 -0
  159. package/dist/src/factories/sesIdentitiesFactory.js +134 -0
  160. package/dist/src/factories/simpleNotificationFactory.js +112 -0
  161. package/dist/src/factories/smtpUserFactory.js +108 -0
  162. package/dist/src/factories/snsFactory.js +87 -0
  163. package/dist/src/factories/sqsFactory.js +41 -0
  164. package/dist/src/factories/ssmParameterFactory.js +67 -0
  165. package/dist/src/factories/ssoFactory.js +32 -0
  166. package/dist/src/factories/ssoGroupFactory.js +41 -0
  167. package/dist/src/factories/ssoPermissionSetFactory.js +29 -0
  168. package/dist/src/factories/ssoUserFactory.js +30 -0
  169. package/dist/src/factories/stepFunctionsFactory.js +32 -0
  170. package/dist/src/factories/tagPolicies.js +99 -0
  171. package/dist/src/factories/transformBudgetCostFilters.js +8 -0
  172. package/dist/src/factories/transformBudgetNotifications.js +12 -0
  173. package/dist/src/factories/transformBudgetPlannedLimits.js +8 -0
  174. package/dist/src/factories/types.js +2 -0
  175. package/dist/src/factories/validateAcmConfig.js +26 -0
  176. package/dist/src/factories/validateAuroraConfig.js +8 -0
  177. package/dist/src/factories/validateBedrockConfig.js +124 -0
  178. package/dist/src/factories/validateDashboardConfig.js +28 -0
  179. package/dist/src/factories/validateEventBridgeConfig.js +14 -0
  180. package/dist/src/factories/validateHostedZoneConfig.js +26 -0
  181. package/dist/src/factories/validateIamRoleConfig.js +8 -0
  182. package/dist/src/factories/validateKmsKeyConfig.js +8 -0
  183. package/dist/src/factories/validateRdsConfig.js +17 -0
  184. package/dist/src/factories/validateRoute53RecordConfig.js +41 -0
  185. package/dist/src/factories/validateS3Config.js +8 -0
  186. package/dist/src/factories/validateSecretsManagerConfig.js +8 -0
  187. package/dist/src/factories/validateSecurityGroupConfig.js +8 -0
  188. package/dist/src/factories/validateSecurityGroupRuleConfig.js +8 -0
  189. package/dist/src/factories/validateSesDomainDkimConfig.js +8 -0
  190. package/dist/src/factories/validateSesDomainIdentityConfig.js +8 -0
  191. package/dist/src/factories/validateSesIdentitiesConfig.js +40 -0
  192. package/dist/src/factories/validateSnsConfig.js +11 -0
  193. package/dist/src/factories/validateSqsConfig.js +11 -0
  194. package/dist/src/factories/validateSsmParameterFactoryConfig.js +9 -0
  195. package/dist/src/factories/validateStepFunctionsConfig.js +8 -0
  196. package/dist/src/factories/vpcEndpointFactory.js +98 -0
  197. package/dist/src/factories/wafFactory.js +499 -0
  198. package/package.json +71 -0
  199. package/scripts/copy-assets.js +136 -0
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.buildCloudFrontRoute53RecordHelper = buildCloudFrontRoute53RecordHelper;
37
+ const aws = __importStar(require("@pulumi/aws"));
38
+ function buildCloudFrontRoute53RecordHelper(name, domain, hostedZoneId, distributionDomainName, distributionHostedZoneId, provider) {
39
+ return new aws.route53.Record(`${name}-a-record`, {
40
+ name: domain,
41
+ type: "A",
42
+ zoneId: hostedZoneId,
43
+ aliases: [{
44
+ name: distributionDomainName,
45
+ zoneId: distributionHostedZoneId,
46
+ evaluateTargetHealth: false,
47
+ }],
48
+ }, provider ? { provider } : undefined);
49
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildEcsClusterArgs = buildEcsClusterArgs;
4
+ function buildEcsClusterArgs(cfg, meta) {
5
+ const args = {
6
+ name: `${meta.environment}-${cfg.name}`,
7
+ };
8
+ const settings = [];
9
+ if (cfg.settings) {
10
+ settings.push(...cfg.settings);
11
+ }
12
+ if (cfg.enableContainerInsights) {
13
+ settings.push({ name: "containerInsights", value: "enabled" });
14
+ }
15
+ if (settings.length > 0) {
16
+ args.settings = settings;
17
+ }
18
+ if (cfg.enableExecuteCommand) {
19
+ args.configuration = {
20
+ executeCommandConfiguration: {
21
+ logging: "DEFAULT"
22
+ }
23
+ };
24
+ }
25
+ if (cfg.tags) {
26
+ args.tags = cfg.tags;
27
+ }
28
+ if (cfg.serviceConnectDefaults) {
29
+ args.serviceConnectDefaults = cfg.serviceConnectDefaults;
30
+ }
31
+ return args;
32
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.buildEcsSecrets = buildEcsSecrets;
37
+ const pulumi = __importStar(require("@pulumi/pulumi"));
38
+ function buildEcsSecrets(params) {
39
+ const { environment, envSecret } = params;
40
+ if (!envSecret)
41
+ return { secrets: [], environmentVars: environment };
42
+ const secretNames = new Set(environment.map(e => e.name));
43
+ const secrets = environment.map(env => ({
44
+ name: env.name,
45
+ valueFrom: pulumi.interpolate `${envSecret.arn}:${env.name}::`,
46
+ }));
47
+ return { secrets, environmentVars: [] };
48
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildForceRedeployEnv = buildForceRedeployEnv;
4
+ function buildForceRedeployEnv(forceRedeploy) {
5
+ return forceRedeploy
6
+ ? [{ name: "FORCE_REDEPLOY", value: String(forceRedeploy) }]
7
+ : [];
8
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildResourceOptions = buildResourceOptions;
4
+ function buildResourceOptions({ parent, dependsOn }) {
5
+ const opts = {};
6
+ if (parent)
7
+ opts.parent = parent;
8
+ if (dependsOn && dependsOn.length > 0)
9
+ opts.dependsOn = dependsOn;
10
+ return opts;
11
+ }
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.buildS3StaticHostingCicdHelper = buildS3StaticHostingCicdHelper;
37
+ exports.buildS3StaticHostingCicdResources = buildS3StaticHostingCicdResources;
38
+ const aws = __importStar(require("@pulumi/aws"));
39
+ const pulumi = __importStar(require("@pulumi/pulumi"));
40
+ function buildS3StaticHostingCicdHelper(args) {
41
+ function validateStringParam(name, value) {
42
+ if (typeof value !== 'string' || !value.trim() || value.includes('${')) {
43
+ throw new Error(`${name} must be a resolved non-empty string, got: ${JSON.stringify(value)}`);
44
+ }
45
+ }
46
+ validateStringParam('repoOwner', args.repoOwner);
47
+ validateStringParam('repoName', args.repoName);
48
+ validateStringParam('branch', args.branch);
49
+ const codebuildProject = pulumi.all([args.artifactBucket, args.serviceRoleArn]).apply(([bucketName, serviceRoleArn]) => {
50
+ validateStringParam('artifactBucket', bucketName);
51
+ validateStringParam('serviceRoleArn', serviceRoleArn);
52
+ return new aws.codebuild.Project(`${args.name}-cb`, {
53
+ name: `${args.name}-cb`,
54
+ source: {
55
+ type: "CODEPIPELINE",
56
+ buildspec: args.buildspecPath,
57
+ },
58
+ artifacts: {
59
+ type: "CODEPIPELINE",
60
+ },
61
+ environment: {
62
+ computeType: "BUILD_GENERAL1_SMALL",
63
+ image: args.buildImage || "aws/codebuild/standard:7.0",
64
+ type: "LINUX_CONTAINER",
65
+ environmentVariables: [
66
+ { name: "S3_BUCKET_NAME", value: args.bucketName, type: "PLAINTEXT" },
67
+ ...((args.buildEnvironmentVariables && Array.isArray(args.buildEnvironmentVariables)) ? args.buildEnvironmentVariables : []),
68
+ ],
69
+ privilegedMode: false,
70
+ },
71
+ serviceRole: serviceRoleArn,
72
+ tags: args.tags,
73
+ }, args.provider ? { provider: args.provider } : undefined);
74
+ });
75
+ const pipeline = pulumi.all([codebuildProject, args.artifactBucket, args.pipelineRoleArn, args.codestarConnectionArn]).apply(([cb, bucketName, pipelineRoleArn, codestarConnectionArn]) => {
76
+ validateStringParam('artifactBucket', bucketName);
77
+ validateStringParam('pipelineRoleArn', pipelineRoleArn);
78
+ validateStringParam('codestarConnectionArn', codestarConnectionArn);
79
+ const stages = [
80
+ {
81
+ name: "Source",
82
+ actions: [
83
+ {
84
+ name: "Source",
85
+ category: "Source",
86
+ owner: "AWS",
87
+ provider: "CodeStarSourceConnection",
88
+ version: "1",
89
+ outputArtifacts: ["source_output"],
90
+ configuration: {
91
+ ConnectionArn: codestarConnectionArn,
92
+ FullRepositoryId: `${args.repoOwner}/${args.repoName}`,
93
+ BranchName: args.branch,
94
+ DetectChanges: "true",
95
+ OutputArtifactFormat: "CODEBUILD_CLONE_REF",
96
+ },
97
+ runOrder: 1,
98
+ },
99
+ ],
100
+ },
101
+ {
102
+ name: "Build",
103
+ actions: [
104
+ {
105
+ name: "Build",
106
+ category: "Build",
107
+ owner: "AWS",
108
+ provider: "CodeBuild",
109
+ inputArtifacts: ["source_output"],
110
+ outputArtifacts: ["build_output"],
111
+ version: "1",
112
+ configuration: (() => {
113
+ const projectName = cb.name;
114
+ if (!projectName || (typeof projectName === 'string' && String(projectName).trim() === '')) {
115
+ throw new Error('[buildS3StaticHostingCicdHelper] CodeBuild ProjectName is undefined or empty. This will cause CodePipeline to fail.');
116
+ }
117
+ return { ProjectName: String(projectName) };
118
+ })(),
119
+ runOrder: 1,
120
+ },
121
+ ],
122
+ },
123
+ ];
124
+ return new aws.codepipeline.Pipeline(`${args.name}-pipeline`, {
125
+ name: `${args.name}-pipeline`,
126
+ artifactStores: [
127
+ {
128
+ location: bucketName,
129
+ type: "S3",
130
+ },
131
+ ],
132
+ roleArn: pipelineRoleArn,
133
+ stages,
134
+ tags: args.tags,
135
+ }, args.provider ? { provider: args.provider } : undefined);
136
+ });
137
+ return { codebuild: codebuildProject, pipeline };
138
+ }
139
+ function buildS3StaticHostingCicdResources(args) {
140
+ const { codebuild, pipeline } = buildS3StaticHostingCicdHelper(args);
141
+ return [codebuild, pipeline];
142
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.buildS3StaticHostingCloudWatchDashboardHelper = buildS3StaticHostingCloudWatchDashboardHelper;
37
+ const aws = __importStar(require("@pulumi/aws"));
38
+ const pulumi = __importStar(require("@pulumi/pulumi"));
39
+ function buildS3StaticHostingCloudWatchDashboardHelper(name, config, provider) {
40
+ if (!provider) {
41
+ throw new Error("CloudWatch Dashboard must be created with a provider for the correct region (eu-central-1). Pass the provider explicitly.");
42
+ }
43
+ function stringifyMetrics(metrics) {
44
+ return metrics.map(row => row.map(cell => (cell !== undefined && cell !== null ? String(cell) : "")));
45
+ }
46
+ const dashboardBody = pulumi.all([config.bucketName, config.cloudfrontDistributionId]).apply(([bucketName, cloudfrontDistributionId]) => {
47
+ const widgets = [
48
+ {
49
+ type: "metric",
50
+ x: 0,
51
+ y: 0,
52
+ width: 12,
53
+ height: 6,
54
+ properties: {
55
+ metrics: stringifyMetrics([
56
+ ["AWS/S3", "NumberOfObjects", "BucketName", bucketName, "StorageType", "AllStorageTypes"],
57
+ [".", "BucketSizeBytes", ".", ".", ".", "."]
58
+ ]),
59
+ view: "timeSeries",
60
+ region: "eu-central-1",
61
+ title: "S3 Bucket Metrics",
62
+ period: 86400
63
+ }
64
+ },
65
+ ...(cloudfrontDistributionId ? [
66
+ {
67
+ type: "metric",
68
+ x: 12,
69
+ y: 0,
70
+ width: 12,
71
+ height: 6,
72
+ properties: {
73
+ metrics: stringifyMetrics([
74
+ ["AWS/CloudFront", "Requests", "DistributionId", cloudfrontDistributionId]
75
+ ]),
76
+ view: "timeSeries",
77
+ region: "us-east-1",
78
+ title: "CloudFront Requests"
79
+ }
80
+ },
81
+ {
82
+ type: "metric",
83
+ x: 0,
84
+ y: 6,
85
+ width: 12,
86
+ height: 6,
87
+ properties: {
88
+ metrics: stringifyMetrics([
89
+ ["AWS/CloudFront", "4xxErrorRate", "DistributionId", cloudfrontDistributionId],
90
+ [".", "5xxErrorRate", ".", "."]
91
+ ]),
92
+ view: "timeSeries",
93
+ region: "us-east-1",
94
+ title: "CloudFront Error Rates"
95
+ }
96
+ },
97
+ {
98
+ type: "metric",
99
+ x: 12,
100
+ y: 6,
101
+ width: 12,
102
+ height: 6,
103
+ properties: {
104
+ metrics: stringifyMetrics([
105
+ ["AWS/CloudFront", "BytesDownloaded", "DistributionId", cloudfrontDistributionId],
106
+ [".", "BytesUploaded", ".", "."]
107
+ ]),
108
+ view: "timeSeries",
109
+ region: "us-east-1",
110
+ title: "CloudFront Bandwidth"
111
+ }
112
+ }
113
+ ] : [])
114
+ ];
115
+ return JSON.stringify({ widgets });
116
+ });
117
+ const dashboard = new aws.cloudwatch.Dashboard(`${name}-static-hosting-dashboard`, {
118
+ dashboardName: `${name}-static-hosting-dashboard`,
119
+ dashboardBody,
120
+ }, provider ? { provider } : undefined);
121
+ return dashboard;
122
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudTrailFactory = void 0;
4
+ const resourceFactory_1 = require("./resourceFactory");
5
+ const createAwsCloudTrail_1 = require("./createAwsCloudTrail");
6
+ class CloudTrailFactory extends resourceFactory_1.ResourceFactory {
7
+ async createResource(config) {
8
+ return (0, createAwsCloudTrail_1.createAwsCloudTrail)(config.configuration);
9
+ }
10
+ getOutputs(resource) {
11
+ return {
12
+ arn: resource.arn,
13
+ name: resource.name,
14
+ };
15
+ }
16
+ validateConfig(config) {
17
+ if (!config.configuration || !config.configuration.name || !config.configuration.s3BucketName) {
18
+ throw new Error("CloudTrail config must include configuration with name and s3BucketName");
19
+ }
20
+ }
21
+ }
22
+ exports.CloudTrailFactory = CloudTrailFactory;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CloudWatchCompositeAlarmFactory = void 0;
37
+ const aws = __importStar(require("@pulumi/aws"));
38
+ const resourceFactory_1 = require("./resourceFactory");
39
+ class CloudWatchCompositeAlarmFactory extends resourceFactory_1.ResourceFactory {
40
+ async createResource(config) {
41
+ function getProp(key) {
42
+ if (!config)
43
+ return undefined;
44
+ if (key in config)
45
+ return config[key];
46
+ if (config.configuration && key in config.configuration)
47
+ return config.configuration[key];
48
+ return undefined;
49
+ }
50
+ const compositeAlarm = new aws.cloudwatch.CompositeAlarm(getProp("id"), {
51
+ alarmName: getProp("name"),
52
+ alarmDescription: getProp("description"),
53
+ alarmRule: getProp("rule"),
54
+ actionsEnabled: getProp("actionsEnabled") ?? true,
55
+ alarmActions: getProp("alarmActions"),
56
+ okActions: getProp("okActions"),
57
+ insufficientDataActions: getProp("insufficientDataActions"),
58
+ tags: getProp("tags"),
59
+ ...getProp("suppression") && {
60
+ suppressorAlarmName: getProp("suppression").suppressorAlarmName,
61
+ waitPeriod: getProp("suppression").waitPeriod,
62
+ extensionPeriod: getProp("suppression").extensionPeriod,
63
+ suppressorState: getProp("suppression").suppressorState
64
+ }
65
+ }, {
66
+ provider: getProp("provider")
67
+ });
68
+ return compositeAlarm;
69
+ }
70
+ getOutputs(compositeAlarm) {
71
+ return {
72
+ alarmArn: compositeAlarm.arn,
73
+ alarmName: compositeAlarm.alarmName
74
+ };
75
+ }
76
+ validateConfig(config) {
77
+ function getProp(key) {
78
+ if (!config)
79
+ return undefined;
80
+ if (key in config)
81
+ return config[key];
82
+ if (config.configuration && key in config.configuration)
83
+ return config.configuration[key];
84
+ return undefined;
85
+ }
86
+ if (!getProp("id") || !getProp("name") || !getProp("rule")) {
87
+ throw new Error("CloudWatch Composite Alarm must have id, name, and rule");
88
+ }
89
+ }
90
+ }
91
+ exports.CloudWatchCompositeAlarmFactory = CloudWatchCompositeAlarmFactory;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CloudWatchInsightsQueryFactory = void 0;
37
+ const aws = __importStar(require("@pulumi/aws"));
38
+ const resourceFactory_1 = require("./resourceFactory");
39
+ class CloudWatchInsightsQueryFactory extends resourceFactory_1.ResourceFactory {
40
+ async createResource(config) {
41
+ function getProp(key) {
42
+ if (!config)
43
+ return undefined;
44
+ if (key in config)
45
+ return config[key];
46
+ if (config.configuration && key in config.configuration)
47
+ return config.configuration[key];
48
+ return undefined;
49
+ }
50
+ const queryDefinition = new aws.cloudwatch.QueryDefinition(getProp("id"), {
51
+ name: getProp("name"),
52
+ logGroupNames: getProp("logGroupNames") || [getProp("logGroupName")],
53
+ queryString: getProp("queryString")
54
+ }, {
55
+ provider: getProp("provider")
56
+ });
57
+ return queryDefinition;
58
+ }
59
+ getOutputs(queryDefinition) {
60
+ return {
61
+ queryId: queryDefinition.queryDefinitionId,
62
+ queryName: queryDefinition.name
63
+ };
64
+ }
65
+ validateConfig(config) {
66
+ function getProp(key) {
67
+ if (!config)
68
+ return undefined;
69
+ if (key in config)
70
+ return config[key];
71
+ if (config.configuration && key in config.configuration)
72
+ return config.configuration[key];
73
+ return undefined;
74
+ }
75
+ if (!getProp("id") || !getProp("name") || !getProp("queryString")) {
76
+ throw new Error("CloudWatch Insights Query must have id, name, and queryString");
77
+ }
78
+ if (!getProp("logGroupNames") || getProp("logGroupNames").length === 0) {
79
+ throw new Error("CloudWatch Insights Query must have at least one log group");
80
+ }
81
+ }
82
+ }
83
+ exports.CloudWatchInsightsQueryFactory = CloudWatchInsightsQueryFactory;