@webiny/pulumi-aws 5.26.0 → 5.27.0
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/admin/AdminApp.d.ts +1 -1
- package/apps/admin/AdminApp.js +20 -1
- package/apps/admin/AdminApp.js.map +1 -1
- package/apps/api/ApiApp.d.ts +11 -14
- package/apps/api/ApiApp.js +62 -67
- package/apps/api/ApiApp.js.map +1 -1
- package/apps/api/ApiApwScheduler.d.ts +0 -2
- package/apps/api/ApiApwScheduler.js +14 -8
- package/apps/api/ApiApwScheduler.js.map +1 -1
- package/apps/api/ApiCloudfront.js +2 -2
- package/apps/api/ApiCloudfront.js.map +1 -1
- package/apps/api/ApiFileManager.d.ts +1 -8
- package/apps/api/ApiFileManager.js +31 -32
- package/apps/api/ApiFileManager.js.map +1 -1
- package/apps/api/ApiGraphql.d.ts +0 -10
- package/apps/api/ApiGraphql.js +59 -39
- package/apps/api/ApiGraphql.js.map +1 -1
- package/apps/api/ApiHeadlessCMS.d.ts +0 -4
- package/apps/api/ApiHeadlessCMS.js +30 -20
- package/apps/api/ApiHeadlessCMS.js.map +1 -1
- package/apps/api/ApiPageBuilder.d.ts +0 -8
- package/apps/api/ApiPageBuilder.js +79 -60
- package/apps/api/ApiPageBuilder.js.map +1 -1
- package/apps/common/StorageOutput.d.ts +21 -0
- package/apps/common/StorageOutput.js +50 -0
- package/apps/common/StorageOutput.js.map +1 -0
- package/apps/common/VpcConfig.d.ts +8 -0
- package/apps/common/VpcConfig.js +37 -0
- package/apps/common/VpcConfig.js.map +1 -0
- package/apps/common/index.d.ts +2 -0
- package/apps/common/index.js +31 -0
- package/apps/common/index.js.map +1 -0
- package/apps/gateway/GatewayApi.d.ts +17 -0
- package/apps/gateway/GatewayApi.js +187 -0
- package/apps/gateway/GatewayApi.js.map +1 -0
- package/apps/gateway/GatewayApp.d.ts +25 -0
- package/apps/gateway/GatewayApp.js +85 -0
- package/apps/gateway/GatewayApp.js.map +1 -0
- package/apps/gateway/GatewayLambdas.d.ts +13 -0
- package/apps/gateway/GatewayLambdas.js +92 -0
- package/apps/gateway/GatewayLambdas.js.map +1 -0
- package/apps/gateway/GatewayReactApp.d.ts +17 -0
- package/apps/gateway/GatewayReactApp.js +163 -0
- package/apps/gateway/GatewayReactApp.js.map +1 -0
- package/apps/index.d.ts +1 -0
- package/apps/index.js +14 -0
- package/apps/index.js.map +1 -1
- package/apps/{api/ApiLambdaUtils.d.ts → lambdaUtils.d.ts} +6 -3
- package/apps/lambdaUtils.js +75 -0
- package/apps/lambdaUtils.js.map +1 -0
- package/apps/storage/StorageApp.d.ts +42 -5
- package/apps/storage/StorageApp.js +27 -9
- package/apps/storage/StorageApp.js.map +1 -1
- package/apps/storage/StorageElasticSearch.d.ts +15 -0
- package/apps/storage/StorageElasticSearch.js +242 -0
- package/apps/storage/StorageElasticSearch.js.map +1 -0
- package/apps/storage/StorageEventBus.d.ts +2 -0
- package/apps/{api/ApiLambdaUtils.js → storage/StorageEventBus.js} +15 -33
- package/apps/storage/StorageEventBus.js.map +1 -0
- package/apps/{api/ApiVpc.d.ts → storage/StorageVpc.d.ts} +4 -4
- package/apps/storage/StorageVpc.js +145 -0
- package/apps/storage/StorageVpc.js.map +1 -0
- package/apps/storage/index.d.ts +2 -0
- package/apps/storage/index.js +26 -0
- package/apps/storage/index.js.map +1 -1
- package/apps/utils.d.ts +5 -0
- package/apps/utils.js +14 -0
- package/apps/utils.js.map +1 -0
- package/apps/website/WebsiteApp.d.ts +33 -3
- package/apps/website/WebsiteApp.js +57 -5
- package/apps/website/WebsiteApp.js.map +1 -1
- package/apps/website/WebsiteHookRender.js +20 -22
- package/apps/website/WebsiteHookRender.js.map +1 -1
- package/apps/website/WebsitePrerendering.d.ts +31 -0
- package/apps/website/WebsitePrerendering.js +266 -0
- package/apps/website/WebsitePrerendering.js.map +1 -0
- package/apps/website/WebsiteUpload.d.ts +6 -0
- package/apps/website/WebsiteUpload.js +50 -0
- package/apps/website/WebsiteUpload.js.map +1 -0
- package/package.json +9 -8
- package/apps/api/ApiLambdaUtils.js.map +0 -1
- package/apps/api/ApiPrerendering.d.ts +0 -24
- package/apps/api/ApiPrerendering.js +0 -200
- package/apps/api/ApiPrerendering.js.map +0 -1
- package/apps/api/ApiVpc.js +0 -129
- package/apps/api/ApiVpc.js.map +0 -1
- package/apps/getStorageOutput.d.ts +0 -13
- package/apps/getStorageOutput.js +0 -29
- package/apps/getStorageOutput.js.map +0 -1
- package/apps/website/WebsiteHookUpdatePbSettings.d.ts +0 -5
- package/apps/website/WebsiteHookUpdatePbSettings.js +0 -80
- package/apps/website/WebsiteHookUpdatePbSettings.js.map +0 -1
- package/apps/website/WebsiteHookUpload.d.ts +0 -1
- package/apps/website/WebsiteHookUpload.js +0 -65
- package/apps/website/WebsiteHookUpload.js.map +0 -1
package/apps/admin/AdminApp.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { ApplicationContext, ApplicationConfig } from "@webiny/pulumi-sdk";
|
|
|
3
3
|
import { CustomDomainParams } from "../customDomain";
|
|
4
4
|
export interface AdminAppConfig {
|
|
5
5
|
/** Custom domain configuration */
|
|
6
|
-
domain?(ctx: ApplicationContext): CustomDomainParams;
|
|
6
|
+
domain?(ctx: ApplicationContext): CustomDomainParams | undefined | void;
|
|
7
7
|
}
|
|
8
8
|
export declare const AdminApp: new (ctx: ApplicationContext) => import("@webiny/pulumi-sdk").PulumiApp<AdminAppConfig> & {
|
|
9
9
|
cloudfront: import("@webiny/pulumi-sdk").PulumiAppResource<typeof aws.cloudfront.Distribution>;
|
package/apps/admin/AdminApp.js
CHANGED
|
@@ -93,7 +93,26 @@ const AdminApp = (0, _pulumiSdk.defineApp)({
|
|
|
93
93
|
appDir: app.ctx.appDir,
|
|
94
94
|
bucket: outputs["appStorage"]
|
|
95
95
|
});
|
|
96
|
-
});
|
|
96
|
+
}); // Update variant gateway configuration.
|
|
97
|
+
|
|
98
|
+
const variant = app.ctx.variant;
|
|
99
|
+
|
|
100
|
+
if (variant) {
|
|
101
|
+
app.onAfterDeploy(async ({
|
|
102
|
+
outputs
|
|
103
|
+
}) => {
|
|
104
|
+
// After deployment is made we update a static JSON file with a variant configuration.
|
|
105
|
+
// TODO: We should update WCP config instead of a static file here
|
|
106
|
+
await (0, _pulumiSdk.updateGatewayConfig)({
|
|
107
|
+
app: "admin",
|
|
108
|
+
cwd: app.ctx.projectDir,
|
|
109
|
+
env: app.ctx.env,
|
|
110
|
+
variant: variant,
|
|
111
|
+
domain: outputs["appDomain"]
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
97
116
|
return _objectSpread(_objectSpread({}, bucket), {}, {
|
|
98
117
|
cloudfront
|
|
99
118
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["AdminApp.ts"],"names":["AdminApp","name","config","app","bucket","cloudfront","addResource","aws","Distribution","enabled","waitForDeployment","origins","origin","defaultRootObject","defaultCacheBehavior","compress","targetOriginId","originId","viewerProtocolPolicy","allowedMethods","cachedMethods","forwardedValues","cookies","forward","queryString","minTtl","defaultTtl","maxTtl","priceClass","customErrorResponses","errorCode","responseCode","responsePagePath","restrictions","geoRestriction","restrictionType","viewerCertificate","cloudfrontDefaultCertificate","domain","ctx","addOutputs","appStorage","output","id","appDomain","domainName","appUrl","apply","value","onAfterDeploy","outputs","appDir","createAdminApp","description","cli","watch","deploy","setup","onBeforeBuild","onAfterBuild","onBeforeDeploy"],"mappings":";;;;;;;;;;;;AAAA;;AAEA;;
|
|
1
|
+
{"version":3,"sources":["AdminApp.ts"],"names":["AdminApp","name","config","app","bucket","cloudfront","addResource","aws","Distribution","enabled","waitForDeployment","origins","origin","defaultRootObject","defaultCacheBehavior","compress","targetOriginId","originId","viewerProtocolPolicy","allowedMethods","cachedMethods","forwardedValues","cookies","forward","queryString","minTtl","defaultTtl","maxTtl","priceClass","customErrorResponses","errorCode","responseCode","responsePagePath","restrictions","geoRestriction","restrictionType","viewerCertificate","cloudfrontDefaultCertificate","domain","ctx","addOutputs","appStorage","output","id","appDomain","domainName","appUrl","apply","value","onAfterDeploy","outputs","appDir","variant","cwd","projectDir","env","createAdminApp","description","cli","watch","deploy","setup","onBeforeBuild","onAfterBuild","onBeforeDeploy"],"mappings":"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","sourcesContent":["import * as aws from \"@pulumi/aws\";\n\nimport {\n defineApp,\n createGenericApplication,\n ApplicationContext,\n ApplicationConfig,\n updateGatewayConfig\n} from \"@webiny/pulumi-sdk\";\n\nimport { createPublicAppBucket } from \"../createAppBucket\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { adminUpload } from \"./AdminUpload\";\n\nexport interface AdminAppConfig {\n /** Custom domain configuration */\n domain?(ctx: ApplicationContext): CustomDomainParams | undefined | void;\n}\n\nexport const AdminApp = defineApp({\n name: \"Admin\",\n config(app, config: AdminAppConfig) {\n const bucket = createPublicAppBucket(app, \"admin-app\");\n\n const cloudfront = app.addResource(aws.cloudfront.Distribution, {\n name: \"admin-app-cdn\",\n config: {\n enabled: true,\n waitForDeployment: false,\n origins: [bucket.origin],\n defaultRootObject: \"index.html\",\n defaultCacheBehavior: {\n compress: true,\n targetOriginId: bucket.origin.originId,\n viewerProtocolPolicy: \"redirect-to-https\",\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: { forward: \"none\" },\n queryString: false\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 600,\n maxTtl: 600\n },\n priceClass: \"PriceClass_100\",\n customErrorResponses: [\n { errorCode: 404, responseCode: 404, responsePagePath: \"/index.html\" }\n ],\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n }\n });\n\n const domain = config.domain?.(app.ctx);\n if (domain) {\n applyCustomDomain(cloudfront, domain);\n }\n\n app.addOutputs({\n appStorage: bucket.bucket.output.id,\n appDomain: cloudfront.output.domainName,\n appUrl: cloudfront.output.domainName.apply(value => `https://${value}`)\n });\n\n app.onAfterDeploy(async ({ outputs }) => {\n await adminUpload({\n appDir: app.ctx.appDir,\n bucket: outputs[\"appStorage\"]\n });\n });\n\n // Update variant gateway configuration.\n const variant = app.ctx.variant;\n if (variant) {\n app.onAfterDeploy(async ({ outputs }) => {\n // After deployment is made we update a static JSON file with a variant configuration.\n // TODO: We should update WCP config instead of a static file here\n await updateGatewayConfig({\n app: \"admin\",\n cwd: app.ctx.projectDir,\n env: app.ctx.env,\n variant: variant,\n domain: outputs[\"appDomain\"]\n });\n });\n }\n\n return {\n ...bucket,\n cloudfront\n };\n }\n});\n\nexport type AdminApp = InstanceType<typeof AdminApp>;\n\nexport function createAdminApp(config?: AdminAppConfig & ApplicationConfig<AdminApp>) {\n return createGenericApplication({\n id: \"admin\",\n name: \"admin\",\n description: \"Your project's admin area.\",\n cli: {\n // Default args for the \"yarn webiny watch ...\" command (we don't need deploy option while developing).\n watch: {\n deploy: false\n }\n },\n async app(ctx) {\n // Create the app instance.\n const app = new AdminApp(ctx);\n // Run the default application setup.\n await app.setup(config || {});\n // Run the custom user config.\n await config?.config?.(app, ctx);\n return app;\n },\n onBeforeBuild: config?.onBeforeBuild,\n onAfterBuild: config?.onAfterBuild,\n onBeforeDeploy: config?.onBeforeDeploy,\n onAfterDeploy: config?.onAfterDeploy\n });\n}\n"]}
|
package/apps/api/ApiApp.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { ApplicationConfig, ApplicationContext } from "@webiny/pulumi-sdk";
|
|
2
|
+
import { CustomDomainParams } from "../customDomain";
|
|
3
|
+
import { AppInput } from "../utils";
|
|
3
4
|
export interface ApiAppConfig {
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Enables or disables VPC for the API.
|
|
7
|
+
* For VPC to work you also have to enable it in the `storage` application.
|
|
8
|
+
*/
|
|
9
|
+
vpc?: AppInput<boolean | undefined>;
|
|
10
|
+
/** Custom domain configuration */
|
|
11
|
+
domain?(ctx: ApplicationContext): CustomDomainParams | undefined | void;
|
|
5
12
|
}
|
|
6
|
-
export declare const ApiApp: new (ctx: ApplicationContext) => PulumiApp<ApiAppConfig> & {
|
|
13
|
+
export declare const ApiApp: new (ctx: ApplicationContext) => import("@webiny/pulumi-sdk").PulumiApp<ApiAppConfig> & {
|
|
7
14
|
fileManager: {
|
|
8
15
|
functions: {
|
|
9
16
|
transform: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
|
|
@@ -12,16 +19,6 @@ export declare const ApiApp: new (ctx: ApplicationContext) => PulumiApp<ApiAppCo
|
|
|
12
19
|
};
|
|
13
20
|
bucketNotification: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/s3").BucketNotification>;
|
|
14
21
|
};
|
|
15
|
-
prerenderingService: {
|
|
16
|
-
functions: {
|
|
17
|
-
render: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
|
|
18
|
-
flush: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
|
|
19
|
-
queue: {
|
|
20
|
-
add: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
|
|
21
|
-
process: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
22
|
graphql: {
|
|
26
23
|
role: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/iam").Role>;
|
|
27
24
|
policy: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/iam").Policy>;
|
package/apps/api/ApiApp.js
CHANGED
|
@@ -8,11 +8,9 @@ exports.createApiApp = createApiApp;
|
|
|
8
8
|
|
|
9
9
|
var _pulumiSdk = require("@webiny/pulumi-sdk");
|
|
10
10
|
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
var _ApiVpc = require("./ApiVpc");
|
|
11
|
+
var _common = require("../common");
|
|
14
12
|
|
|
15
|
-
var
|
|
13
|
+
var _ApiGraphql = require("./ApiGraphql");
|
|
16
14
|
|
|
17
15
|
var _ApiFileManager = require("./ApiFileManager");
|
|
18
16
|
|
|
@@ -24,61 +22,42 @@ var _ApiGateway = require("./ApiGateway");
|
|
|
24
22
|
|
|
25
23
|
var _ApiCloudfront = require("./ApiCloudfront");
|
|
26
24
|
|
|
27
|
-
var
|
|
25
|
+
var _ApiApwScheduler = require("./ApiApwScheduler");
|
|
28
26
|
|
|
29
|
-
var
|
|
27
|
+
var _customDomain = require("../customDomain");
|
|
30
28
|
|
|
31
|
-
var
|
|
29
|
+
var _utils = require("../utils");
|
|
32
30
|
|
|
33
31
|
const ApiApp = (0, _pulumiSdk.defineApp)({
|
|
34
32
|
name: "Api",
|
|
35
33
|
|
|
36
34
|
async config(app, config) {
|
|
37
|
-
var _config$
|
|
35
|
+
var _config$domain;
|
|
38
36
|
|
|
39
|
-
//
|
|
40
|
-
// https://www.webiny.com/docs/how-to-guides/environment-variables/#debug-environment-variable
|
|
41
|
-
const DEBUG = String(process.env.DEBUG); // Enables logs forwarding.
|
|
37
|
+
// Enables logs forwarding.
|
|
42
38
|
// https://www.webiny.com/docs/how-to-guides/use-watch-command#enabling-logs-forwarding
|
|
39
|
+
const WEBINY_LOGS_FORWARD_URL = String(process.env.WEBINY_LOGS_FORWARD_URL); // Register storage output as a module available for all other modules
|
|
40
|
+
|
|
41
|
+
const storage = app.addModule(_common.StorageOutput); // Register VPC config module to be available to other modules
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const storage = (0, _getStorageOutput.getStorageOutput)(app);
|
|
48
|
-
const awsAccountId = (0, _awsUtils.getAwsAccountId)(app);
|
|
49
|
-
const awsRegion = (0, _awsUtils.getAwsRegion)(app);
|
|
43
|
+
app.addModule(_common.VpcConfig, {
|
|
44
|
+
enabled: (0, _utils.getAppInput)(app, config.vpc)
|
|
45
|
+
});
|
|
50
46
|
const pageBuilder = app.addModule(_ApiPageBuilder.ApiPageBuilder, {
|
|
51
47
|
env: {
|
|
52
48
|
COGNITO_REGION: String(process.env.AWS_REGION),
|
|
53
49
|
COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,
|
|
54
50
|
DB_TABLE: storage.primaryDynamodbTableName,
|
|
51
|
+
DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,
|
|
52
|
+
ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,
|
|
53
|
+
// Not required. Useful for testing purposes / ephemeral environments.
|
|
54
|
+
// https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments
|
|
55
|
+
ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,
|
|
55
56
|
S3_BUCKET: storage.fileManagerBucketId,
|
|
56
|
-
DEBUG,
|
|
57
57
|
WEBINY_LOGS_FORWARD_URL
|
|
58
|
-
}
|
|
59
|
-
awsRegion,
|
|
60
|
-
awsAccountId,
|
|
61
|
-
fileManagerBucketId: storage.fileManagerBucketId,
|
|
62
|
-
primaryDynamodbTableArn: storage.primaryDynamodbTableArn,
|
|
63
|
-
cognitoUserPoolArn: storage.cognitoUserPoolArn,
|
|
64
|
-
vpc
|
|
65
|
-
});
|
|
66
|
-
const fileManager = app.addModule(_ApiFileManager.ApiFileManager, {
|
|
67
|
-
fileManagerBucketId: storage.fileManagerBucketId,
|
|
68
|
-
vpc
|
|
69
|
-
});
|
|
70
|
-
const prerenderingService = (0, _ApiPrerendering.createPrerenderingService)(app, {
|
|
71
|
-
env: {
|
|
72
|
-
DB_TABLE: storage.primaryDynamodbTableName,
|
|
73
|
-
DEBUG
|
|
74
|
-
},
|
|
75
|
-
awsRegion,
|
|
76
|
-
awsAccountId,
|
|
77
|
-
primaryDynamodbTableArn: storage.primaryDynamodbTableArn,
|
|
78
|
-
fileManagerBucketId: storage.fileManagerBucketId,
|
|
79
|
-
cognitoUserPoolArn: storage.cognitoUserPoolArn,
|
|
80
|
-
vpc
|
|
58
|
+
}
|
|
81
59
|
});
|
|
60
|
+
const fileManager = app.addModule(_ApiFileManager.ApiFileManager);
|
|
82
61
|
const apwScheduler = app.addModule(_ApiApwScheduler.ApiApwScheduler, {
|
|
83
62
|
primaryDynamodbTableArn: storage.primaryDynamodbTableArn,
|
|
84
63
|
env: {
|
|
@@ -86,7 +65,6 @@ const ApiApp = (0, _pulumiSdk.defineApp)({
|
|
|
86
65
|
COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,
|
|
87
66
|
DB_TABLE: storage.primaryDynamodbTableName,
|
|
88
67
|
S3_BUCKET: storage.fileManagerBucketId,
|
|
89
|
-
DEBUG,
|
|
90
68
|
WEBINY_LOGS_FORWARD_URL
|
|
91
69
|
}
|
|
92
70
|
});
|
|
@@ -95,43 +73,37 @@ const ApiApp = (0, _pulumiSdk.defineApp)({
|
|
|
95
73
|
COGNITO_REGION: String(process.env.AWS_REGION),
|
|
96
74
|
COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,
|
|
97
75
|
DB_TABLE: storage.primaryDynamodbTableName,
|
|
76
|
+
DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,
|
|
77
|
+
ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,
|
|
78
|
+
// Not required. Useful for testing purposes / ephemeral environments.
|
|
79
|
+
// https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments
|
|
80
|
+
ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,
|
|
98
81
|
S3_BUCKET: storage.fileManagerBucketId,
|
|
99
|
-
|
|
100
|
-
PRERENDERING_FLUSH_HANDLER: prerenderingService.functions.flush.output.arn,
|
|
101
|
-
PRERENDERING_QUEUE_ADD_HANDLER: prerenderingService.functions.queue.add.output.arn,
|
|
102
|
-
PRERENDERING_QUEUE_PROCESS_HANDLER: prerenderingService.functions.queue.process.output.arn,
|
|
82
|
+
EVENT_BUS: storage.eventBusArn,
|
|
103
83
|
IMPORT_PAGES_CREATE_HANDLER: pageBuilder.importPages.functions.create.output.arn,
|
|
104
84
|
EXPORT_PAGES_PROCESS_HANDLER: pageBuilder.exportPages.functions.process.output.arn,
|
|
105
85
|
// TODO: move to okta plugin
|
|
106
86
|
OKTA_ISSUER: process.env["OKTA_ISSUER"],
|
|
107
|
-
DEBUG,
|
|
108
87
|
WEBINY_LOGS_FORWARD_URL
|
|
109
88
|
},
|
|
110
|
-
awsRegion,
|
|
111
|
-
awsAccountId,
|
|
112
|
-
primaryDynamodbTableArn: storage.primaryDynamodbTableArn,
|
|
113
|
-
primaryDynamodbTableName: storage.primaryDynamodbTableName,
|
|
114
|
-
primaryDynamodbTableHashKey: storage.primaryDynamodbTableHashKey,
|
|
115
|
-
primaryDynamodbTableRangeKey: storage.primaryDynamodbTableRangeKey,
|
|
116
|
-
fileManagerBucketId: storage.fileManagerBucketId,
|
|
117
|
-
cognitoUserPoolArn: storage.cognitoUserPoolArn,
|
|
118
89
|
apwSchedulerEventRule: apwScheduler.eventRule.output,
|
|
119
|
-
apwSchedulerEventTarget: apwScheduler.eventTarget.output
|
|
120
|
-
vpc
|
|
90
|
+
apwSchedulerEventTarget: apwScheduler.eventTarget.output
|
|
121
91
|
});
|
|
122
92
|
const headlessCms = app.addModule(_ApiHeadlessCMS.ApiHeadlessCMS, {
|
|
123
93
|
env: {
|
|
124
94
|
COGNITO_REGION: String(process.env.AWS_REGION),
|
|
125
95
|
COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,
|
|
126
96
|
DB_TABLE: storage.primaryDynamodbTableName,
|
|
97
|
+
DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,
|
|
98
|
+
ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,
|
|
99
|
+
// Not required. Useful for testing purposes / ephemeral environments.
|
|
100
|
+
// https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments
|
|
101
|
+
ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,
|
|
127
102
|
S3_BUCKET: storage.fileManagerBucketId,
|
|
128
103
|
// TODO: move to okta plugin
|
|
129
104
|
OKTA_ISSUER: process.env["OKTA_ISSUER"],
|
|
130
|
-
DEBUG,
|
|
131
105
|
WEBINY_LOGS_FORWARD_URL
|
|
132
|
-
}
|
|
133
|
-
primaryDynamodbTableArn: storage.primaryDynamodbTableArn,
|
|
134
|
-
vpc
|
|
106
|
+
}
|
|
135
107
|
});
|
|
136
108
|
const apiGateway = app.addModule(_ApiGateway.ApiGateway, {
|
|
137
109
|
"graphql-post": {
|
|
@@ -161,24 +133,47 @@ const ApiApp = (0, _pulumiSdk.defineApp)({
|
|
|
161
133
|
}
|
|
162
134
|
});
|
|
163
135
|
const cloudfront = app.addModule(_ApiCloudfront.ApiCloudfront);
|
|
136
|
+
const domain = (_config$domain = config.domain) === null || _config$domain === void 0 ? void 0 : _config$domain.call(config, app.ctx);
|
|
137
|
+
|
|
138
|
+
if (domain) {
|
|
139
|
+
(0, _customDomain.applyCustomDomain)(cloudfront, domain);
|
|
140
|
+
}
|
|
141
|
+
|
|
164
142
|
app.addOutputs({
|
|
165
143
|
region: process.env.AWS_REGION,
|
|
166
144
|
apiUrl: cloudfront.output.domainName.apply(value => `https://${value}`),
|
|
145
|
+
apiDomain: cloudfront.output.domainName,
|
|
167
146
|
cognitoUserPoolId: storage.cognitoUserPoolId,
|
|
168
147
|
cognitoAppClientId: storage.cognitoAppClientId,
|
|
169
148
|
cognitoUserPoolPasswordPolicy: storage.cognitoUserPoolPasswordPolicy,
|
|
170
|
-
updatePbSettingsFunction: pageBuilder.updateSettings.functions.update.output.arn,
|
|
171
|
-
psQueueAdd: prerenderingService.functions.queue.add.output.arn,
|
|
172
|
-
psQueueProcess: prerenderingService.functions.queue.process.output.arn,
|
|
173
149
|
apwSchedulerScheduleAction: apwScheduler.scheduleAction.lambda.output.arn,
|
|
174
150
|
apwSchedulerExecuteAction: apwScheduler.executeAction.lambda.output.arn,
|
|
175
151
|
apwSchedulerEventRule: apwScheduler.eventRule.output.name,
|
|
176
152
|
apwSchedulerEventTargetId: apwScheduler.eventTarget.output.targetId,
|
|
177
|
-
dynamoDbTable: storage.primaryDynamodbTableName
|
|
178
|
-
|
|
153
|
+
dynamoDbTable: storage.primaryDynamodbTableName,
|
|
154
|
+
dynamoDbElasticsearchTable: storage.elasticsearchDynamodbTableName
|
|
155
|
+
}); // Update variant gateway configuration.
|
|
156
|
+
|
|
157
|
+
const variant = app.ctx.variant;
|
|
158
|
+
|
|
159
|
+
if (variant) {
|
|
160
|
+
app.onAfterDeploy(async ({
|
|
161
|
+
outputs
|
|
162
|
+
}) => {
|
|
163
|
+
// After deployment is made we update a static JSON file with a variant configuration.
|
|
164
|
+
// TODO: We should update WCP config instead of a static file here
|
|
165
|
+
await (0, _pulumiSdk.updateGatewayConfig)({
|
|
166
|
+
app: "api",
|
|
167
|
+
cwd: app.ctx.projectDir,
|
|
168
|
+
env: app.ctx.env,
|
|
169
|
+
variant: variant,
|
|
170
|
+
domain: outputs["apiDomain"]
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
179
175
|
return {
|
|
180
176
|
fileManager,
|
|
181
|
-
prerenderingService,
|
|
182
177
|
graphql,
|
|
183
178
|
headlessCms,
|
|
184
179
|
apiGateway,
|
package/apps/api/ApiApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ApiApp.ts"],"names":["ApiApp","name","config","app","DEBUG","String","process","env","WEBINY_LOGS_FORWARD_URL","vpcConfig","vpc","ctx","undefined","storage","awsAccountId","awsRegion","pageBuilder","addModule","ApiPageBuilder","COGNITO_REGION","AWS_REGION","COGNITO_USER_POOL_ID","cognitoUserPoolId","DB_TABLE","primaryDynamodbTableName","S3_BUCKET","fileManagerBucketId","primaryDynamodbTableArn","cognitoUserPoolArn","fileManager","ApiFileManager","prerenderingService","apwScheduler","ApiApwScheduler","graphql","ApiGraphql","PRERENDERING_RENDER_HANDLER","functions","render","output","arn","PRERENDERING_FLUSH_HANDLER","flush","PRERENDERING_QUEUE_ADD_HANDLER","queue","add","PRERENDERING_QUEUE_PROCESS_HANDLER","IMPORT_PAGES_CREATE_HANDLER","importPages","create","EXPORT_PAGES_PROCESS_HANDLER","exportPages","OKTA_ISSUER","primaryDynamodbTableHashKey","primaryDynamodbTableRangeKey","apwSchedulerEventRule","eventRule","apwSchedulerEventTarget","eventTarget","headlessCms","ApiHeadlessCMS","apiGateway","ApiGateway","path","method","function","download","cloudfront","ApiCloudfront","addOutputs","region","apiUrl","domainName","apply","value","cognitoAppClientId","cognitoUserPoolPasswordPolicy","updatePbSettingsFunction","updateSettings","update","psQueueAdd","psQueueProcess","apwSchedulerScheduleAction","scheduleAction","lambda","apwSchedulerExecuteAction","executeAction","apwSchedulerEventTargetId","targetId","dynamoDbTable","createApiApp","id","description","cli","watch","depth","setup","onBeforeBuild","onAfterBuild","onBeforeDeploy","onAfterDeploy"],"mappings":"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","sourcesContent":["import {\n defineApp,\n createGenericApplication,\n ApplicationContext,\n PulumiApp,\n ApplicationConfig\n} from \"@webiny/pulumi-sdk\";\n\nimport { ApiGraphql } from \"./ApiGraphql\";\nimport { createVpc, Vpc } from \"./ApiVpc\";\nimport { createPrerenderingService } from \"./ApiPrerendering\";\nimport { ApiFileManager } from \"./ApiFileManager\";\nimport { ApiPageBuilder } from \"./ApiPageBuilder\";\nimport { ApiHeadlessCMS } from \"./ApiHeadlessCMS\";\nimport { ApiGateway } from \"./ApiGateway\";\nimport { ApiCloudfront } from \"./ApiCloudfront\";\nimport { getStorageOutput } from \"../getStorageOutput\";\nimport { getAwsAccountId, getAwsRegion } from \"../awsUtils\";\nimport { ApiApwScheduler } from \"./ApiApwScheduler\";\n\nexport interface ApiAppConfig {\n vpc?(app: PulumiApp, ctx: ApplicationContext): boolean | Vpc;\n}\n\nexport const ApiApp = defineApp({\n name: \"Api\",\n async config(app, config: ApiAppConfig) {\n // Among other things, this determines the amount of information we reveal on runtime errors.\n // https://www.webiny.com/docs/how-to-guides/environment-variables/#debug-environment-variable\n const DEBUG = String(process.env.DEBUG);\n\n // Enables logs forwarding.\n // https://www.webiny.com/docs/how-to-guides/use-watch-command#enabling-logs-forwarding\n const WEBINY_LOGS_FORWARD_URL = String(process.env.WEBINY_LOGS_FORWARD_URL);\n\n const vpcConfig = config.vpc?.(app, app.ctx) ?? app.ctx.env !== \"dev\";\n const vpc =\n vpcConfig === true ? createVpc(app) : vpcConfig === false ? undefined : vpcConfig;\n\n const storage = getStorageOutput(app);\n const awsAccountId = getAwsAccountId(app);\n const awsRegion = getAwsRegion(app);\n\n const pageBuilder = app.addModule(ApiPageBuilder, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n S3_BUCKET: storage.fileManagerBucketId,\n DEBUG,\n WEBINY_LOGS_FORWARD_URL\n },\n awsRegion,\n awsAccountId,\n fileManagerBucketId: storage.fileManagerBucketId,\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n cognitoUserPoolArn: storage.cognitoUserPoolArn,\n vpc\n });\n\n const fileManager = app.addModule(ApiFileManager, {\n fileManagerBucketId: storage.fileManagerBucketId,\n vpc\n });\n\n const prerenderingService = createPrerenderingService(app, {\n env: {\n DB_TABLE: storage.primaryDynamodbTableName,\n DEBUG\n },\n awsRegion,\n awsAccountId,\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n fileManagerBucketId: storage.fileManagerBucketId,\n cognitoUserPoolArn: storage.cognitoUserPoolArn,\n vpc\n });\n\n const apwScheduler = app.addModule(ApiApwScheduler, {\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n S3_BUCKET: storage.fileManagerBucketId,\n DEBUG,\n WEBINY_LOGS_FORWARD_URL\n }\n });\n\n const graphql = app.addModule(ApiGraphql, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n S3_BUCKET: storage.fileManagerBucketId,\n\n PRERENDERING_RENDER_HANDLER: prerenderingService.functions.render.output.arn,\n PRERENDERING_FLUSH_HANDLER: prerenderingService.functions.flush.output.arn,\n PRERENDERING_QUEUE_ADD_HANDLER: prerenderingService.functions.queue.add.output.arn,\n PRERENDERING_QUEUE_PROCESS_HANDLER:\n prerenderingService.functions.queue.process.output.arn,\n IMPORT_PAGES_CREATE_HANDLER: pageBuilder.importPages.functions.create.output.arn,\n EXPORT_PAGES_PROCESS_HANDLER: pageBuilder.exportPages.functions.process.output.arn,\n // TODO: move to okta plugin\n OKTA_ISSUER: process.env[\"OKTA_ISSUER\"],\n DEBUG,\n WEBINY_LOGS_FORWARD_URL\n },\n awsRegion,\n awsAccountId,\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n primaryDynamodbTableName: storage.primaryDynamodbTableName,\n primaryDynamodbTableHashKey: storage.primaryDynamodbTableHashKey,\n primaryDynamodbTableRangeKey: storage.primaryDynamodbTableRangeKey,\n fileManagerBucketId: storage.fileManagerBucketId,\n cognitoUserPoolArn: storage.cognitoUserPoolArn,\n apwSchedulerEventRule: apwScheduler.eventRule.output,\n apwSchedulerEventTarget: apwScheduler.eventTarget.output,\n vpc\n });\n\n const headlessCms = app.addModule(ApiHeadlessCMS, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n S3_BUCKET: storage.fileManagerBucketId,\n // TODO: move to okta plugin\n OKTA_ISSUER: process.env[\"OKTA_ISSUER\"],\n DEBUG,\n WEBINY_LOGS_FORWARD_URL\n },\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n vpc\n });\n\n const apiGateway = app.addModule(ApiGateway, {\n \"graphql-post\": {\n path: \"/graphql\",\n method: \"POST\",\n function: graphql.functions.graphql.output.arn\n },\n \"graphql-options\": {\n path: \"/graphql\",\n method: \"OPTIONS\",\n function: graphql.functions.graphql.output.arn\n },\n \"files-any\": {\n path: \"/files/{path}\",\n method: \"ANY\",\n function: fileManager.functions.download.output.arn\n },\n \"cms-post\": {\n path: \"/cms/{key+}\",\n method: \"POST\",\n function: headlessCms.functions.graphql.output.arn\n },\n \"cms-options\": {\n path: \"/cms/{key+}\",\n method: \"OPTIONS\",\n function: headlessCms.functions.graphql.output.arn\n }\n });\n\n const cloudfront = app.addModule(ApiCloudfront);\n\n app.addOutputs({\n region: process.env.AWS_REGION,\n apiUrl: cloudfront.output.domainName.apply(value => `https://${value}`),\n cognitoUserPoolId: storage.cognitoUserPoolId,\n cognitoAppClientId: storage.cognitoAppClientId,\n cognitoUserPoolPasswordPolicy: storage.cognitoUserPoolPasswordPolicy,\n updatePbSettingsFunction: pageBuilder.updateSettings.functions.update.output.arn,\n psQueueAdd: prerenderingService.functions.queue.add.output.arn,\n psQueueProcess: prerenderingService.functions.queue.process.output.arn,\n apwSchedulerScheduleAction: apwScheduler.scheduleAction.lambda.output.arn,\n apwSchedulerExecuteAction: apwScheduler.executeAction.lambda.output.arn,\n apwSchedulerEventRule: apwScheduler.eventRule.output.name,\n apwSchedulerEventTargetId: apwScheduler.eventTarget.output.targetId,\n dynamoDbTable: storage.primaryDynamodbTableName\n });\n\n return {\n fileManager,\n prerenderingService,\n graphql,\n headlessCms,\n apiGateway,\n cloudfront,\n apwScheduler\n };\n }\n});\n\nexport type ApiApp = InstanceType<typeof ApiApp>;\n\nexport function createApiApp(config?: ApiAppConfig & ApplicationConfig<ApiApp>) {\n return createGenericApplication({\n id: \"api\",\n name: \"api\",\n description:\n \"Represents cloud infrastructure needed for supporting your project's (GraphQL) API.\",\n cli: {\n // Default args for the \"yarn webiny watch ...\" command.\n watch: {\n // Watch five levels of dependencies, starting from this project application.\n depth: 5\n }\n },\n async app(ctx) {\n // Create the app instance.\n const app = new ApiApp(ctx);\n // Run the default application setup.\n await app.setup(config || {});\n // Run the custom user config.\n await config?.config?.(app, ctx);\n return app;\n },\n onBeforeBuild: config?.onBeforeBuild,\n onAfterBuild: config?.onAfterBuild,\n onBeforeDeploy: config?.onBeforeDeploy,\n onAfterDeploy: config?.onAfterDeploy\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["ApiApp.ts"],"names":["ApiApp","name","config","app","WEBINY_LOGS_FORWARD_URL","String","process","env","storage","addModule","StorageOutput","VpcConfig","enabled","vpc","pageBuilder","ApiPageBuilder","COGNITO_REGION","AWS_REGION","COGNITO_USER_POOL_ID","cognitoUserPoolId","DB_TABLE","primaryDynamodbTableName","DB_TABLE_ELASTICSEARCH","elasticsearchDynamodbTableName","ELASTIC_SEARCH_ENDPOINT","elasticsearchDomainEndpoint","ELASTIC_SEARCH_INDEX_PREFIX","S3_BUCKET","fileManagerBucketId","fileManager","ApiFileManager","apwScheduler","ApiApwScheduler","primaryDynamodbTableArn","graphql","ApiGraphql","EVENT_BUS","eventBusArn","IMPORT_PAGES_CREATE_HANDLER","importPages","functions","create","output","arn","EXPORT_PAGES_PROCESS_HANDLER","exportPages","OKTA_ISSUER","apwSchedulerEventRule","eventRule","apwSchedulerEventTarget","eventTarget","headlessCms","ApiHeadlessCMS","apiGateway","ApiGateway","path","method","function","download","cloudfront","ApiCloudfront","domain","ctx","addOutputs","region","apiUrl","domainName","apply","value","apiDomain","cognitoAppClientId","cognitoUserPoolPasswordPolicy","apwSchedulerScheduleAction","scheduleAction","lambda","apwSchedulerExecuteAction","executeAction","apwSchedulerEventTargetId","targetId","dynamoDbTable","dynamoDbElasticsearchTable","variant","onAfterDeploy","outputs","cwd","projectDir","createApiApp","id","description","cli","watch","depth","setup","onBeforeBuild","onAfterBuild","onBeforeDeploy"],"mappings":"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","sourcesContent":["import {\n defineApp,\n createGenericApplication,\n ApplicationConfig,\n ApplicationContext\n} from \"@webiny/pulumi-sdk\";\nimport { updateGatewayConfig } from \"@webiny/pulumi-sdk\";\n\nimport { StorageOutput, VpcConfig } from \"../common\";\nimport { ApiGraphql } from \"./ApiGraphql\";\nimport { ApiFileManager } from \"./ApiFileManager\";\nimport { ApiPageBuilder } from \"./ApiPageBuilder\";\nimport { ApiHeadlessCMS } from \"./ApiHeadlessCMS\";\nimport { ApiGateway } from \"./ApiGateway\";\nimport { ApiCloudfront } from \"./ApiCloudfront\";\nimport { ApiApwScheduler } from \"./ApiApwScheduler\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { AppInput, getAppInput } from \"../utils\";\n\nexport interface ApiAppConfig {\n /**\n * Enables or disables VPC for the API.\n * For VPC to work you also have to enable it in the `storage` application.\n */\n vpc?: AppInput<boolean | undefined>;\n /** Custom domain configuration */\n domain?(ctx: ApplicationContext): CustomDomainParams | undefined | void;\n}\n\nexport const ApiApp = defineApp({\n name: \"Api\",\n async config(app, config: ApiAppConfig) {\n // Enables logs forwarding.\n // https://www.webiny.com/docs/how-to-guides/use-watch-command#enabling-logs-forwarding\n const WEBINY_LOGS_FORWARD_URL = String(process.env.WEBINY_LOGS_FORWARD_URL);\n\n // Register storage output as a module available for all other modules\n const storage = app.addModule(StorageOutput);\n\n // Register VPC config module to be available to other modules\n app.addModule(VpcConfig, {\n enabled: getAppInput(app, config.vpc)\n });\n\n const pageBuilder = app.addModule(ApiPageBuilder, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,\n\n // Not required. Useful for testing purposes / ephemeral environments.\n // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments\n ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,\n\n S3_BUCKET: storage.fileManagerBucketId,\n WEBINY_LOGS_FORWARD_URL\n }\n });\n\n const fileManager = app.addModule(ApiFileManager);\n\n const apwScheduler = app.addModule(ApiApwScheduler, {\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n S3_BUCKET: storage.fileManagerBucketId,\n WEBINY_LOGS_FORWARD_URL\n }\n });\n\n const graphql = app.addModule(ApiGraphql, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,\n\n // Not required. Useful for testing purposes / ephemeral environments.\n // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments\n ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,\n\n S3_BUCKET: storage.fileManagerBucketId,\n EVENT_BUS: storage.eventBusArn,\n IMPORT_PAGES_CREATE_HANDLER: pageBuilder.importPages.functions.create.output.arn,\n EXPORT_PAGES_PROCESS_HANDLER: pageBuilder.exportPages.functions.process.output.arn,\n // TODO: move to okta plugin\n OKTA_ISSUER: process.env[\"OKTA_ISSUER\"],\n WEBINY_LOGS_FORWARD_URL\n },\n apwSchedulerEventRule: apwScheduler.eventRule.output,\n apwSchedulerEventTarget: apwScheduler.eventTarget.output\n });\n\n const headlessCms = app.addModule(ApiHeadlessCMS, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,\n\n // Not required. Useful for testing purposes / ephemeral environments.\n // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments\n ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,\n\n S3_BUCKET: storage.fileManagerBucketId,\n // TODO: move to okta plugin\n OKTA_ISSUER: process.env[\"OKTA_ISSUER\"],\n WEBINY_LOGS_FORWARD_URL\n }\n });\n\n const apiGateway = app.addModule(ApiGateway, {\n \"graphql-post\": {\n path: \"/graphql\",\n method: \"POST\",\n function: graphql.functions.graphql.output.arn\n },\n \"graphql-options\": {\n path: \"/graphql\",\n method: \"OPTIONS\",\n function: graphql.functions.graphql.output.arn\n },\n \"files-any\": {\n path: \"/files/{path}\",\n method: \"ANY\",\n function: fileManager.functions.download.output.arn\n },\n \"cms-post\": {\n path: \"/cms/{key+}\",\n method: \"POST\",\n function: headlessCms.functions.graphql.output.arn\n },\n \"cms-options\": {\n path: \"/cms/{key+}\",\n method: \"OPTIONS\",\n function: headlessCms.functions.graphql.output.arn\n }\n });\n\n const cloudfront = app.addModule(ApiCloudfront);\n\n const domain = config.domain?.(app.ctx);\n if (domain) {\n applyCustomDomain(cloudfront, domain);\n }\n\n app.addOutputs({\n region: process.env.AWS_REGION,\n apiUrl: cloudfront.output.domainName.apply(value => `https://${value}`),\n apiDomain: cloudfront.output.domainName,\n cognitoUserPoolId: storage.cognitoUserPoolId,\n cognitoAppClientId: storage.cognitoAppClientId,\n cognitoUserPoolPasswordPolicy: storage.cognitoUserPoolPasswordPolicy,\n apwSchedulerScheduleAction: apwScheduler.scheduleAction.lambda.output.arn,\n apwSchedulerExecuteAction: apwScheduler.executeAction.lambda.output.arn,\n apwSchedulerEventRule: apwScheduler.eventRule.output.name,\n apwSchedulerEventTargetId: apwScheduler.eventTarget.output.targetId,\n dynamoDbTable: storage.primaryDynamodbTableName,\n dynamoDbElasticsearchTable: storage.elasticsearchDynamodbTableName\n });\n\n // Update variant gateway configuration.\n const variant = app.ctx.variant;\n if (variant) {\n app.onAfterDeploy(async ({ outputs }) => {\n // After deployment is made we update a static JSON file with a variant configuration.\n // TODO: We should update WCP config instead of a static file here\n await updateGatewayConfig({\n app: \"api\",\n cwd: app.ctx.projectDir,\n env: app.ctx.env,\n variant: variant,\n domain: outputs[\"apiDomain\"]\n });\n });\n }\n\n return {\n fileManager,\n graphql,\n headlessCms,\n apiGateway,\n cloudfront,\n apwScheduler\n };\n }\n});\n\nexport type ApiApp = InstanceType<typeof ApiApp>;\n\nexport function createApiApp(config?: ApiAppConfig & ApplicationConfig<ApiApp>) {\n return createGenericApplication({\n id: \"api\",\n name: \"api\",\n description:\n \"Represents cloud infrastructure needed for supporting your project's (GraphQL) API.\",\n cli: {\n // Default args for the \"yarn webiny watch ...\" command.\n watch: {\n // Watch five levels of dependencies, starting from this project application.\n depth: 5\n }\n },\n async app(ctx) {\n // Create the app instance.\n const app = new ApiApp(ctx);\n // Run the default application setup.\n await app.setup(config || {});\n // Run the custom user config.\n await config?.config?.(app, ctx);\n return app;\n },\n onBeforeBuild: config?.onBeforeBuild,\n onAfterBuild: config?.onAfterBuild,\n onBeforeDeploy: config?.onBeforeDeploy,\n onAfterDeploy: config?.onAfterDeploy\n });\n}\n"]}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import * as pulumi from "@pulumi/pulumi";
|
|
2
1
|
import * as aws from "@pulumi/aws";
|
|
3
2
|
import { PulumiAppModule } from "@webiny/pulumi-sdk";
|
|
4
3
|
interface ScheduleActionParams {
|
|
5
4
|
env: Record<string, any>;
|
|
6
|
-
primaryDynamodbTableArn: pulumi.Input<string>;
|
|
7
5
|
}
|
|
8
6
|
export declare type ApiApwScheduler = PulumiAppModule<typeof ApiApwScheduler>;
|
|
9
7
|
export declare const ApiApwScheduler: import("@webiny/pulumi-sdk").PulumiAppModuleDefinition<{
|
|
@@ -17,6 +17,10 @@ var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
|
17
17
|
|
|
18
18
|
var _pulumiSdk = require("@webiny/pulumi-sdk");
|
|
19
19
|
|
|
20
|
+
var _common = require("../common");
|
|
21
|
+
|
|
22
|
+
var _lambdaUtils = require("../lambdaUtils");
|
|
23
|
+
|
|
20
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
25
|
|
|
22
26
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -90,7 +94,7 @@ function createExecuteActionLambda(app, params) {
|
|
|
90
94
|
}
|
|
91
95
|
}
|
|
92
96
|
});
|
|
93
|
-
const policy = createExecuteActionLambdaPolicy(app
|
|
97
|
+
const policy = createExecuteActionLambdaPolicy(app);
|
|
94
98
|
app.addResource(aws.iam.RolePolicyAttachment, {
|
|
95
99
|
name: `${EXECUTE_ACTION_LAMBDA}-role-policy-attachment`,
|
|
96
100
|
config: {
|
|
@@ -118,7 +122,7 @@ function createExecuteActionLambda(app, params) {
|
|
|
118
122
|
".": new pulumi.asset.FileArchive(_path.default.join(app.ctx.appDir, "code/apw/executeAction/build"))
|
|
119
123
|
}),
|
|
120
124
|
environment: {
|
|
121
|
-
variables: _objectSpread({}, params.env)
|
|
125
|
+
variables: _objectSpread(_objectSpread({}, (0, _lambdaUtils.getCommonLambdaEnvVariables)(app)), params.env)
|
|
122
126
|
}
|
|
123
127
|
}
|
|
124
128
|
});
|
|
@@ -129,7 +133,8 @@ function createExecuteActionLambda(app, params) {
|
|
|
129
133
|
};
|
|
130
134
|
}
|
|
131
135
|
|
|
132
|
-
function createExecuteActionLambdaPolicy(app
|
|
136
|
+
function createExecuteActionLambdaPolicy(app) {
|
|
137
|
+
const storage = app.getModule(_common.StorageOutput);
|
|
133
138
|
return app.addResource(aws.iam.Policy, {
|
|
134
139
|
name: "ApwSchedulerExecuteActionLambdaPolicy",
|
|
135
140
|
config: {
|
|
@@ -145,7 +150,7 @@ function createExecuteActionLambdaPolicy(app, params) {
|
|
|
145
150
|
Sid: "PermissionDynamoDB",
|
|
146
151
|
Effect: "Allow",
|
|
147
152
|
Action: ["dynamodb:Query", "dynamodb:GetItem", "dynamodb:DeleteItem"],
|
|
148
|
-
Resource: [pulumi.interpolate`${
|
|
153
|
+
Resource: [pulumi.interpolate`${storage.primaryDynamodbTableArn}`, pulumi.interpolate`${storage.primaryDynamodbTableArn}/*`]
|
|
149
154
|
}]
|
|
150
155
|
}
|
|
151
156
|
}
|
|
@@ -168,7 +173,7 @@ function createScheduleActionLambda(app, executeLambda, params) {
|
|
|
168
173
|
}
|
|
169
174
|
}
|
|
170
175
|
});
|
|
171
|
-
const policy = createScheduleActionLambdaPolicy(app
|
|
176
|
+
const policy = createScheduleActionLambdaPolicy(app);
|
|
172
177
|
app.addResource(aws.iam.RolePolicyAttachment, {
|
|
173
178
|
name: `${CREATE_RULE_LAMBDA}-role-policy-attachment`,
|
|
174
179
|
config: {
|
|
@@ -196,7 +201,7 @@ function createScheduleActionLambda(app, executeLambda, params) {
|
|
|
196
201
|
".": new pulumi.asset.FileArchive(_path.default.join(app.ctx.appDir, "code/apw/scheduleAction/build"))
|
|
197
202
|
}),
|
|
198
203
|
environment: {
|
|
199
|
-
variables: _objectSpread(_objectSpread({}, params.env), {}, {
|
|
204
|
+
variables: _objectSpread(_objectSpread(_objectSpread({}, (0, _lambdaUtils.getCommonLambdaEnvVariables)(app)), params.env), {}, {
|
|
200
205
|
APW_SCHEDULER_EXECUTE_ACTION_HANDLER: executeLambda.arn // RULE_NAME: this.eventRule.name.apply(name => name),
|
|
201
206
|
// RULE_TARGET_ID: this.eventTarget.targetId.apply(id => id)
|
|
202
207
|
|
|
@@ -211,7 +216,8 @@ function createScheduleActionLambda(app, executeLambda, params) {
|
|
|
211
216
|
};
|
|
212
217
|
}
|
|
213
218
|
|
|
214
|
-
function createScheduleActionLambdaPolicy(app
|
|
219
|
+
function createScheduleActionLambdaPolicy(app) {
|
|
220
|
+
const storage = app.getModule(_common.StorageOutput);
|
|
215
221
|
return app.addResource(aws.iam.Policy, {
|
|
216
222
|
name: "ApwSchedulerScheduleActionLambdaPolicy",
|
|
217
223
|
config: {
|
|
@@ -227,7 +233,7 @@ function createScheduleActionLambdaPolicy(app, params) {
|
|
|
227
233
|
Sid: "PermissionDynamoDB",
|
|
228
234
|
Effect: "Allow",
|
|
229
235
|
Action: ["dynamodb:PutItem", "dynamodb:Query", "dynamodb:GetItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem"],
|
|
230
|
-
Resource: [pulumi.interpolate`${
|
|
236
|
+
Resource: [pulumi.interpolate`${storage.primaryDynamodbTableArn}`, pulumi.interpolate`${storage.primaryDynamodbTableArn}/*`]
|
|
231
237
|
}, {
|
|
232
238
|
Sid: "PermissionEvents",
|
|
233
239
|
Effect: "Allow",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ApiApwScheduler.ts"],"names":["LAMBDA_NAME_PREFIX","CREATE_RULE_LAMBDA","EXECUTE_ACTION_LAMBDA","EVENT_RULE_NAME","EVENT_RULE_TARGET","ApiApwScheduler","name","config","app","params","executeAction","createExecuteActionLambda","scheduleAction","createScheduleActionLambda","lambda","output","eventRule","addResource","aws","cloudwatch","EventRule","description","scheduleExpression","isEnabled","Permission","action","function","arn","principal","statementId","eventTarget","EventTarget","rule","role","iam","Role","assumeRolePolicy","Version","Statement","Action","Principal","Service","Effect","policy","createExecuteActionLambdaPolicy","RolePolicyAttachment","policyArn","ManagedPolicy","AWSLambdaBasicExecutionRole","Function","runtime","handler","timeout","memorySize","code","pulumi","asset","AssetArchive","FileArchive","path","join","ctx","appDir","environment","variables","env","Policy","Sid","Resource","interpolate","primaryDynamodbTableArn","executeLambda","createScheduleActionLambdaPolicy","APW_SCHEDULER_EXECUTE_ACTION_HANDLER"],"mappings":"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","sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { defineAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi-sdk\";\n\ninterface ScheduleActionParams {\n env: Record<string, any>;\n primaryDynamodbTableArn: pulumi.Input<string>;\n}\n\nconst LAMBDA_NAME_PREFIX = \"apw-scheduler\";\nconst CREATE_RULE_LAMBDA = `${LAMBDA_NAME_PREFIX}-schedule-action-lambda`;\nconst EXECUTE_ACTION_LAMBDA = `${LAMBDA_NAME_PREFIX}-execute-action-lambda`;\nconst EVENT_RULE_NAME = `${LAMBDA_NAME_PREFIX}-event-rule`;\nconst EVENT_RULE_TARGET = `${LAMBDA_NAME_PREFIX}-event-rule-target`;\n\nexport type ApiApwScheduler = PulumiAppModule<typeof ApiApwScheduler>;\n\nexport const ApiApwScheduler = defineAppModule({\n name: \"ApiApwScheduler\",\n config(app: PulumiApp, params: ScheduleActionParams) {\n const executeAction = createExecuteActionLambda(app, params);\n const scheduleAction = createScheduleActionLambda(app, executeAction.lambda.output, params);\n\n // Create event rule.\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: EVENT_RULE_NAME,\n config: {\n description: `Enable us to schedule an action in publishing workflow at a particular datetime`,\n scheduleExpression: \"cron(* * * * ? 2000)\",\n isEnabled: true\n }\n });\n\n // Add required permission to the target lambda.\n app.addResource(aws.lambda.Permission, {\n name: \"eventTargetPermission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: scheduleAction.lambda.output.arn,\n principal: \"events.amazonaws.com\",\n statementId: \"allow-rule-invoke-\" + EVENT_RULE_NAME\n }\n });\n\n // Add lambda as target to the event rule.\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: EVENT_RULE_TARGET,\n config: {\n rule: eventRule.output.name,\n arn: scheduleAction.lambda.output.arn\n }\n });\n\n return {\n executeAction,\n scheduleAction,\n eventRule,\n eventTarget\n };\n }\n});\n\nfunction createExecuteActionLambda(app: PulumiApp, params: ScheduleActionParams) {\n const role = app.addResource(aws.iam.Role, {\n name: `${EXECUTE_ACTION_LAMBDA}-role`,\n config: {\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"lambda.amazonaws.com\"\n },\n Effect: \"Allow\"\n }\n ]\n }\n }\n });\n\n const policy = createExecuteActionLambdaPolicy(app, params);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: EXECUTE_ACTION_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle execute action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.ctx.appDir, \"code/apw/executeAction/build\")\n )\n }),\n environment: {\n variables: {\n ...params.env\n }\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createExecuteActionLambdaPolicy(app: PulumiApp, params: ScheduleActionParams) {\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerExecuteActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\"dynamodb:Query\", \"dynamodb:GetItem\", \"dynamodb:DeleteItem\"],\n Resource: [\n pulumi.interpolate`${params.primaryDynamodbTableArn}`,\n pulumi.interpolate`${params.primaryDynamodbTableArn}/*`\n ]\n }\n ]\n }\n }\n });\n}\n\nfunction createScheduleActionLambda(\n app: PulumiApp,\n executeLambda: pulumi.Output<aws.lambda.Function>,\n params: ScheduleActionParams\n) {\n const role = app.addResource(aws.iam.Role, {\n name: `${CREATE_RULE_LAMBDA}-role`,\n config: {\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"lambda.amazonaws.com\"\n },\n Effect: \"Allow\"\n }\n ]\n }\n }\n });\n\n const policy = createScheduleActionLambdaPolicy(app, params);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: CREATE_RULE_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle schedule action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.ctx.appDir, \"code/apw/scheduleAction/build\")\n )\n }),\n environment: {\n variables: {\n ...params.env,\n APW_SCHEDULER_EXECUTE_ACTION_HANDLER: executeLambda.arn\n // RULE_NAME: this.eventRule.name.apply(name => name),\n // RULE_TARGET_ID: this.eventTarget.targetId.apply(id => id)\n }\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createScheduleActionLambdaPolicy(app: PulumiApp, params: ScheduleActionParams) {\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerScheduleActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:GetItem\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:DeleteItem\"\n ],\n Resource: [\n pulumi.interpolate`${params.primaryDynamodbTableArn}`,\n pulumi.interpolate`${params.primaryDynamodbTableArn}/*`\n ]\n },\n {\n Sid: \"PermissionEvents\",\n Effect: \"Allow\",\n Action: [\n \"events:DeleteRule\",\n \"events:PutTargets\",\n \"events:PutRule\",\n \"events:ListRules\",\n \"events:RemoveTargets\",\n \"events:ListTargetsByRule\"\n ],\n Resource: [\"*\"]\n }\n ]\n }\n }\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["ApiApwScheduler.ts"],"names":["LAMBDA_NAME_PREFIX","CREATE_RULE_LAMBDA","EXECUTE_ACTION_LAMBDA","EVENT_RULE_NAME","EVENT_RULE_TARGET","ApiApwScheduler","name","config","app","params","executeAction","createExecuteActionLambda","scheduleAction","createScheduleActionLambda","lambda","output","eventRule","addResource","aws","cloudwatch","EventRule","description","scheduleExpression","isEnabled","Permission","action","function","arn","principal","statementId","eventTarget","EventTarget","rule","role","iam","Role","assumeRolePolicy","Version","Statement","Action","Principal","Service","Effect","policy","createExecuteActionLambdaPolicy","RolePolicyAttachment","policyArn","ManagedPolicy","AWSLambdaBasicExecutionRole","Function","runtime","handler","timeout","memorySize","code","pulumi","asset","AssetArchive","FileArchive","path","join","ctx","appDir","environment","variables","env","storage","getModule","StorageOutput","Policy","Sid","Resource","interpolate","primaryDynamodbTableArn","executeLambda","createScheduleActionLambdaPolicy","APW_SCHEDULER_EXECUTE_ACTION_HANDLER"],"mappings":"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","sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { defineAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi-sdk\";\nimport { StorageOutput } from \"../common\";\nimport { getCommonLambdaEnvVariables } from \"../lambdaUtils\";\n\ninterface ScheduleActionParams {\n env: Record<string, any>;\n}\n\nconst LAMBDA_NAME_PREFIX = \"apw-scheduler\";\nconst CREATE_RULE_LAMBDA = `${LAMBDA_NAME_PREFIX}-schedule-action-lambda`;\nconst EXECUTE_ACTION_LAMBDA = `${LAMBDA_NAME_PREFIX}-execute-action-lambda`;\nconst EVENT_RULE_NAME = `${LAMBDA_NAME_PREFIX}-event-rule`;\nconst EVENT_RULE_TARGET = `${LAMBDA_NAME_PREFIX}-event-rule-target`;\n\nexport type ApiApwScheduler = PulumiAppModule<typeof ApiApwScheduler>;\n\nexport const ApiApwScheduler = defineAppModule({\n name: \"ApiApwScheduler\",\n config(app: PulumiApp, params: ScheduleActionParams) {\n const executeAction = createExecuteActionLambda(app, params);\n const scheduleAction = createScheduleActionLambda(app, executeAction.lambda.output, params);\n\n // Create event rule.\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: EVENT_RULE_NAME,\n config: {\n description: `Enable us to schedule an action in publishing workflow at a particular datetime`,\n scheduleExpression: \"cron(* * * * ? 2000)\",\n isEnabled: true\n }\n });\n\n // Add required permission to the target lambda.\n app.addResource(aws.lambda.Permission, {\n name: \"eventTargetPermission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: scheduleAction.lambda.output.arn,\n principal: \"events.amazonaws.com\",\n statementId: \"allow-rule-invoke-\" + EVENT_RULE_NAME\n }\n });\n\n // Add lambda as target to the event rule.\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: EVENT_RULE_TARGET,\n config: {\n rule: eventRule.output.name,\n arn: scheduleAction.lambda.output.arn\n }\n });\n\n return {\n executeAction,\n scheduleAction,\n eventRule,\n eventTarget\n };\n }\n});\n\nfunction createExecuteActionLambda(app: PulumiApp, params: ScheduleActionParams) {\n const role = app.addResource(aws.iam.Role, {\n name: `${EXECUTE_ACTION_LAMBDA}-role`,\n config: {\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"lambda.amazonaws.com\"\n },\n Effect: \"Allow\"\n }\n ]\n }\n }\n });\n\n const policy = createExecuteActionLambdaPolicy(app);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: EXECUTE_ACTION_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle execute action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.ctx.appDir, \"code/apw/executeAction/build\")\n )\n }),\n environment: {\n variables: {\n ...getCommonLambdaEnvVariables(app),\n ...params.env\n }\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createExecuteActionLambdaPolicy(app: PulumiApp) {\n const storage = app.getModule(StorageOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerExecuteActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\"dynamodb:Query\", \"dynamodb:GetItem\", \"dynamodb:DeleteItem\"],\n Resource: [\n pulumi.interpolate`${storage.primaryDynamodbTableArn}`,\n pulumi.interpolate`${storage.primaryDynamodbTableArn}/*`\n ]\n }\n ]\n }\n }\n });\n}\n\nfunction createScheduleActionLambda(\n app: PulumiApp,\n executeLambda: pulumi.Output<aws.lambda.Function>,\n params: ScheduleActionParams\n) {\n const role = app.addResource(aws.iam.Role, {\n name: `${CREATE_RULE_LAMBDA}-role`,\n config: {\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"lambda.amazonaws.com\"\n },\n Effect: \"Allow\"\n }\n ]\n }\n }\n });\n\n const policy = createScheduleActionLambdaPolicy(app);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: CREATE_RULE_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle schedule action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.ctx.appDir, \"code/apw/scheduleAction/build\")\n )\n }),\n environment: {\n variables: {\n ...getCommonLambdaEnvVariables(app),\n ...params.env,\n APW_SCHEDULER_EXECUTE_ACTION_HANDLER: executeLambda.arn\n // RULE_NAME: this.eventRule.name.apply(name => name),\n // RULE_TARGET_ID: this.eventTarget.targetId.apply(id => id)\n }\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createScheduleActionLambdaPolicy(app: PulumiApp) {\n const storage = app.getModule(StorageOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerScheduleActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:GetItem\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:DeleteItem\"\n ],\n Resource: [\n pulumi.interpolate`${storage.primaryDynamodbTableArn}`,\n pulumi.interpolate`${storage.primaryDynamodbTableArn}/*`\n ]\n },\n {\n Sid: \"PermissionEvents\",\n Effect: \"Allow\",\n Action: [\n \"events:DeleteRule\",\n \"events:PutTargets\",\n \"events:PutRule\",\n \"events:ListRules\",\n \"events:RemoveTargets\",\n \"events:ListTargetsByRule\"\n ],\n Resource: [\"*\"]\n }\n ]\n }\n }\n });\n}\n"]}
|
|
@@ -24,6 +24,8 @@ const ApiCloudfront = (0, _pulumiSdk.defineAppModule)({
|
|
|
24
24
|
name: "api-cloudfront",
|
|
25
25
|
config: {
|
|
26
26
|
waitForDeployment: false,
|
|
27
|
+
isIpv6Enabled: true,
|
|
28
|
+
enabled: true,
|
|
27
29
|
defaultCacheBehavior: {
|
|
28
30
|
compress: true,
|
|
29
31
|
allowedMethods: ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"],
|
|
@@ -42,8 +44,6 @@ const ApiCloudfront = (0, _pulumiSdk.defineAppModule)({
|
|
|
42
44
|
targetOriginId: gateway.api.output.name,
|
|
43
45
|
viewerProtocolPolicy: "allow-all"
|
|
44
46
|
},
|
|
45
|
-
isIpv6Enabled: true,
|
|
46
|
-
enabled: true,
|
|
47
47
|
orderedCacheBehaviors: [{
|
|
48
48
|
compress: true,
|
|
49
49
|
allowedMethods: ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"],
|