@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.
- package/apps/api/ApiGraphql.js +2 -2
- package/apps/api/ApiGraphql.js.map +1 -1
- package/apps/api/ApiMigration.js +2 -1
- package/apps/api/ApiMigration.js.map +1 -1
- package/apps/api/ApiOutput.js +2 -1
- package/apps/api/ApiOutput.js.map +1 -1
- package/apps/api/createApiPulumiApp.d.ts +9 -2
- package/apps/api/createApiPulumiApp.js +12 -14
- package/apps/api/createApiPulumiApp.js.map +1 -1
- package/apps/awsUtils.d.ts +1 -1
- package/apps/blueGreen/BlueGreenRouterApiGateway.d.ts +11 -0
- package/apps/blueGreen/BlueGreenRouterApiGateway.js +51 -0
- package/apps/blueGreen/BlueGreenRouterApiGateway.js.map +1 -0
- package/apps/blueGreen/BlueGreenRouterCloudFront.d.ts +17 -0
- package/apps/blueGreen/BlueGreenRouterCloudFront.js +106 -0
- package/apps/blueGreen/BlueGreenRouterCloudFront.js.map +1 -0
- package/apps/blueGreen/BlueGreenRouterCloudFrontStore.d.ts +10 -0
- package/apps/blueGreen/BlueGreenRouterCloudFrontStore.js +27 -0
- package/apps/blueGreen/BlueGreenRouterCloudFrontStore.js.map +1 -0
- package/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.d.ts +7 -0
- package/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js +23 -0
- package/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js.map +1 -0
- package/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.d.ts +14 -0
- package/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js +30 -0
- package/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js.map +1 -0
- package/apps/blueGreen/cloudfront/createOriginId.d.ts +11 -0
- package/apps/blueGreen/cloudfront/createOriginId.js +18 -0
- package/apps/blueGreen/cloudfront/createOriginId.js.map +1 -0
- package/apps/blueGreen/constants.d.ts +3 -0
- package/apps/blueGreen/constants.js +11 -0
- package/apps/blueGreen/constants.js.map +1 -0
- package/apps/blueGreen/createBlueGreenPulumiApp.d.ts +73 -0
- package/apps/blueGreen/createBlueGreenPulumiApp.js +121 -0
- package/apps/blueGreen/createBlueGreenPulumiApp.js.map +1 -0
- package/apps/blueGreen/domains/attachDomainsToOutput.d.ts +9 -0
- package/apps/blueGreen/domains/attachDomainsToOutput.js +37 -0
- package/apps/blueGreen/domains/attachDomainsToOutput.js.map +1 -0
- package/apps/blueGreen/domains/convertApplicationDomains.d.ts +6 -0
- package/apps/blueGreen/domains/convertApplicationDomains.js +32 -0
- package/apps/blueGreen/domains/convertApplicationDomains.js.map +1 -0
- package/apps/blueGreen/domains/getApplicationDomains.d.ts +20 -0
- package/apps/blueGreen/domains/getApplicationDomains.js +107 -0
- package/apps/blueGreen/domains/getApplicationDomains.js.map +1 -0
- package/apps/blueGreen/domains/resolveDomains.d.ts +6 -0
- package/apps/blueGreen/domains/resolveDomains.js +48 -0
- package/apps/blueGreen/domains/resolveDomains.js.map +1 -0
- package/apps/blueGreen/functions/buildHandlerFunction.d.ts +15 -0
- package/apps/blueGreen/functions/buildHandlerFunction.js +25 -0
- package/apps/blueGreen/functions/buildHandlerFunction.js.map +1 -0
- package/apps/blueGreen/functions/handler.d.ts +1 -0
- package/apps/blueGreen/functions/handler.js +63 -0
- package/apps/blueGreen/functions/handler.js.map +1 -0
- package/apps/blueGreen/types.d.ts +78 -0
- package/apps/blueGreen/types.js +7 -0
- package/apps/blueGreen/types.js.map +1 -0
- package/apps/blueGreen/validation/validateDeployments.d.ts +2 -0
- package/apps/blueGreen/validation/validateDeployments.js +41 -0
- package/apps/blueGreen/validation/validateDeployments.js.map +1 -0
- package/apps/common/CoreOutput.js +3 -1
- package/apps/common/CoreOutput.js.map +1 -1
- package/apps/core/cognitoIdentityProviders/configure.js +2 -1
- package/apps/core/cognitoIdentityProviders/configure.js.map +1 -1
- package/apps/core/createCorePulumiApp.js +28 -6
- package/apps/core/createCorePulumiApp.js.map +1 -1
- package/apps/createAppBucket.js +2 -1
- package/apps/createAppBucket.js.map +1 -1
- package/apps/react/createReactPulumiApp.js +7 -3
- package/apps/react/createReactPulumiApp.js.map +1 -1
- package/apps/syncSystem/SyncSystemDynamo.d.ts +5 -0
- package/apps/syncSystem/SyncSystemDynamo.js +59 -0
- package/apps/syncSystem/SyncSystemDynamo.js.map +1 -0
- package/apps/syncSystem/SyncSystemLambda.d.ts +13 -0
- package/apps/syncSystem/SyncSystemLambda.js +104 -0
- package/apps/syncSystem/SyncSystemLambda.js.map +1 -0
- package/apps/syncSystem/SyncSystemSQS.d.ts +4 -0
- package/apps/syncSystem/SyncSystemSQS.js +40 -0
- package/apps/syncSystem/SyncSystemSQS.js.map +1 -0
- package/apps/syncSystem/addTableItems.d.ts +8 -0
- package/apps/syncSystem/addTableItems.js +59 -0
- package/apps/syncSystem/addTableItems.js.map +1 -0
- package/apps/syncSystem/createSyncSystemPulumiApp.d.ts +66 -0
- package/apps/syncSystem/createSyncSystemPulumiApp.js +63 -0
- package/apps/syncSystem/createSyncSystemPulumiApp.js.map +1 -0
- package/apps/tenantRouter.js +2 -1
- package/apps/tenantRouter.js.map +1 -1
- package/apps/website/WebsitePrerendering.js +1 -1
- package/apps/website/WebsitePrerendering.js.map +1 -1
- package/apps/website/createWebsitePulumiApp.d.ts +1 -1
- package/apps/website/createWebsitePulumiApp.js +6 -2
- package/apps/website/createWebsitePulumiApp.js.map +1 -1
- package/components/tenantRouter/WebsiteTenantRouter.d.ts +1 -0
- package/components/tenantRouter/WebsiteTenantRouter.js +6 -3
- package/components/tenantRouter/WebsiteTenantRouter.js.map +1 -1
- package/enterprise/createCorePulumiApp.d.ts +1 -0
- package/enterprise/createCorePulumiApp.js +10 -0
- package/enterprise/createCorePulumiApp.js.map +1 -1
- package/enterprise/createSyncSystemPulumiApp.d.ts +26 -0
- package/enterprise/createSyncSystemPulumiApp.js +71 -0
- package/enterprise/createSyncSystemPulumiApp.js.map +1 -0
- package/env/awsRegion.d.ts +1 -0
- package/env/awsRegion.js +12 -0
- package/env/awsRegion.js.map +1 -0
- package/env/base.d.ts +15 -0
- package/env/base.js +37 -0
- package/env/base.js.map +1 -0
- package/env/env.d.ts +1 -0
- package/env/env.js +12 -0
- package/env/env.js.map +1 -0
- package/env/projectName.d.ts +1 -0
- package/env/projectName.js +12 -0
- package/env/projectName.js.map +1 -0
- package/env/variant.d.ts +1 -0
- package/env/variant.js +13 -0
- package/env/variant.js.map +1 -0
- package/package.json +21 -18
- package/utils/addServiceManifestTableItem.js +1 -1
- package/utils/addServiceManifestTableItem.js.map +1 -1
- package/utils/dynamodb.d.ts +14 -0
- package/utils/dynamodb.js +36 -0
- package/utils/dynamodb.js.map +1 -0
- package/utils/lambdaEnvVariables.js +1 -2
- package/utils/lambdaEnvVariables.js.map +1 -1
- package/utils/uploadFolderToS3.js +2 -1
- 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,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":"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","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;
|