@webiny/pulumi-aws 5.43.0-beta.0 → 5.43.0-beta.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 (124) hide show
  1. package/apps/api/ApiGraphql.js +2 -2
  2. package/apps/api/ApiGraphql.js.map +1 -1
  3. package/apps/api/ApiMigration.js +2 -1
  4. package/apps/api/ApiMigration.js.map +1 -1
  5. package/apps/api/ApiOutput.js +2 -1
  6. package/apps/api/ApiOutput.js.map +1 -1
  7. package/apps/api/createApiPulumiApp.d.ts +9 -2
  8. package/apps/api/createApiPulumiApp.js +12 -14
  9. package/apps/api/createApiPulumiApp.js.map +1 -1
  10. package/apps/awsUtils.d.ts +1 -1
  11. package/apps/blueGreen/BlueGreenRouterApiGateway.d.ts +11 -0
  12. package/apps/blueGreen/BlueGreenRouterApiGateway.js +51 -0
  13. package/apps/blueGreen/BlueGreenRouterApiGateway.js.map +1 -0
  14. package/apps/blueGreen/BlueGreenRouterCloudFront.d.ts +17 -0
  15. package/apps/blueGreen/BlueGreenRouterCloudFront.js +106 -0
  16. package/apps/blueGreen/BlueGreenRouterCloudFront.js.map +1 -0
  17. package/apps/blueGreen/BlueGreenRouterCloudFrontStore.d.ts +10 -0
  18. package/apps/blueGreen/BlueGreenRouterCloudFrontStore.js +27 -0
  19. package/apps/blueGreen/BlueGreenRouterCloudFrontStore.js.map +1 -0
  20. package/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.d.ts +7 -0
  21. package/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js +23 -0
  22. package/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js.map +1 -0
  23. package/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.d.ts +14 -0
  24. package/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js +30 -0
  25. package/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js.map +1 -0
  26. package/apps/blueGreen/cloudfront/createOriginId.d.ts +11 -0
  27. package/apps/blueGreen/cloudfront/createOriginId.js +18 -0
  28. package/apps/blueGreen/cloudfront/createOriginId.js.map +1 -0
  29. package/apps/blueGreen/constants.d.ts +3 -0
  30. package/apps/blueGreen/constants.js +11 -0
  31. package/apps/blueGreen/constants.js.map +1 -0
  32. package/apps/blueGreen/createBlueGreenPulumiApp.d.ts +73 -0
  33. package/apps/blueGreen/createBlueGreenPulumiApp.js +121 -0
  34. package/apps/blueGreen/createBlueGreenPulumiApp.js.map +1 -0
  35. package/apps/blueGreen/domains/attachDomainsToOutput.d.ts +9 -0
  36. package/apps/blueGreen/domains/attachDomainsToOutput.js +37 -0
  37. package/apps/blueGreen/domains/attachDomainsToOutput.js.map +1 -0
  38. package/apps/blueGreen/domains/convertApplicationDomains.d.ts +6 -0
  39. package/apps/blueGreen/domains/convertApplicationDomains.js +32 -0
  40. package/apps/blueGreen/domains/convertApplicationDomains.js.map +1 -0
  41. package/apps/blueGreen/domains/getApplicationDomains.d.ts +20 -0
  42. package/apps/blueGreen/domains/getApplicationDomains.js +107 -0
  43. package/apps/blueGreen/domains/getApplicationDomains.js.map +1 -0
  44. package/apps/blueGreen/domains/resolveDomains.d.ts +6 -0
  45. package/apps/blueGreen/domains/resolveDomains.js +48 -0
  46. package/apps/blueGreen/domains/resolveDomains.js.map +1 -0
  47. package/apps/blueGreen/functions/buildHandlerFunction.d.ts +15 -0
  48. package/apps/blueGreen/functions/buildHandlerFunction.js +25 -0
  49. package/apps/blueGreen/functions/buildHandlerFunction.js.map +1 -0
  50. package/apps/blueGreen/functions/handler.d.ts +1 -0
  51. package/apps/blueGreen/functions/handler.js +63 -0
  52. package/apps/blueGreen/functions/handler.js.map +1 -0
  53. package/apps/blueGreen/types.d.ts +78 -0
  54. package/apps/blueGreen/types.js +7 -0
  55. package/apps/blueGreen/types.js.map +1 -0
  56. package/apps/blueGreen/validation/validateDeployments.d.ts +2 -0
  57. package/apps/blueGreen/validation/validateDeployments.js +41 -0
  58. package/apps/blueGreen/validation/validateDeployments.js.map +1 -0
  59. package/apps/common/CoreOutput.js +3 -1
  60. package/apps/common/CoreOutput.js.map +1 -1
  61. package/apps/core/cognitoIdentityProviders/configure.js +2 -1
  62. package/apps/core/cognitoIdentityProviders/configure.js.map +1 -1
  63. package/apps/core/createCorePulumiApp.js +28 -6
  64. package/apps/core/createCorePulumiApp.js.map +1 -1
  65. package/apps/createAppBucket.js +2 -1
  66. package/apps/createAppBucket.js.map +1 -1
  67. package/apps/react/createReactPulumiApp.js +7 -3
  68. package/apps/react/createReactPulumiApp.js.map +1 -1
  69. package/apps/syncSystem/SyncSystemDynamo.d.ts +5 -0
  70. package/apps/syncSystem/SyncSystemDynamo.js +59 -0
  71. package/apps/syncSystem/SyncSystemDynamo.js.map +1 -0
  72. package/apps/syncSystem/SyncSystemLambda.d.ts +13 -0
  73. package/apps/syncSystem/SyncSystemLambda.js +104 -0
  74. package/apps/syncSystem/SyncSystemLambda.js.map +1 -0
  75. package/apps/syncSystem/SyncSystemSQS.d.ts +4 -0
  76. package/apps/syncSystem/SyncSystemSQS.js +40 -0
  77. package/apps/syncSystem/SyncSystemSQS.js.map +1 -0
  78. package/apps/syncSystem/addTableItems.d.ts +8 -0
  79. package/apps/syncSystem/addTableItems.js +59 -0
  80. package/apps/syncSystem/addTableItems.js.map +1 -0
  81. package/apps/syncSystem/createSyncSystemPulumiApp.d.ts +66 -0
  82. package/apps/syncSystem/createSyncSystemPulumiApp.js +63 -0
  83. package/apps/syncSystem/createSyncSystemPulumiApp.js.map +1 -0
  84. package/apps/tenantRouter.js +2 -1
  85. package/apps/tenantRouter.js.map +1 -1
  86. package/apps/website/WebsitePrerendering.js +1 -1
  87. package/apps/website/WebsitePrerendering.js.map +1 -1
  88. package/apps/website/createWebsitePulumiApp.d.ts +1 -1
  89. package/apps/website/createWebsitePulumiApp.js +6 -2
  90. package/apps/website/createWebsitePulumiApp.js.map +1 -1
  91. package/components/tenantRouter/WebsiteTenantRouter.d.ts +1 -0
  92. package/components/tenantRouter/WebsiteTenantRouter.js +6 -3
  93. package/components/tenantRouter/WebsiteTenantRouter.js.map +1 -1
  94. package/enterprise/createCorePulumiApp.d.ts +1 -0
  95. package/enterprise/createCorePulumiApp.js +10 -0
  96. package/enterprise/createCorePulumiApp.js.map +1 -1
  97. package/enterprise/createSyncSystemPulumiApp.d.ts +26 -0
  98. package/enterprise/createSyncSystemPulumiApp.js +71 -0
  99. package/enterprise/createSyncSystemPulumiApp.js.map +1 -0
  100. package/env/awsRegion.d.ts +1 -0
  101. package/env/awsRegion.js +12 -0
  102. package/env/awsRegion.js.map +1 -0
  103. package/env/base.d.ts +15 -0
  104. package/env/base.js +37 -0
  105. package/env/base.js.map +1 -0
  106. package/env/env.d.ts +1 -0
  107. package/env/env.js +12 -0
  108. package/env/env.js.map +1 -0
  109. package/env/projectName.d.ts +1 -0
  110. package/env/projectName.js +12 -0
  111. package/env/projectName.js.map +1 -0
  112. package/env/variant.d.ts +1 -0
  113. package/env/variant.js +13 -0
  114. package/env/variant.js.map +1 -0
  115. package/package.json +21 -18
  116. package/utils/addServiceManifestTableItem.js +1 -1
  117. package/utils/addServiceManifestTableItem.js.map +1 -1
  118. package/utils/dynamodb.d.ts +14 -0
  119. package/utils/dynamodb.js +36 -0
  120. package/utils/dynamodb.js.map +1 -0
  121. package/utils/lambdaEnvVariables.js +1 -2
  122. package/utils/lambdaEnvVariables.js.map +1 -1
  123. package/utils/uploadFolderToS3.js +2 -1
  124. package/utils/uploadFolderToS3.js.map +1 -1
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.BlueGreenRouterCloudFront = void 0;
8
+ var aws = _interopRequireWildcard(require("@pulumi/aws"));
9
+ var _pulumi = require("@webiny/pulumi");
10
+ var _BlueGreenRouterApiGateway = require("./BlueGreenRouterApiGateway.js");
11
+ var _BlueGreenRouterCloudFrontStore = require("./BlueGreenRouterCloudFrontStore.js");
12
+ var _buildHandlerFunction = require("./functions/buildHandlerFunction.js");
13
+ var _constants = require("./constants.js");
14
+ var _createCloudFrontFunctionDomainMap = require("./cloudfront/createCloudFrontFunctionDomainMap.js");
15
+ const BlueGreenRouterCloudFront = exports.BlueGreenRouterCloudFront = (0, _pulumi.createAppModule)({
16
+ name: "BlueGreenRouterCloudFront",
17
+ config(app, config) {
18
+ const api = app.getModule(_BlueGreenRouterApiGateway.BlueGreenRouterApiGateway);
19
+ const store = app.getModule(_BlueGreenRouterCloudFrontStore.BlueGreenRouterCloudFrontStore);
20
+ const domains = (0, _createCloudFrontFunctionDomainMap.createCloudFrontFunctionDomainMap)(config);
21
+
22
+ /**
23
+ * Create a new CloudFront function that will be used to route the incoming requests to the correct CloudFront distribution.
24
+ */
25
+ const cloudFrontFunction = app.addResource(aws.cloudfront.Function, {
26
+ name: `blue-green-router-viewer-request`,
27
+ opts: {
28
+ provider: config.region,
29
+ protect: config.protect
30
+ },
31
+ config: {
32
+ runtime: "cloudfront-js-2.0",
33
+ publish: true,
34
+ code: store.cloudFrontStore.output.arn.apply(arn => {
35
+ /**
36
+ * Unfortunately this is the only way to get the ID of the store.
37
+ * It is a UUID value.
38
+ */
39
+ const id = arn.split("/").pop();
40
+ return (0, _buildHandlerFunction.buildHandlerFunction)({
41
+ storeId: id,
42
+ storeKey: _constants.BLUE_GREEN_ROUTER_STORE_KEY,
43
+ domains
44
+ });
45
+ }),
46
+ keyValueStoreAssociations: store.cloudFrontStore.output.arn.apply(arn => {
47
+ return [arn];
48
+ })
49
+ }
50
+ });
51
+ /**
52
+ * Create a CloudFront with attached function.
53
+ */
54
+ const cloudFront = app.addResource(aws.cloudfront.Distribution, {
55
+ name: `blue-green-router-cloudfront`,
56
+ opts: {
57
+ provider: config.region,
58
+ protect: config.protect
59
+ },
60
+ config: {
61
+ enabled: true,
62
+ priceClass: "PriceClass_100",
63
+ origins: [
64
+ /**
65
+ * A default origin that will be used in case of no match.
66
+ */
67
+ {
68
+ domainName: api.apiGateway.output.apiEndpoint.apply(url => url.replace("https://", "")),
69
+ originId: "defaultOrigin",
70
+ customOriginConfig: {
71
+ originProtocolPolicy: "https-only",
72
+ httpPort: 80,
73
+ httpsPort: 443,
74
+ originSslProtocols: ["TLSv1.2"]
75
+ }
76
+ }],
77
+ defaultCacheBehavior: {
78
+ targetOriginId: `defaultOrigin`,
79
+ viewerProtocolPolicy: "redirect-to-https",
80
+ allowedMethods: _constants.BLUE_GREEN_ALLOWED_METHODS,
81
+ cachedMethods: _constants.BLUE_GREEN_CACHED_METHODS,
82
+ cachePolicyId: config.cachePolicyId.id,
83
+ originRequestPolicyId: config.originRequestPolicyId.id,
84
+ functionAssociations: [{
85
+ eventType: "viewer-request",
86
+ functionArn: cloudFrontFunction.output.arn
87
+ }]
88
+ },
89
+ restrictions: {
90
+ geoRestriction: {
91
+ restrictionType: "none"
92
+ }
93
+ },
94
+ viewerCertificate: {
95
+ cloudfrontDefaultCertificate: true
96
+ }
97
+ }
98
+ });
99
+ return {
100
+ cloudFront,
101
+ cloudFrontFunction
102
+ };
103
+ }
104
+ });
105
+
106
+ //# sourceMappingURL=BlueGreenRouterCloudFront.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["aws","_interopRequireWildcard","require","_pulumi","_BlueGreenRouterApiGateway","_BlueGreenRouterCloudFrontStore","_buildHandlerFunction","_constants","_createCloudFrontFunctionDomainMap","BlueGreenRouterCloudFront","exports","createAppModule","name","config","app","api","getModule","BlueGreenRouterApiGateway","store","BlueGreenRouterCloudFrontStore","domains","createCloudFrontFunctionDomainMap","cloudFrontFunction","addResource","cloudfront","Function","opts","provider","region","protect","runtime","publish","code","cloudFrontStore","output","arn","apply","id","split","pop","buildHandlerFunction","storeId","storeKey","BLUE_GREEN_ROUTER_STORE_KEY","keyValueStoreAssociations","cloudFront","Distribution","enabled","priceClass","origins","domainName","apiGateway","apiEndpoint","url","replace","originId","customOriginConfig","originProtocolPolicy","httpPort","httpsPort","originSslProtocols","defaultCacheBehavior","targetOriginId","viewerProtocolPolicy","allowedMethods","BLUE_GREEN_ALLOWED_METHODS","cachedMethods","BLUE_GREEN_CACHED_METHODS","cachePolicyId","originRequestPolicyId","functionAssociations","eventType","functionArn","restrictions","geoRestriction","restrictionType","viewerCertificate","cloudfrontDefaultCertificate"],"sources":["BlueGreenRouterCloudFront.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport type { PulumiAppModule } from \"@webiny/pulumi\";\nimport { createAppModule } from \"@webiny/pulumi\";\nimport type { GetCachePolicyResult } from \"@pulumi/aws/cloudfront/getCachePolicy\";\nimport type { GetOriginRequestPolicyResult } from \"@pulumi/aws/cloudfront/getOriginRequestPolicy\";\nimport { BlueGreenRouterApiGateway } from \"./BlueGreenRouterApiGateway.js\";\nimport { BlueGreenRouterCloudFrontStore } from \"./BlueGreenRouterCloudFrontStore.js\";\nimport { buildHandlerFunction } from \"./functions/buildHandlerFunction.js\";\nimport {\n BLUE_GREEN_ALLOWED_METHODS,\n BLUE_GREEN_CACHED_METHODS,\n BLUE_GREEN_ROUTER_STORE_KEY\n} from \"./constants.js\";\nimport { createCloudFrontFunctionDomainMap } from \"./cloudfront/createCloudFrontFunctionDomainMap.js\";\nimport type { IResolvedDomains } from \"./types.js\";\n\nexport type BlueGreenRouterCloudFront = PulumiAppModule<typeof BlueGreenRouterCloudFront>;\n\nexport interface IBlueGreenRouterCloudFrontConfig {\n region: aws.Provider;\n protect: boolean;\n domains: IResolvedDomains;\n cachePolicyId: GetCachePolicyResult;\n originRequestPolicyId: GetOriginRequestPolicyResult;\n}\n\nexport const BlueGreenRouterCloudFront = createAppModule({\n name: \"BlueGreenRouterCloudFront\",\n config(app, config: IBlueGreenRouterCloudFrontConfig) {\n const api = app.getModule(BlueGreenRouterApiGateway);\n\n const store = app.getModule(BlueGreenRouterCloudFrontStore);\n\n const domains = createCloudFrontFunctionDomainMap(config);\n\n /**\n * Create a new CloudFront function that will be used to route the incoming requests to the correct CloudFront distribution.\n */\n const cloudFrontFunction = app.addResource(aws.cloudfront.Function, {\n name: `blue-green-router-viewer-request`,\n opts: {\n provider: config.region,\n protect: config.protect\n },\n config: {\n runtime: \"cloudfront-js-2.0\",\n publish: true,\n code: store.cloudFrontStore.output.arn.apply(arn => {\n /**\n * Unfortunately this is the only way to get the ID of the store.\n * It is a UUID value.\n */\n const id = arn.split(\"/\").pop() as string;\n return buildHandlerFunction({\n storeId: id,\n storeKey: BLUE_GREEN_ROUTER_STORE_KEY,\n domains\n });\n }),\n keyValueStoreAssociations: store.cloudFrontStore.output.arn.apply(arn => {\n return [arn];\n })\n }\n });\n /**\n * Create a CloudFront with attached function.\n */\n const cloudFront = app.addResource(aws.cloudfront.Distribution, {\n name: `blue-green-router-cloudfront`,\n opts: {\n provider: config.region,\n protect: config.protect\n },\n config: {\n enabled: true,\n priceClass: \"PriceClass_100\",\n origins: [\n /**\n * A default origin that will be used in case of no match.\n */\n {\n domainName: api.apiGateway.output.apiEndpoint.apply(url =>\n url.replace(\"https://\", \"\")\n ),\n originId: \"defaultOrigin\",\n customOriginConfig: {\n originProtocolPolicy: \"https-only\",\n httpPort: 80,\n httpsPort: 443,\n originSslProtocols: [\"TLSv1.2\"]\n }\n }\n ],\n defaultCacheBehavior: {\n targetOriginId: `defaultOrigin`,\n viewerProtocolPolicy: \"redirect-to-https\",\n allowedMethods: BLUE_GREEN_ALLOWED_METHODS,\n cachedMethods: BLUE_GREEN_CACHED_METHODS,\n cachePolicyId: config.cachePolicyId.id,\n originRequestPolicyId: config.originRequestPolicyId.id,\n functionAssociations: [\n {\n eventType: \"viewer-request\",\n functionArn: cloudFrontFunction.output.arn\n }\n ]\n },\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n }\n });\n\n return {\n cloudFront,\n cloudFrontFunction\n };\n }\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import * as aws from "@pulumi/aws";
2
+ import type { PulumiAppModule } from "@webiny/pulumi";
3
+ export type BlueGreenRouterCloudFrontStore = PulumiAppModule<typeof BlueGreenRouterCloudFrontStore>;
4
+ export interface IBlueGreenRouterCloudFrontStoreParams {
5
+ region: aws.Provider;
6
+ protect: boolean;
7
+ }
8
+ export declare const BlueGreenRouterCloudFrontStore: import("@webiny/pulumi").PulumiAppModuleDefinition<{
9
+ cloudFrontStore: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront/keyValueStore").KeyValueStore>;
10
+ }, IBlueGreenRouterCloudFrontStoreParams>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.BlueGreenRouterCloudFrontStore = void 0;
8
+ var aws = _interopRequireWildcard(require("@pulumi/aws"));
9
+ var _pulumi = require("@webiny/pulumi");
10
+ const BlueGreenRouterCloudFrontStore = exports.BlueGreenRouterCloudFrontStore = (0, _pulumi.createAppModule)({
11
+ name: "BlueGreenRouterCloudFrontStore",
12
+ config(app, params) {
13
+ const cloudFrontStore = app.addResource(aws.cloudfront.KeyValueStore, {
14
+ name: "blueGreenRouterCloudFrontStore",
15
+ opts: {
16
+ provider: params.region,
17
+ protect: params.protect
18
+ },
19
+ config: {}
20
+ });
21
+ return {
22
+ cloudFrontStore
23
+ };
24
+ }
25
+ });
26
+
27
+ //# sourceMappingURL=BlueGreenRouterCloudFrontStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["aws","_interopRequireWildcard","require","_pulumi","BlueGreenRouterCloudFrontStore","exports","createAppModule","name","config","app","params","cloudFrontStore","addResource","cloudfront","KeyValueStore","opts","provider","region","protect"],"sources":["BlueGreenRouterCloudFrontStore.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport type { PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\nimport { createAppModule } from \"@webiny/pulumi\";\n\nexport type BlueGreenRouterCloudFrontStore = PulumiAppModule<typeof BlueGreenRouterCloudFrontStore>;\n\nexport interface IBlueGreenRouterCloudFrontStoreParams {\n region: aws.Provider;\n protect: boolean;\n}\n\nexport const BlueGreenRouterCloudFrontStore = createAppModule({\n name: \"BlueGreenRouterCloudFrontStore\",\n config(app: PulumiApp, params: IBlueGreenRouterCloudFrontStoreParams) {\n const cloudFrontStore = app.addResource(aws.cloudfront.KeyValueStore, {\n name: \"blueGreenRouterCloudFrontStore\",\n opts: {\n provider: params.region,\n protect: params.protect\n },\n config: {}\n });\n\n return {\n cloudFrontStore\n };\n }\n});\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AASO,MAAME,8BAA8B,GAAAC,OAAA,CAAAD,8BAAA,GAAG,IAAAE,uBAAe,EAAC;EAC1DC,IAAI,EAAE,gCAAgC;EACtCC,MAAMA,CAACC,GAAc,EAAEC,MAA6C,EAAE;IAClE,MAAMC,eAAe,GAAGF,GAAG,CAACG,WAAW,CAACZ,GAAG,CAACa,UAAU,CAACC,aAAa,EAAE;MAClEP,IAAI,EAAE,gCAAgC;MACtCQ,IAAI,EAAE;QACFC,QAAQ,EAAEN,MAAM,CAACO,MAAM;QACvBC,OAAO,EAAER,MAAM,CAACQ;MACpB,CAAC;MACDV,MAAM,EAAE,CAAC;IACb,CAAC,CAAC;IAEF,OAAO;MACHG;IACJ,CAAC;EACL;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import type { GetCachePolicyResult } from "@pulumi/aws/cloudfront/getCachePolicy";
2
+ import type { GetOriginRequestPolicyResult } from "@pulumi/aws/cloudfront/getOriginRequestPolicy";
3
+ export interface ICreateCloudFrontDefaultCacheBehaviorPoliciesOutput {
4
+ disableCachingCachePolicyId: GetCachePolicyResult;
5
+ forwardEverythingOriginRequestPolicyId: GetOriginRequestPolicyResult;
6
+ }
7
+ export declare const createCloudFrontDefaultCacheBehaviorPolicies: () => Promise<ICreateCloudFrontDefaultCacheBehaviorPoliciesOutput>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createCloudFrontDefaultCacheBehaviorPolicies = void 0;
8
+ var aws = _interopRequireWildcard(require("@pulumi/aws"));
9
+ const createCloudFrontDefaultCacheBehaviorPolicies = async () => {
10
+ const disableCachingCachePolicyId = await aws.cloudfront.getCachePolicy({
11
+ name: "Managed-CachingDisabled"
12
+ });
13
+ const forwardEverythingOriginRequestPolicyId = await aws.cloudfront.getOriginRequestPolicy({
14
+ name: "Managed-AllViewerExceptHostHeader"
15
+ });
16
+ return {
17
+ disableCachingCachePolicyId,
18
+ forwardEverythingOriginRequestPolicyId
19
+ };
20
+ };
21
+ exports.createCloudFrontDefaultCacheBehaviorPolicies = createCloudFrontDefaultCacheBehaviorPolicies;
22
+
23
+ //# sourceMappingURL=createCloudFrontDefaultCacheBehaviorPolicies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["aws","_interopRequireWildcard","require","createCloudFrontDefaultCacheBehaviorPolicies","disableCachingCachePolicyId","cloudfront","getCachePolicy","name","forwardEverythingOriginRequestPolicyId","getOriginRequestPolicy","exports"],"sources":["createCloudFrontDefaultCacheBehaviorPolicies.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport type { GetCachePolicyResult } from \"@pulumi/aws/cloudfront/getCachePolicy\";\nimport type { GetOriginRequestPolicyResult } from \"@pulumi/aws/cloudfront/getOriginRequestPolicy\";\n\nexport interface ICreateCloudFrontDefaultCacheBehaviorPoliciesOutput {\n disableCachingCachePolicyId: GetCachePolicyResult;\n forwardEverythingOriginRequestPolicyId: GetOriginRequestPolicyResult;\n}\n\nexport const createCloudFrontDefaultCacheBehaviorPolicies =\n async (): Promise<ICreateCloudFrontDefaultCacheBehaviorPoliciesOutput> => {\n const disableCachingCachePolicyId = await aws.cloudfront.getCachePolicy({\n name: \"Managed-CachingDisabled\"\n });\n\n const forwardEverythingOriginRequestPolicyId = await aws.cloudfront.getOriginRequestPolicy({\n name: \"Managed-AllViewerExceptHostHeader\"\n });\n return {\n disableCachingCachePolicyId,\n forwardEverythingOriginRequestPolicyId\n };\n };\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AASO,MAAMC,4CAA4C,GACrD,MAAAA,CAAA,KAA0E;EACtE,MAAMC,2BAA2B,GAAG,MAAMJ,GAAG,CAACK,UAAU,CAACC,cAAc,CAAC;IACpEC,IAAI,EAAE;EACV,CAAC,CAAC;EAEF,MAAMC,sCAAsC,GAAG,MAAMR,GAAG,CAACK,UAAU,CAACI,sBAAsB,CAAC;IACvFF,IAAI,EAAE;EACV,CAAC,CAAC;EACF,OAAO;IACHH,2BAA2B;IAC3BI;EACJ,CAAC;AACL,CAAC;AAACE,OAAA,CAAAP,4CAAA,GAAAA,4CAAA","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ import type { IResolvedDomains } from "../types.js";
2
+ export interface ICreateCloudFrontFunctionDomainMapParamsResult {
3
+ /**
4
+ * Name of the deployment (eg. green, blue, orange, etc.).
5
+ */
6
+ name: string;
7
+ sourceDomain: string;
8
+ targetOriginId: string;
9
+ targetDomain: string;
10
+ }
11
+ export interface ICreateCloudFrontFunctionDomainMapParams {
12
+ domains: IResolvedDomains;
13
+ }
14
+ export declare const createCloudFrontFunctionDomainMap: (params: ICreateCloudFrontFunctionDomainMapParams) => ICreateCloudFrontFunctionDomainMapParamsResult[];
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createCloudFrontFunctionDomainMap = void 0;
7
+ var _createOriginId = require("./createOriginId.js");
8
+ const createCloudFrontFunctionDomainMap = params => {
9
+ const {
10
+ domains
11
+ } = params;
12
+ const results = [];
13
+ for (const domain of domains) {
14
+ for (const source of domain.sources) {
15
+ results.push({
16
+ name: domain.name,
17
+ sourceDomain: source,
18
+ targetDomain: domain.target,
19
+ targetOriginId: (0, _createOriginId.createOriginId)({
20
+ type: domain.type,
21
+ name: domain.name
22
+ })
23
+ });
24
+ }
25
+ }
26
+ return results;
27
+ };
28
+ exports.createCloudFrontFunctionDomainMap = createCloudFrontFunctionDomainMap;
29
+
30
+ //# sourceMappingURL=createCloudFrontFunctionDomainMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_createOriginId","require","createCloudFrontFunctionDomainMap","params","domains","results","domain","source","sources","push","name","sourceDomain","targetDomain","target","targetOriginId","createOriginId","type","exports"],"sources":["createCloudFrontFunctionDomainMap.ts"],"sourcesContent":["import type { IResolvedDomains } from \"../types.js\";\nimport { createOriginId } from \"./createOriginId.js\";\n\nexport interface ICreateCloudFrontFunctionDomainMapParamsResult {\n /**\n * Name of the deployment (eg. green, blue, orange, etc.).\n */\n name: string;\n sourceDomain: string;\n targetOriginId: string;\n targetDomain: string;\n}\n\nexport interface ICreateCloudFrontFunctionDomainMapParams {\n domains: IResolvedDomains;\n}\n\nexport const createCloudFrontFunctionDomainMap = (\n params: ICreateCloudFrontFunctionDomainMapParams\n): ICreateCloudFrontFunctionDomainMapParamsResult[] => {\n const { domains } = params;\n\n const results: ICreateCloudFrontFunctionDomainMapParamsResult[] = [];\n for (const domain of domains) {\n for (const source of domain.sources) {\n results.push({\n name: domain.name,\n sourceDomain: source,\n targetDomain: domain.target,\n targetOriginId: createOriginId({\n type: domain.type,\n name: domain.name\n })\n });\n }\n }\n return results;\n};\n"],"mappings":";;;;;;AACA,IAAAA,eAAA,GAAAC,OAAA;AAgBO,MAAMC,iCAAiC,GAC1CC,MAAgD,IACG;EACnD,MAAM;IAAEC;EAAQ,CAAC,GAAGD,MAAM;EAE1B,MAAME,OAAyD,GAAG,EAAE;EACpE,KAAK,MAAMC,MAAM,IAAIF,OAAO,EAAE;IAC1B,KAAK,MAAMG,MAAM,IAAID,MAAM,CAACE,OAAO,EAAE;MACjCH,OAAO,CAACI,IAAI,CAAC;QACTC,IAAI,EAAEJ,MAAM,CAACI,IAAI;QACjBC,YAAY,EAAEJ,MAAM;QACpBK,YAAY,EAAEN,MAAM,CAACO,MAAM;QAC3BC,cAAc,EAAE,IAAAC,8BAAc,EAAC;UAC3BC,IAAI,EAAEV,MAAM,CAACU,IAAI;UACjBN,IAAI,EAAEJ,MAAM,CAACI;QACjB,CAAC;MACL,CAAC,CAAC;IACN;EACJ;EACA,OAAOL,OAAO;AAClB,CAAC;AAACY,OAAA,CAAAf,iCAAA,GAAAA,iCAAA","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ export interface ICreateOriginIdParams {
2
+ /**
3
+ * Name of the deployment (eg. green, blue, orange, etc.).
4
+ */
5
+ name: string;
6
+ /**
7
+ * Type of the deployment (eg. api, admin, website, preview, etc.).
8
+ */
9
+ type: string;
10
+ }
11
+ export declare const createOriginId: (params: ICreateOriginIdParams) => string;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createOriginId = void 0;
8
+ var _startCase = _interopRequireDefault(require("lodash/startCase.js"));
9
+ const createOriginId = params => {
10
+ const {
11
+ type,
12
+ name
13
+ } = params;
14
+ return `${type}${(0, _startCase.default)(name)}BlueGreenCloudFront`;
15
+ };
16
+ exports.createOriginId = createOriginId;
17
+
18
+ //# sourceMappingURL=createOriginId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_startCase","_interopRequireDefault","require","createOriginId","params","type","name","lodashUcFirst","exports"],"sources":["createOriginId.ts"],"sourcesContent":["import lodashUcFirst from \"lodash/startCase.js\";\n\nexport interface ICreateOriginIdParams {\n /**\n * Name of the deployment (eg. green, blue, orange, etc.).\n */\n name: string;\n /**\n * Type of the deployment (eg. api, admin, website, preview, etc.).\n */\n type: string;\n}\n\nexport const createOriginId = (params: ICreateOriginIdParams): string => {\n const { type, name } = params;\n return `${type}${lodashUcFirst(name)}BlueGreenCloudFront`;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAaO,MAAMC,cAAc,GAAIC,MAA6B,IAAa;EACrE,MAAM;IAAEC,IAAI;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAC7B,OAAO,GAAGC,IAAI,GAAG,IAAAE,kBAAa,EAACD,IAAI,CAAC,qBAAqB;AAC7D,CAAC;AAACE,OAAA,CAAAL,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export declare const BLUE_GREEN_ROUTER_STORE_KEY = "blueGreenRouterStore";
2
+ export declare const BLUE_GREEN_ALLOWED_METHODS: string[];
3
+ export declare const BLUE_GREEN_CACHED_METHODS: string[];
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BLUE_GREEN_ROUTER_STORE_KEY = exports.BLUE_GREEN_CACHED_METHODS = exports.BLUE_GREEN_ALLOWED_METHODS = void 0;
7
+ const BLUE_GREEN_ROUTER_STORE_KEY = exports.BLUE_GREEN_ROUTER_STORE_KEY = "blueGreenRouterStore";
8
+ const BLUE_GREEN_ALLOWED_METHODS = exports.BLUE_GREEN_ALLOWED_METHODS = ["GET", "HEAD", "POST", "PUT", "PATCH", "OPTIONS", "DELETE"];
9
+ const BLUE_GREEN_CACHED_METHODS = exports.BLUE_GREEN_CACHED_METHODS = ["GET", "HEAD"];
10
+
11
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BLUE_GREEN_ROUTER_STORE_KEY","exports","BLUE_GREEN_ALLOWED_METHODS","BLUE_GREEN_CACHED_METHODS"],"sources":["constants.ts"],"sourcesContent":["export const BLUE_GREEN_ROUTER_STORE_KEY = \"blueGreenRouterStore\";\nexport const BLUE_GREEN_ALLOWED_METHODS = [\n \"GET\",\n \"HEAD\",\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"OPTIONS\",\n \"DELETE\"\n];\nexport const BLUE_GREEN_CACHED_METHODS = [\"GET\", \"HEAD\"];\n"],"mappings":";;;;;;AAAO,MAAMA,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,GAAG,sBAAsB;AAC1D,MAAME,0BAA0B,GAAAD,OAAA,CAAAC,0BAAA,GAAG,CACtC,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,QAAQ,CACX;AACM,MAAMC,yBAAyB,GAAAF,OAAA,CAAAE,yBAAA,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ import type { PulumiAppParam } from "@webiny/pulumi";
2
+ import type { IAttachDomainsCallable, IBlueGreenDeployment } from "./types.js";
3
+ export type BlueGreenRouterPulumiApp = ReturnType<typeof createBlueGreenPulumiApp>;
4
+ export interface ElasticsearchConfig {
5
+ domainName: string;
6
+ indexPrefix: string;
7
+ sharedIndexes: boolean;
8
+ }
9
+ export interface OpenSearchConfig {
10
+ domainName: string;
11
+ indexPrefix: string;
12
+ sharedIndexes: boolean;
13
+ }
14
+ export interface CreateBlueGreenPulumiAppParams {
15
+ /**
16
+ * Secures against deleting database by accident.
17
+ * By default enabled in production environments.
18
+ */
19
+ protect?: PulumiAppParam<boolean>;
20
+ /**
21
+ * Enables ElasticSearch infrastructure.
22
+ * Note that it requires also changes in application code.
23
+ */
24
+ elasticSearch?: PulumiAppParam<boolean | Partial<ElasticsearchConfig>>;
25
+ /**
26
+ * Enables OpenSearch infrastructure.
27
+ * Note that it requires also changes in application code.
28
+ */
29
+ openSearch?: PulumiAppParam<boolean | Partial<OpenSearchConfig>>;
30
+ /**
31
+ * Enables VPC for the application.
32
+ * By default enabled in production environments.
33
+ */
34
+ vpc?: PulumiAppParam<boolean>;
35
+ /**
36
+ * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)
37
+ * or add additional ones into the mix.
38
+ */
39
+ pulumi?: (app: BlueGreenRouterPulumiApp) => void | Promise<void>;
40
+ /**
41
+ * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.
42
+ */
43
+ pulumiResourceNamePrefix?: PulumiAppParam<string>;
44
+ /**
45
+ * Treats provided environments as production environments, which
46
+ * are deployed in production deployment mode.
47
+ * https://www.webiny.com/docs/architecture/deployment-modes/production
48
+ */
49
+ productionEnvironments?: PulumiAppParam<string[]>;
50
+ /**
51
+ * Available deployments for the Blue / Green switch.
52
+ * They will be validated before deploy.
53
+ */
54
+ deployments: () => [IBlueGreenDeployment, IBlueGreenDeployment];
55
+ /**
56
+ * Attach domains to the Blue/Green CloudFront.
57
+ */
58
+ domains: IAttachDomainsCallable;
59
+ }
60
+ export declare function createBlueGreenPulumiApp(projectAppParams: CreateBlueGreenPulumiAppParams): import("@webiny/pulumi").PulumiApp<{
61
+ region: import("@pulumi/aws/provider.js").Provider;
62
+ cloudfront: {
63
+ cloudFront: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront/distribution.js").Distribution>;
64
+ cloudFrontFunction: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront/function.js").Function>;
65
+ };
66
+ apiGateway: {
67
+ apiStage: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/stage.js").Stage>;
68
+ apiGateway: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/api.js").Api>;
69
+ };
70
+ store: {
71
+ cloudFrontStore: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront/keyValueStore.js").KeyValueStore>;
72
+ };
73
+ }>;
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createBlueGreenPulumiApp = createBlueGreenPulumiApp;
8
+ var _aws = _interopRequireWildcard(require("@pulumi/aws"));
9
+ var aws = _aws;
10
+ var _pulumi = require("@webiny/pulumi");
11
+ var _constants = require("../../constants.js");
12
+ var _BlueGreenRouterCloudFront = require("./BlueGreenRouterCloudFront.js");
13
+ var _createCloudFrontDefaultCacheBehaviorPolicies = require("./cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js");
14
+ var _tagResources = require("../../utils/tagResources.js");
15
+ var _projectName = require("../../env/projectName.js");
16
+ var _env = require("../../env/env.js");
17
+ var _BlueGreenRouterApiGateway = require("./BlueGreenRouterApiGateway.js");
18
+ var _BlueGreenRouterCloudFrontStore = require("./BlueGreenRouterCloudFrontStore.js");
19
+ var _validateDeployments = require("./validation/validateDeployments.js");
20
+ var _getApplicationDomains = require("./domains/getApplicationDomains.js");
21
+ var _convertApplicationDomains = require("./domains/convertApplicationDomains.js");
22
+ var _resolveDomains = require("./domains/resolveDomains.js");
23
+ var _customDomain = require("../customDomain.js");
24
+ var _attachDomainsToOutput = require("./domains/attachDomainsToOutput.js");
25
+ var _constants2 = require("./constants.js");
26
+ function createBlueGreenPulumiApp(projectAppParams) {
27
+ return (0, _pulumi.createPulumiApp)({
28
+ name: "blueGreen",
29
+ path: "apps/blueGreen",
30
+ config: projectAppParams,
31
+ program: async app => {
32
+ const productionEnvironments = app.params.create.productionEnvironments || _constants.DEFAULT_PROD_ENV_NAMES;
33
+ const deployments = (0, _validateDeployments.validateDeployments)(projectAppParams.deployments());
34
+ const applicationsDomains = await (0, _getApplicationDomains.getApplicationDomains)({
35
+ stacks: deployments
36
+ });
37
+ const deploymentsDomains = (0, _convertApplicationDomains.convertApplicationDomains)({
38
+ input: applicationsDomains
39
+ });
40
+ const attachedDomains = projectAppParams.domains();
41
+ const domains = (0, _resolveDomains.resolveDomains)({
42
+ attachedDomains,
43
+ deploymentsDomains
44
+ });
45
+ const isProduction = productionEnvironments.includes(app.params.run.env);
46
+ const protect = app.getParam(projectAppParams.protect) ?? isProduction;
47
+ const region = new aws.Provider(_aws.Region.USEast1, {
48
+ region: _aws.Region.USEast1
49
+ });
50
+
51
+ /**
52
+ * Policies required for default Cache Behavior in CloudFront.
53
+ * We need to do this outside the module creation because it is async.
54
+ */
55
+ const {
56
+ forwardEverythingOriginRequestPolicyId,
57
+ disableCachingCachePolicyId
58
+ } = await (0, _createCloudFrontDefaultCacheBehaviorPolicies.createCloudFrontDefaultCacheBehaviorPolicies)();
59
+ const store = app.addModule(_BlueGreenRouterCloudFrontStore.BlueGreenRouterCloudFrontStore, {
60
+ protect,
61
+ region
62
+ });
63
+ /**
64
+ * TODO Maybe have switching via deployment instead of changing the key?
65
+ * Key takes up to few minutes to propagate.
66
+ * Deployment takes 10 seconds + 30-60 seconds for the CloudFront to propagate.
67
+ */
68
+ app.addResource(aws.cloudfront.KeyvaluestoreKey, {
69
+ name: "blue-green-router-store-key",
70
+ config: {
71
+ keyValueStoreArn: store.cloudFrontStore.output.arn,
72
+ key: _constants2.BLUE_GREEN_ROUTER_STORE_KEY,
73
+ value: "green"
74
+ }
75
+ });
76
+ const apiGateway = app.addModule(_BlueGreenRouterApiGateway.BlueGreenRouterApiGateway, {
77
+ protect,
78
+ region
79
+ });
80
+ const cloudfront = app.addModule(_BlueGreenRouterCloudFront.BlueGreenRouterCloudFront, {
81
+ protect,
82
+ region,
83
+ domains,
84
+ cachePolicyId: disableCachingCachePolicyId,
85
+ originRequestPolicyId: forwardEverythingOriginRequestPolicyId
86
+ });
87
+ const domainNames = domains.reduce((collection, domain) => {
88
+ for (const source of domain.sources) {
89
+ if (collection.includes(source)) {
90
+ continue;
91
+ }
92
+ collection.push(source);
93
+ }
94
+ return collection;
95
+ }, []);
96
+ (0, _customDomain.applyCustomDomain)(cloudfront.cloudFront, {
97
+ domains: domainNames,
98
+ sslSupportMethod: attachedDomains.sslSupportMethod,
99
+ acmCertificateArn: attachedDomains.acmCertificateArn
100
+ });
101
+ (0, _attachDomainsToOutput.attachDomainsToOutput)({
102
+ app,
103
+ domains,
104
+ cloudFront: cloudfront.cloudFront
105
+ });
106
+ (0, _tagResources.tagResources)({
107
+ WebAppName: "blueGreenRouter",
108
+ WbyProjectName: (0, _projectName.getEnvVariableWebinyProjectName)(),
109
+ WbyEnvironment: (0, _env.getEnvVariableWebinyEnv)()
110
+ });
111
+ return {
112
+ region,
113
+ cloudfront,
114
+ apiGateway,
115
+ store
116
+ };
117
+ }
118
+ });
119
+ }
120
+
121
+ //# sourceMappingURL=createBlueGreenPulumiApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_aws","_interopRequireWildcard","require","aws","_pulumi","_constants","_BlueGreenRouterCloudFront","_createCloudFrontDefaultCacheBehaviorPolicies","_tagResources","_projectName","_env","_BlueGreenRouterApiGateway","_BlueGreenRouterCloudFrontStore","_validateDeployments","_getApplicationDomains","_convertApplicationDomains","_resolveDomains","_customDomain","_attachDomainsToOutput","_constants2","createBlueGreenPulumiApp","projectAppParams","createPulumiApp","name","path","config","program","app","productionEnvironments","params","create","DEFAULT_PROD_ENV_NAMES","deployments","validateDeployments","applicationsDomains","getApplicationDomains","stacks","deploymentsDomains","convertApplicationDomains","input","attachedDomains","domains","resolveDomains","isProduction","includes","run","env","protect","getParam","region","Provider","Region","USEast1","forwardEverythingOriginRequestPolicyId","disableCachingCachePolicyId","createCloudFrontDefaultCacheBehaviorPolicies","store","addModule","BlueGreenRouterCloudFrontStore","addResource","cloudfront","KeyvaluestoreKey","keyValueStoreArn","cloudFrontStore","output","arn","key","BLUE_GREEN_ROUTER_STORE_KEY","value","apiGateway","BlueGreenRouterApiGateway","BlueGreenRouterCloudFront","cachePolicyId","originRequestPolicyId","domainNames","reduce","collection","domain","source","sources","push","applyCustomDomain","cloudFront","sslSupportMethod","acmCertificateArn","attachDomainsToOutput","tagResources","WebAppName","WbyProjectName","getEnvVariableWebinyProjectName","WbyEnvironment","getEnvVariableWebinyEnv"],"sources":["createBlueGreenPulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport { Region } from \"@pulumi/aws\";\nimport type { PulumiAppParam } from \"@webiny/pulumi\";\nimport { createPulumiApp } from \"@webiny/pulumi\";\nimport { DEFAULT_PROD_ENV_NAMES } from \"~/constants.js\";\nimport { BlueGreenRouterCloudFront } from \"./BlueGreenRouterCloudFront.js\";\nimport { createCloudFrontDefaultCacheBehaviorPolicies } from \"./cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js\";\nimport { tagResources } from \"~/utils/tagResources.js\";\nimport { getEnvVariableWebinyProjectName } from \"~/env/projectName.js\";\nimport { getEnvVariableWebinyEnv } from \"~/env/env.js\";\nimport { BlueGreenRouterApiGateway } from \"./BlueGreenRouterApiGateway.js\";\nimport { BlueGreenRouterCloudFrontStore } from \"./BlueGreenRouterCloudFrontStore.js\";\nimport type { IAttachDomainsCallable, IBlueGreenDeployment } from \"./types.js\";\nimport { validateDeployments } from \"./validation/validateDeployments.js\";\nimport { getApplicationDomains } from \"./domains/getApplicationDomains.js\";\nimport { convertApplicationDomains } from \"./domains/convertApplicationDomains.js\";\nimport { resolveDomains } from \"./domains/resolveDomains.js\";\nimport { applyCustomDomain } from \"~/apps/customDomain.js\";\nimport { attachDomainsToOutput } from \"~/apps/blueGreen/domains/attachDomainsToOutput.js\";\nimport { BLUE_GREEN_ROUTER_STORE_KEY } from \"./constants.js\";\n\nexport type BlueGreenRouterPulumiApp = ReturnType<typeof createBlueGreenPulumiApp>;\n\nexport interface ElasticsearchConfig {\n domainName: string;\n indexPrefix: string;\n sharedIndexes: boolean;\n}\n\nexport interface OpenSearchConfig {\n domainName: string;\n indexPrefix: string;\n sharedIndexes: boolean;\n}\n\nexport interface CreateBlueGreenPulumiAppParams {\n /**\n * Secures against deleting database by accident.\n * By default enabled in production environments.\n */\n protect?: PulumiAppParam<boolean>;\n\n /**\n * Enables ElasticSearch infrastructure.\n * Note that it requires also changes in application code.\n */\n elasticSearch?: PulumiAppParam<boolean | Partial<ElasticsearchConfig>>;\n\n /**\n * Enables OpenSearch infrastructure.\n * Note that it requires also changes in application code.\n */\n openSearch?: PulumiAppParam<boolean | Partial<OpenSearchConfig>>;\n\n /**\n * Enables VPC for the application.\n * By default enabled in production environments.\n */\n vpc?: PulumiAppParam<boolean>;\n\n /**\n * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)\n * or add additional ones into the mix.\n */\n pulumi?: (app: BlueGreenRouterPulumiApp) => void | Promise<void>;\n\n /**\n * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.\n */\n pulumiResourceNamePrefix?: PulumiAppParam<string>;\n\n /**\n * Treats provided environments as production environments, which\n * are deployed in production deployment mode.\n * https://www.webiny.com/docs/architecture/deployment-modes/production\n */\n productionEnvironments?: PulumiAppParam<string[]>;\n /**\n * Available deployments for the Blue / Green switch.\n * They will be validated before deploy.\n */\n deployments: () => [IBlueGreenDeployment, IBlueGreenDeployment];\n /**\n * Attach domains to the Blue/Green CloudFront.\n */\n domains: IAttachDomainsCallable;\n}\n\nexport function createBlueGreenPulumiApp(projectAppParams: CreateBlueGreenPulumiAppParams) {\n return createPulumiApp({\n name: \"blueGreen\",\n path: \"apps/blueGreen\",\n config: projectAppParams,\n program: async app => {\n const productionEnvironments =\n app.params.create.productionEnvironments || DEFAULT_PROD_ENV_NAMES;\n\n const deployments = validateDeployments(projectAppParams.deployments());\n\n const applicationsDomains = await getApplicationDomains({\n stacks: deployments\n });\n\n const deploymentsDomains = convertApplicationDomains({\n input: applicationsDomains\n });\n\n const attachedDomains = projectAppParams.domains();\n\n const domains = resolveDomains({\n attachedDomains,\n deploymentsDomains\n });\n const isProduction = productionEnvironments.includes(app.params.run.env);\n const protect = app.getParam(projectAppParams.protect) ?? isProduction;\n\n const region = new aws.Provider(Region.USEast1, {\n region: Region.USEast1\n });\n\n /**\n * Policies required for default Cache Behavior in CloudFront.\n * We need to do this outside the module creation because it is async.\n */\n const { forwardEverythingOriginRequestPolicyId, disableCachingCachePolicyId } =\n await createCloudFrontDefaultCacheBehaviorPolicies();\n const store = app.addModule(BlueGreenRouterCloudFrontStore, {\n protect,\n region\n });\n /**\n * TODO Maybe have switching via deployment instead of changing the key?\n * Key takes up to few minutes to propagate.\n * Deployment takes 10 seconds + 30-60 seconds for the CloudFront to propagate.\n */\n app.addResource(aws.cloudfront.KeyvaluestoreKey, {\n name: \"blue-green-router-store-key\",\n config: {\n keyValueStoreArn: store.cloudFrontStore.output.arn,\n key: BLUE_GREEN_ROUTER_STORE_KEY,\n value: \"green\"\n }\n });\n\n const apiGateway = app.addModule(BlueGreenRouterApiGateway, {\n protect,\n region\n });\n\n const cloudfront = app.addModule(BlueGreenRouterCloudFront, {\n protect,\n region,\n domains,\n cachePolicyId: disableCachingCachePolicyId,\n originRequestPolicyId: forwardEverythingOriginRequestPolicyId\n });\n\n const domainNames = domains.reduce<string[]>((collection, domain) => {\n for (const source of domain.sources) {\n if (collection.includes(source)) {\n continue;\n }\n collection.push(source);\n }\n return collection;\n }, []);\n\n applyCustomDomain(cloudfront.cloudFront, {\n domains: domainNames,\n sslSupportMethod: attachedDomains.sslSupportMethod,\n acmCertificateArn: attachedDomains.acmCertificateArn\n });\n\n attachDomainsToOutput({\n app,\n domains,\n cloudFront: cloudfront.cloudFront\n });\n\n tagResources({\n WebAppName: \"blueGreenRouter\",\n WbyProjectName: getEnvVariableWebinyProjectName(),\n WbyEnvironment: getEnvVariableWebinyEnv()\n });\n\n return {\n region,\n cloudfront,\n apiGateway,\n store\n };\n }\n });\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,IAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAmC,IAAAC,GAAA,GAAAH,IAAA;AAGnC,IAAAI,OAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,0BAAA,GAAAJ,OAAA;AACA,IAAAK,6CAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACA,IAAAO,YAAA,GAAAP,OAAA;AACA,IAAAQ,IAAA,GAAAR,OAAA;AACA,IAAAS,0BAAA,GAAAT,OAAA;AACA,IAAAU,+BAAA,GAAAV,OAAA;AAEA,IAAAW,oBAAA,GAAAX,OAAA;AACA,IAAAY,sBAAA,GAAAZ,OAAA;AACA,IAAAa,0BAAA,GAAAb,OAAA;AACA,IAAAc,eAAA,GAAAd,OAAA;AACA,IAAAe,aAAA,GAAAf,OAAA;AACA,IAAAgB,sBAAA,GAAAhB,OAAA;AACA,IAAAiB,WAAA,GAAAjB,OAAA;AAqEO,SAASkB,wBAAwBA,CAACC,gBAAgD,EAAE;EACvF,OAAO,IAAAC,uBAAe,EAAC;IACnBC,IAAI,EAAE,WAAW;IACjBC,IAAI,EAAE,gBAAgB;IACtBC,MAAM,EAAEJ,gBAAgB;IACxBK,OAAO,EAAE,MAAMC,GAAG,IAAI;MAClB,MAAMC,sBAAsB,GACxBD,GAAG,CAACE,MAAM,CAACC,MAAM,CAACF,sBAAsB,IAAIG,iCAAsB;MAEtE,MAAMC,WAAW,GAAG,IAAAC,wCAAmB,EAACZ,gBAAgB,CAACW,WAAW,CAAC,CAAC,CAAC;MAEvE,MAAME,mBAAmB,GAAG,MAAM,IAAAC,4CAAqB,EAAC;QACpDC,MAAM,EAAEJ;MACZ,CAAC,CAAC;MAEF,MAAMK,kBAAkB,GAAG,IAAAC,oDAAyB,EAAC;QACjDC,KAAK,EAAEL;MACX,CAAC,CAAC;MAEF,MAAMM,eAAe,GAAGnB,gBAAgB,CAACoB,OAAO,CAAC,CAAC;MAElD,MAAMA,OAAO,GAAG,IAAAC,8BAAc,EAAC;QAC3BF,eAAe;QACfH;MACJ,CAAC,CAAC;MACF,MAAMM,YAAY,GAAGf,sBAAsB,CAACgB,QAAQ,CAACjB,GAAG,CAACE,MAAM,CAACgB,GAAG,CAACC,GAAG,CAAC;MACxE,MAAMC,OAAO,GAAGpB,GAAG,CAACqB,QAAQ,CAAC3B,gBAAgB,CAAC0B,OAAO,CAAC,IAAIJ,YAAY;MAEtE,MAAMM,MAAM,GAAG,IAAI9C,GAAG,CAAC+C,QAAQ,CAACC,WAAM,CAACC,OAAO,EAAE;QAC5CH,MAAM,EAAEE,WAAM,CAACC;MACnB,CAAC,CAAC;;MAEF;AACZ;AACA;AACA;MACY,MAAM;QAAEC,sCAAsC;QAAEC;MAA4B,CAAC,GACzE,MAAM,IAAAC,0FAA4C,EAAC,CAAC;MACxD,MAAMC,KAAK,GAAG7B,GAAG,CAAC8B,SAAS,CAACC,8DAA8B,EAAE;QACxDX,OAAO;QACPE;MACJ,CAAC,CAAC;MACF;AACZ;AACA;AACA;AACA;MACYtB,GAAG,CAACgC,WAAW,CAACxD,GAAG,CAACyD,UAAU,CAACC,gBAAgB,EAAE;QAC7CtC,IAAI,EAAE,6BAA6B;QACnCE,MAAM,EAAE;UACJqC,gBAAgB,EAAEN,KAAK,CAACO,eAAe,CAACC,MAAM,CAACC,GAAG;UAClDC,GAAG,EAAEC,uCAA2B;UAChCC,KAAK,EAAE;QACX;MACJ,CAAC,CAAC;MAEF,MAAMC,UAAU,GAAG1C,GAAG,CAAC8B,SAAS,CAACa,oDAAyB,EAAE;QACxDvB,OAAO;QACPE;MACJ,CAAC,CAAC;MAEF,MAAMW,UAAU,GAAGjC,GAAG,CAAC8B,SAAS,CAACc,oDAAyB,EAAE;QACxDxB,OAAO;QACPE,MAAM;QACNR,OAAO;QACP+B,aAAa,EAAElB,2BAA2B;QAC1CmB,qBAAqB,EAAEpB;MAC3B,CAAC,CAAC;MAEF,MAAMqB,WAAW,GAAGjC,OAAO,CAACkC,MAAM,CAAW,CAACC,UAAU,EAAEC,MAAM,KAAK;QACjE,KAAK,MAAMC,MAAM,IAAID,MAAM,CAACE,OAAO,EAAE;UACjC,IAAIH,UAAU,CAAChC,QAAQ,CAACkC,MAAM,CAAC,EAAE;YAC7B;UACJ;UACAF,UAAU,CAACI,IAAI,CAACF,MAAM,CAAC;QAC3B;QACA,OAAOF,UAAU;MACrB,CAAC,EAAE,EAAE,CAAC;MAEN,IAAAK,+BAAiB,EAACrB,UAAU,CAACsB,UAAU,EAAE;QACrCzC,OAAO,EAAEiC,WAAW;QACpBS,gBAAgB,EAAE3C,eAAe,CAAC2C,gBAAgB;QAClDC,iBAAiB,EAAE5C,eAAe,CAAC4C;MACvC,CAAC,CAAC;MAEF,IAAAC,4CAAqB,EAAC;QAClB1D,GAAG;QACHc,OAAO;QACPyC,UAAU,EAAEtB,UAAU,CAACsB;MAC3B,CAAC,CAAC;MAEF,IAAAI,0BAAY,EAAC;QACTC,UAAU,EAAE,iBAAiB;QAC7BC,cAAc,EAAE,IAAAC,4CAA+B,EAAC,CAAC;QACjDC,cAAc,EAAE,IAAAC,4BAAuB,EAAC;MAC5C,CAAC,CAAC;MAEF,OAAO;QACH1C,MAAM;QACNW,UAAU;QACVS,UAAU;QACVb;MACJ,CAAC;IACL;EACJ,CAAC,CAAC;AACN","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import * as aws from "@pulumi/aws";
2
+ import { type PulumiApp, type PulumiAppResource } from "@webiny/pulumi";
3
+ import type { IResolvedDomains } from "../types.js";
4
+ export interface IAttachDomainsToOutputParams {
5
+ app: PulumiApp;
6
+ domains: IResolvedDomains;
7
+ cloudFront: PulumiAppResource<typeof aws.cloudfront.Distribution>;
8
+ }
9
+ export declare const attachDomainsToOutput: (params: IAttachDomainsToOutputParams) => void;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.attachDomainsToOutput = void 0;
7
+ const attachDomainsToOutput = params => {
8
+ const {
9
+ app,
10
+ cloudFront
11
+ } = params;
12
+ app.addHandler(() => {
13
+ const distributionDomain = cloudFront.output.domainName;
14
+ const distributionUrl = distributionDomain.apply(value => `https://${value}`);
15
+ app.addOutputs({
16
+ ["distributionDomain"]: distributionDomain,
17
+ ["distributionUrl"]: distributionUrl,
18
+ ["environments"]: params.domains,
19
+ ["domains"]: []
20
+ });
21
+ // We're adjusting the outputs via the `config.aliases` setter.
22
+ // At the time of implementing this, could not find a better solution.
23
+ cloudFront.config.aliases(aliases => {
24
+ const domains = [];
25
+ for (const alias of aliases || []) {
26
+ domains.push(alias);
27
+ }
28
+ app.addOutputs({
29
+ ["domains"]: domains
30
+ });
31
+ return aliases;
32
+ });
33
+ });
34
+ };
35
+ exports.attachDomainsToOutput = attachDomainsToOutput;
36
+
37
+ //# sourceMappingURL=attachDomainsToOutput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["attachDomainsToOutput","params","app","cloudFront","addHandler","distributionDomain","output","domainName","distributionUrl","apply","value","addOutputs","domains","config","aliases","alias","push","exports"],"sources":["attachDomainsToOutput.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport { type PulumiApp, type PulumiAppResource } from \"@webiny/pulumi\";\nimport type { IResolvedDomains } from \"~/apps/blueGreen/types.js\";\n\nexport interface IAttachDomainsToOutputParams {\n app: PulumiApp;\n domains: IResolvedDomains;\n cloudFront: PulumiAppResource<typeof aws.cloudfront.Distribution>;\n}\n\nexport const attachDomainsToOutput = (params: IAttachDomainsToOutputParams) => {\n const { app, cloudFront } = params;\n\n app.addHandler(() => {\n const distributionDomain = cloudFront.output.domainName;\n const distributionUrl = distributionDomain.apply(value => `https://${value}`);\n\n app.addOutputs({\n [\"distributionDomain\"]: distributionDomain,\n [\"distributionUrl\"]: distributionUrl,\n [\"environments\"]: params.domains,\n [\"domains\"]: []\n });\n // We're adjusting the outputs via the `config.aliases` setter.\n // At the time of implementing this, could not find a better solution.\n cloudFront.config.aliases(aliases => {\n const domains: string[] = [];\n\n for (const alias of aliases || []) {\n domains.push(alias);\n }\n\n app.addOutputs({\n [\"domains\"]: domains\n });\n\n return aliases;\n });\n });\n};\n"],"mappings":";;;;;;AAUO,MAAMA,qBAAqB,GAAIC,MAAoC,IAAK;EAC3E,MAAM;IAAEC,GAAG;IAAEC;EAAW,CAAC,GAAGF,MAAM;EAElCC,GAAG,CAACE,UAAU,CAAC,MAAM;IACjB,MAAMC,kBAAkB,GAAGF,UAAU,CAACG,MAAM,CAACC,UAAU;IACvD,MAAMC,eAAe,GAAGH,kBAAkB,CAACI,KAAK,CAACC,KAAK,IAAI,WAAWA,KAAK,EAAE,CAAC;IAE7ER,GAAG,CAACS,UAAU,CAAC;MACX,CAAC,oBAAoB,GAAGN,kBAAkB;MAC1C,CAAC,iBAAiB,GAAGG,eAAe;MACpC,CAAC,cAAc,GAAGP,MAAM,CAACW,OAAO;MAChC,CAAC,SAAS,GAAG;IACjB,CAAC,CAAC;IACF;IACA;IACAT,UAAU,CAACU,MAAM,CAACC,OAAO,CAACA,OAAO,IAAI;MACjC,MAAMF,OAAiB,GAAG,EAAE;MAE5B,KAAK,MAAMG,KAAK,IAAID,OAAO,IAAI,EAAE,EAAE;QAC/BF,OAAO,CAACI,IAAI,CAACD,KAAK,CAAC;MACvB;MAEAb,GAAG,CAACS,UAAU,CAAC;QACX,CAAC,SAAS,GAAGC;MACjB,CAAC,CAAC;MAEF,OAAOE,OAAO;IAClB,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAACG,OAAA,CAAAjB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ import type { IGetApplicationStacksResult } from "./getApplicationDomains.js";
2
+ import type { IDeploymentsDomains } from "../types.js";
3
+ export interface IConvertApplicationDomainsParams {
4
+ input: IGetApplicationStacksResult;
5
+ }
6
+ export declare const convertApplicationDomains: (params: IConvertApplicationDomainsParams) => IDeploymentsDomains;