@webiny/pulumi-aws 5.29.0 → 5.30.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/createAdminPulumiApp.d.ts +3 -2
- package/apps/admin/createAdminPulumiApp.js +11 -8
- package/apps/admin/createAdminPulumiApp.js.map +1 -1
- package/apps/api/ApiApwScheduler.js +3 -3
- package/apps/api/ApiApwScheduler.js.map +1 -1
- package/apps/api/ApiFileManager.js +6 -6
- package/apps/api/ApiFileManager.js.map +1 -1
- package/apps/api/ApiGraphql.d.ts +3 -0
- package/apps/api/ApiGraphql.js +25 -2
- package/apps/api/ApiGraphql.js.map +1 -1
- package/apps/api/ApiHeadlessCMS.js +2 -2
- package/apps/api/ApiHeadlessCMS.js.map +1 -1
- package/apps/api/ApiPageBuilder.js +8 -8
- package/apps/api/ApiPageBuilder.js.map +1 -1
- package/apps/api/createApiPulumiApp.d.ts +17 -2
- package/apps/api/createApiPulumiApp.js +31 -10
- package/apps/api/createApiPulumiApp.js.map +1 -1
- package/apps/core/createCorePulumiApp.d.ts +2 -1
- package/apps/core/createCorePulumiApp.js +8 -5
- package/apps/core/createCorePulumiApp.js.map +1 -1
- package/apps/lambdaUtils.d.ts +1 -2
- package/apps/lambdaUtils.js +17 -22
- package/apps/lambdaUtils.js.map +1 -1
- package/apps/website/WebsitePrerendering.js +6 -6
- package/apps/website/WebsitePrerendering.js.map +1 -1
- package/apps/website/createWebsitePulumiApp.d.ts +3 -2
- package/apps/website/createWebsitePulumiApp.js +14 -10
- package/apps/website/createWebsitePulumiApp.js.map +1 -1
- package/package.json +9 -9
- package/utils/index.d.ts +1 -0
- package/utils/index.js +21 -1
- package/utils/index.js.map +1 -1
- package/utils/lambdaEnvVariables.d.ts +20 -0
- package/utils/lambdaEnvVariables.js +82 -0
- package/utils/lambdaEnvVariables.js.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ApiPageBuilder","createAppModule","name","config","app","params","core","getModule","CoreOutput","addHandler","pbInstallationZipPath","path","join","resolve","createInstallationZip","aws","s3","BucketObject","key","acl","bucket","fileManagerBucketId","contentType","source","pulumi","asset","FileAsset","exportPages","createExportPagesResources","importPages","createImportPagesResources","policy","createExportPagesLambdaPolicy","role","createLambdaRole","output","combine","addResource","lambda","Function","arn","runtime","handler","timeout","memorySize","description","code","AssetArchive","FileArchive","paths","workspace","environment","variables","getCommonLambdaEnvVariables","env","S3_BUCKET","process","EXPORT_PAGE_COMBINE_HANDLER","functions","awsAccountId","getAwsAccountId","awsRegion","getAwsRegion","iam","Policy","Version","Statement","Sid","Effect","Action","Resource","interpolate","primaryDynamodbTableArn","createImportPagesLambdaPolicy","create","IMPORT_PAGE_QUEUE_PROCESS_HANDLER","coreOutput","apply","elasticsearchDynamodbTableArn","cognitoUserPoolArn","elasticsearchDomainArn"],"sources":["ApiPageBuilder.ts"],"sourcesContent":["import * as path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n//@ts-ignore\nimport { createInstallationZip } from \"@webiny/api-page-builder/installation\";\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\nimport { CoreOutput } from \"../common\";\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { getAwsAccountId, getAwsRegion } from \"../awsUtils\";\n\ninterface PageBuilderParams {\n env: Record<string, any>;\n}\n\nexport type ApiPageBuilder = PulumiAppModule<typeof ApiPageBuilder>;\n\nexport const ApiPageBuilder = createAppModule({\n name: \"ApiPageBuilder\",\n config(app: PulumiApp, params: PageBuilderParams) {\n const core = app.getModule(CoreOutput);\n\n app.addHandler(() => {\n const pbInstallationZipPath = path.join(path.resolve(), \".tmp\", \"pbInstallation.zip\");\n // Will create \"pbInstallation.zip\" and save it in the `pbInstallationZipPath` path.\n createInstallationZip(pbInstallationZipPath);\n\n new aws.s3.BucketObject(\"./pbInstallation.zip\", {\n key: \"pbInstallation.zip\",\n acl: \"public-read\",\n bucket: core.fileManagerBucketId,\n contentType: \"application/octet-stream\",\n source: new pulumi.asset.FileAsset(pbInstallationZipPath)\n });\n });\n\n const exportPages = createExportPagesResources(app, params);\n const importPages = createImportPagesResources(app, params);\n\n return {\n exportPages,\n importPages\n };\n }\n});\n\nfunction createExportPagesResources(app: PulumiApp, params: PageBuilderParams) {\n const core = app.getModule(CoreOutput);\n\n const policy = createExportPagesLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"pb-export-pages-lambda-role\",\n policy: policy.output\n });\n\n const combine = app.addResource(aws.lambda.Function, {\n name: \"pb-export-pages-combine\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle page export's combine workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/exportPages/combine/build\")\n )\n }),\n environment: {\n variables: {\n ...getCommonLambdaEnvVariables(),\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId\n }\n }\n }\n });\n\n const process = app.addResource(aws.lambda.Function, {\n name: \"pb-export-pages-process\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle page export's process workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/exportPages/process/build\")\n )\n }),\n environment: {\n variables: {\n ...getCommonLambdaEnvVariables(),\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId,\n EXPORT_PAGE_COMBINE_HANDLER: combine.output.arn\n }\n }\n }\n });\n\n return {\n role,\n policy,\n functions: {\n process,\n combine\n }\n };\n}\n\nfunction createExportPagesLambdaPolicy(app: PulumiApp) {\n const core = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n const awsRegion = getAwsRegion(app);\n\n return app.addResource(aws.iam.Policy, {\n name: \"PbExportPageTaskLambdaPolicy\",\n config: {\n description: \"This policy enables access to Dynamodb\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"AllowDynamoDBAccess\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:BatchGetItem\",\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:PutItem\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:GetItem\",\n \"dynamodb:Query\",\n \"dynamodb:UpdateItem\"\n ],\n Resource: [\n pulumi.interpolate`${core.primaryDynamodbTableArn}`,\n pulumi.interpolate`${core.primaryDynamodbTableArn}/*`\n ]\n },\n {\n Sid: \"PermissionForS3\",\n Effect: \"Allow\",\n Action: [\n \"s3:GetObjectAcl\",\n \"s3:DeleteObject\",\n \"s3:PutObjectAcl\",\n \"s3:PutObject\",\n \"s3:GetObject\",\n \"s3:ListBucket\"\n ],\n Resource: [\n pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}/*`,\n // We need to explicitly add bucket ARN to \"Resource\" list for \"s3:ListBucket\" action.\n pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}`\n ]\n },\n {\n Sid: \"PermissionForLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: pulumi.interpolate`arn:aws:lambda:${awsRegion}:${awsAccountId}:function:*`\n }\n ]\n }\n }\n });\n}\n\nfunction createImportPagesResources(app: PulumiApp, params: PageBuilderParams) {\n const core = app.getModule(CoreOutput);\n const policy = createImportPagesLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"pb-import-page-lambda-role\",\n policy: policy.output\n });\n\n const process = app.addResource(aws.lambda.Function, {\n name: \"pb-import-page-queue-process\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 512,\n description: \"Handle import page queue process workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/importPages/process/build\")\n )\n }),\n environment: {\n variables: {\n ...getCommonLambdaEnvVariables(),\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId\n }\n }\n }\n });\n\n const create = app.addResource(aws.lambda.Function, {\n name: \"pb-import-page-queue-create\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 512,\n description: \"Handle import page queue create workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/importPages/create/build\")\n )\n }),\n environment: {\n variables: {\n ...getCommonLambdaEnvVariables(),\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId,\n IMPORT_PAGE_QUEUE_PROCESS_HANDLER: process.output.arn\n }\n }\n }\n });\n\n return {\n role,\n policy,\n functions: {\n create,\n process\n }\n };\n}\n\nfunction createImportPagesLambdaPolicy(app: PulumiApp) {\n const coreOutput = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n const awsRegion = getAwsRegion(app);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ImportPageLambdaPolicy\",\n config: {\n description: \"This policy enables access Dynamodb, S3, Lambda and Cognito IDP\",\n // Core is pulumi.Output, so we need to run apply() to resolve policy based on it\n policy: coreOutput.apply(core => {\n const policy: aws.iam.PolicyDocument = {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForDynamodb\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:BatchGetItem\",\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:PutItem\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:GetItem\",\n \"dynamodb:Query\",\n \"dynamodb:UpdateItem\"\n ],\n Resource: [\n `${core.primaryDynamodbTableArn}`,\n `${core.primaryDynamodbTableArn}/*`,\n // Attach permissions for elastic search dynamo as well (if ES is enabled).\n ...(core.elasticsearchDynamodbTableArn\n ? [\n `${core.elasticsearchDynamodbTableArn}`,\n `${core.elasticsearchDynamodbTableArn}/*`\n ]\n : [])\n ]\n },\n {\n Sid: \"PermissionForS3\",\n Effect: \"Allow\",\n Action: [\n \"s3:GetObjectAcl\",\n \"s3:DeleteObject\",\n \"s3:PutObjectAcl\",\n \"s3:PutObject\",\n \"s3:GetObject\",\n \"s3:ListBucket\"\n ],\n Resource: [\n `arn:aws:s3:::${core.fileManagerBucketId}/*`,\n // We need to explicitly add bucket ARN to \"Resource\" list for \"s3:ListBucket\" action.\n `arn:aws:s3:::${core.fileManagerBucketId}`\n ]\n },\n {\n Sid: \"PermissionForLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: pulumi.interpolate`arn:aws:lambda:${awsRegion}:${awsAccountId}:function:*`\n },\n {\n Sid: \"PermissionForCognitoIdp\",\n Effect: \"Allow\",\n Action: \"cognito-idp:*\",\n Resource: `${core.cognitoUserPoolArn}`\n },\n // Attach permissions for elastic search domain as well (if ES is enabled).\n ...(core.elasticsearchDomainArn\n ? [\n {\n Sid: \"PermissionForES\",\n Effect: \"Allow\" as const,\n Action: \"es:*\",\n Resource: [\n `${core.elasticsearchDomainArn}`,\n `${core.elasticsearchDomainArn}/*`\n ]\n }\n ]\n : [])\n ]\n };\n\n return policy;\n })\n }\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["ApiPageBuilder","createAppModule","name","config","app","params","core","getModule","CoreOutput","addHandler","pbInstallationZipPath","path","join","resolve","createInstallationZip","aws","s3","BucketObject","key","acl","bucket","fileManagerBucketId","contentType","source","pulumi","asset","FileAsset","exportPages","createExportPagesResources","importPages","createImportPagesResources","policy","createExportPagesLambdaPolicy","role","createLambdaRole","output","combine","addResource","lambda","Function","arn","runtime","handler","timeout","memorySize","description","code","AssetArchive","FileArchive","paths","workspace","environment","variables","getCommonLambdaEnvVariables","apply","value","env","S3_BUCKET","process","EXPORT_PAGE_COMBINE_HANDLER","functions","awsAccountId","getAwsAccountId","awsRegion","getAwsRegion","iam","Policy","Version","Statement","Sid","Effect","Action","Resource","interpolate","primaryDynamodbTableArn","createImportPagesLambdaPolicy","create","IMPORT_PAGE_QUEUE_PROCESS_HANDLER","coreOutput","elasticsearchDynamodbTableArn","cognitoUserPoolArn","elasticsearchDomainArn"],"sources":["ApiPageBuilder.ts"],"sourcesContent":["import * as path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n//@ts-ignore\nimport { createInstallationZip } from \"@webiny/api-page-builder/installation\";\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\nimport { CoreOutput } from \"../common\";\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { getAwsAccountId, getAwsRegion } from \"../awsUtils\";\n\ninterface PageBuilderParams {\n env: Record<string, any>;\n}\n\nexport type ApiPageBuilder = PulumiAppModule<typeof ApiPageBuilder>;\n\nexport const ApiPageBuilder = createAppModule({\n name: \"ApiPageBuilder\",\n config(app: PulumiApp, params: PageBuilderParams) {\n const core = app.getModule(CoreOutput);\n\n app.addHandler(() => {\n const pbInstallationZipPath = path.join(path.resolve(), \".tmp\", \"pbInstallation.zip\");\n // Will create \"pbInstallation.zip\" and save it in the `pbInstallationZipPath` path.\n createInstallationZip(pbInstallationZipPath);\n\n new aws.s3.BucketObject(\"./pbInstallation.zip\", {\n key: \"pbInstallation.zip\",\n acl: \"public-read\",\n bucket: core.fileManagerBucketId,\n contentType: \"application/octet-stream\",\n source: new pulumi.asset.FileAsset(pbInstallationZipPath)\n });\n });\n\n const exportPages = createExportPagesResources(app, params);\n const importPages = createImportPagesResources(app, params);\n\n return {\n exportPages,\n importPages\n };\n }\n});\n\nfunction createExportPagesResources(app: PulumiApp, params: PageBuilderParams) {\n const core = app.getModule(CoreOutput);\n\n const policy = createExportPagesLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"pb-export-pages-lambda-role\",\n policy: policy.output\n });\n\n const combine = app.addResource(aws.lambda.Function, {\n name: \"pb-export-pages-combine\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle page export's combine workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/exportPages/combine/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId\n }))\n }\n }\n });\n\n const process = app.addResource(aws.lambda.Function, {\n name: \"pb-export-pages-process\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle page export's process workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/exportPages/process/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId,\n EXPORT_PAGE_COMBINE_HANDLER: combine.output.arn\n }))\n }\n }\n });\n\n return {\n role,\n policy,\n functions: {\n process,\n combine\n }\n };\n}\n\nfunction createExportPagesLambdaPolicy(app: PulumiApp) {\n const core = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n const awsRegion = getAwsRegion(app);\n\n return app.addResource(aws.iam.Policy, {\n name: \"PbExportPageTaskLambdaPolicy\",\n config: {\n description: \"This policy enables access to Dynamodb\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"AllowDynamoDBAccess\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:BatchGetItem\",\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:PutItem\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:GetItem\",\n \"dynamodb:Query\",\n \"dynamodb:UpdateItem\"\n ],\n Resource: [\n pulumi.interpolate`${core.primaryDynamodbTableArn}`,\n pulumi.interpolate`${core.primaryDynamodbTableArn}/*`\n ]\n },\n {\n Sid: \"PermissionForS3\",\n Effect: \"Allow\",\n Action: [\n \"s3:GetObjectAcl\",\n \"s3:DeleteObject\",\n \"s3:PutObjectAcl\",\n \"s3:PutObject\",\n \"s3:GetObject\",\n \"s3:ListBucket\"\n ],\n Resource: [\n pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}/*`,\n // We need to explicitly add bucket ARN to \"Resource\" list for \"s3:ListBucket\" action.\n pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}`\n ]\n },\n {\n Sid: \"PermissionForLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: pulumi.interpolate`arn:aws:lambda:${awsRegion}:${awsAccountId}:function:*`\n }\n ]\n }\n }\n });\n}\n\nfunction createImportPagesResources(app: PulumiApp, params: PageBuilderParams) {\n const core = app.getModule(CoreOutput);\n const policy = createImportPagesLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"pb-import-page-lambda-role\",\n policy: policy.output\n });\n\n const process = app.addResource(aws.lambda.Function, {\n name: \"pb-import-page-queue-process\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 512,\n description: \"Handle import page queue process workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/importPages/process/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId\n }))\n }\n }\n });\n\n const create = app.addResource(aws.lambda.Function, {\n name: \"pb-import-page-queue-create\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 512,\n description: \"Handle import page queue create workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/importPages/create/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId,\n IMPORT_PAGE_QUEUE_PROCESS_HANDLER: process.output.arn\n }))\n }\n }\n });\n\n return {\n role,\n policy,\n functions: {\n create,\n process\n }\n };\n}\n\nfunction createImportPagesLambdaPolicy(app: PulumiApp) {\n const coreOutput = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n const awsRegion = getAwsRegion(app);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ImportPageLambdaPolicy\",\n config: {\n description: \"This policy enables access Dynamodb, S3, Lambda and Cognito IDP\",\n // Core is pulumi.Output, so we need to run apply() to resolve policy based on it\n policy: coreOutput.apply(core => {\n const policy: aws.iam.PolicyDocument = {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForDynamodb\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:BatchGetItem\",\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:PutItem\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:GetItem\",\n \"dynamodb:Query\",\n \"dynamodb:UpdateItem\"\n ],\n Resource: [\n `${core.primaryDynamodbTableArn}`,\n `${core.primaryDynamodbTableArn}/*`,\n // Attach permissions for elastic search dynamo as well (if ES is enabled).\n ...(core.elasticsearchDynamodbTableArn\n ? [\n `${core.elasticsearchDynamodbTableArn}`,\n `${core.elasticsearchDynamodbTableArn}/*`\n ]\n : [])\n ]\n },\n {\n Sid: \"PermissionForS3\",\n Effect: \"Allow\",\n Action: [\n \"s3:GetObjectAcl\",\n \"s3:DeleteObject\",\n \"s3:PutObjectAcl\",\n \"s3:PutObject\",\n \"s3:GetObject\",\n \"s3:ListBucket\"\n ],\n Resource: [\n `arn:aws:s3:::${core.fileManagerBucketId}/*`,\n // We need to explicitly add bucket ARN to \"Resource\" list for \"s3:ListBucket\" action.\n `arn:aws:s3:::${core.fileManagerBucketId}`\n ]\n },\n {\n Sid: \"PermissionForLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: pulumi.interpolate`arn:aws:lambda:${awsRegion}:${awsAccountId}:function:*`\n },\n {\n Sid: \"PermissionForCognitoIdp\",\n Effect: \"Allow\",\n Action: \"cognito-idp:*\",\n Resource: `${core.cognitoUserPoolArn}`\n },\n // Attach permissions for elastic search domain as well (if ES is enabled).\n ...(core.elasticsearchDomainArn\n ? [\n {\n Sid: \"PermissionForES\",\n Effect: \"Allow\" as const,\n Action: \"es:*\",\n Resource: [\n `${core.elasticsearchDomainArn}`,\n `${core.elasticsearchDomainArn}/*`\n ]\n }\n ]\n : [])\n ]\n };\n\n return policy;\n })\n }\n });\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PulumiAppParam, PulumiAppParamCallback } from "@webiny/pulumi";
|
|
2
2
|
import { CustomDomainParams } from "../customDomain";
|
|
3
|
+
export declare type ApiPulumiApp = ReturnType<typeof createApiPulumiApp>;
|
|
3
4
|
export interface CreateApiPulumiAppParams {
|
|
4
5
|
/**
|
|
5
6
|
* Enables or disables VPC for the API.
|
|
@@ -12,7 +13,7 @@ export interface CreateApiPulumiAppParams {
|
|
|
12
13
|
* Provides a way to adjust existing Pulumi code (cloud infrastructure resources)
|
|
13
14
|
* or add additional ones into the mix.
|
|
14
15
|
*/
|
|
15
|
-
pulumi?: (app:
|
|
16
|
+
pulumi?: (app: ApiPulumiApp) => void | Promise<void>;
|
|
16
17
|
}
|
|
17
18
|
export declare const createApiPulumiApp: (projectAppParams?: CreateApiPulumiAppParams) => import("@webiny/pulumi").PulumiApp<{
|
|
18
19
|
fileManager: {
|
|
@@ -48,4 +49,18 @@ export declare const createApiPulumiApp: (projectAppParams?: CreateApiPulumiAppP
|
|
|
48
49
|
addRoute: (name: string, params: import("~/apps").ApiRouteParams) => void;
|
|
49
50
|
};
|
|
50
51
|
cloudfront: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront").Distribution>;
|
|
51
|
-
|
|
52
|
+
apwScheduler: {
|
|
53
|
+
executeAction: {
|
|
54
|
+
role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam").Role>;
|
|
55
|
+
policy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam").Policy>;
|
|
56
|
+
lambda: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
|
|
57
|
+
};
|
|
58
|
+
scheduleAction: {
|
|
59
|
+
role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam").Role>;
|
|
60
|
+
policy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam").Policy>;
|
|
61
|
+
lambda: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
|
|
62
|
+
};
|
|
63
|
+
eventRule: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch").EventRule>;
|
|
64
|
+
eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch").EventTarget>;
|
|
65
|
+
};
|
|
66
|
+
}> & import("../lambdaUtils").WithCommonLambdaEnvVariables;
|
|
@@ -14,14 +14,22 @@ var _customDomain = require("../customDomain");
|
|
|
14
14
|
var _utils = require("../../utils");
|
|
15
15
|
|
|
16
16
|
const createApiPulumiApp = (projectAppParams = {}) => {
|
|
17
|
-
|
|
17
|
+
const app = (0, _pulumi.createPulumiApp)({
|
|
18
18
|
name: "api",
|
|
19
19
|
path: "apps/api",
|
|
20
20
|
config: projectAppParams,
|
|
21
21
|
program: async app => {
|
|
22
|
-
//
|
|
22
|
+
// Overrides must be applied via a handler, registered at the very start of the program.
|
|
23
|
+
// By doing this, we're ensuring user's adjustments are not applied too late.
|
|
24
|
+
if (projectAppParams.pulumi) {
|
|
25
|
+
app.addHandler(() => {
|
|
26
|
+
return projectAppParams.pulumi(app);
|
|
27
|
+
});
|
|
28
|
+
} // Enables logs forwarding.
|
|
23
29
|
// https://www.webiny.com/docs/how-to-guides/use-watch-command#enabling-logs-forwarding
|
|
24
|
-
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
const WEBINY_LOGS_FORWARD_URL = String(process.env.WEBINY_LOGS_FORWARD_URL); // Register core output as a module available to all the other modules
|
|
25
33
|
|
|
26
34
|
const core = app.addModule(_.CoreOutput); // Register VPC config module to be available to other modules
|
|
27
35
|
|
|
@@ -43,6 +51,16 @@ const createApiPulumiApp = (projectAppParams = {}) => {
|
|
|
43
51
|
}
|
|
44
52
|
});
|
|
45
53
|
const fileManager = app.addModule(_.ApiFileManager);
|
|
54
|
+
const apwScheduler = app.addModule(_.ApiApwScheduler, {
|
|
55
|
+
primaryDynamodbTableArn: core.primaryDynamodbTableArn,
|
|
56
|
+
env: {
|
|
57
|
+
COGNITO_REGION: String(process.env.AWS_REGION),
|
|
58
|
+
COGNITO_USER_POOL_ID: core.cognitoUserPoolId,
|
|
59
|
+
DB_TABLE: core.primaryDynamodbTableName,
|
|
60
|
+
S3_BUCKET: core.fileManagerBucketId,
|
|
61
|
+
WEBINY_LOGS_FORWARD_URL
|
|
62
|
+
}
|
|
63
|
+
});
|
|
46
64
|
const graphql = app.addModule(_.ApiGraphql, {
|
|
47
65
|
env: {
|
|
48
66
|
COGNITO_REGION: String(process.env.AWS_REGION),
|
|
@@ -60,7 +78,9 @@ const createApiPulumiApp = (projectAppParams = {}) => {
|
|
|
60
78
|
// TODO: move to okta plugin
|
|
61
79
|
OKTA_ISSUER: process.env["OKTA_ISSUER"],
|
|
62
80
|
WEBINY_LOGS_FORWARD_URL
|
|
63
|
-
}
|
|
81
|
+
},
|
|
82
|
+
apwSchedulerEventRule: apwScheduler.eventRule.output,
|
|
83
|
+
apwSchedulerEventTarget: apwScheduler.eventTarget.output
|
|
64
84
|
});
|
|
65
85
|
const headlessCms = app.addModule(_.ApiHeadlessCMS, {
|
|
66
86
|
env: {
|
|
@@ -119,6 +139,10 @@ const createApiPulumiApp = (projectAppParams = {}) => {
|
|
|
119
139
|
cognitoUserPoolId: core.cognitoUserPoolId,
|
|
120
140
|
cognitoAppClientId: core.cognitoAppClientId,
|
|
121
141
|
cognitoUserPoolPasswordPolicy: core.cognitoUserPoolPasswordPolicy,
|
|
142
|
+
apwSchedulerScheduleAction: apwScheduler.scheduleAction.lambda.output.arn,
|
|
143
|
+
apwSchedulerExecuteAction: apwScheduler.executeAction.lambda.output.arn,
|
|
144
|
+
apwSchedulerEventRule: apwScheduler.eventRule.output.name,
|
|
145
|
+
apwSchedulerEventTargetId: apwScheduler.eventTarget.output.targetId,
|
|
122
146
|
dynamoDbTable: core.primaryDynamodbTableName,
|
|
123
147
|
dynamoDbElasticsearchTable: core.elasticsearchDynamodbTableName
|
|
124
148
|
});
|
|
@@ -126,20 +150,17 @@ const createApiPulumiApp = (projectAppParams = {}) => {
|
|
|
126
150
|
WbyProjectName: String(process.env["WEBINY_PROJECT_NAME"]),
|
|
127
151
|
WbyEnvironment: String(process.env["WEBINY_ENV"])
|
|
128
152
|
});
|
|
129
|
-
|
|
130
|
-
if (projectAppParams.pulumi) {
|
|
131
|
-
await projectAppParams.pulumi(app);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
153
|
return {
|
|
135
154
|
fileManager,
|
|
136
155
|
graphql,
|
|
137
156
|
headlessCms,
|
|
138
157
|
apiGateway,
|
|
139
|
-
cloudfront
|
|
158
|
+
cloudfront,
|
|
159
|
+
apwScheduler
|
|
140
160
|
};
|
|
141
161
|
}
|
|
142
162
|
});
|
|
163
|
+
return (0, _utils.withCommonLambdaEnvVariables)(app);
|
|
143
164
|
};
|
|
144
165
|
|
|
145
166
|
exports.createApiPulumiApp = createApiPulumiApp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createApiPulumiApp","projectAppParams","createPulumiApp","name","path","config","program","app","WEBINY_LOGS_FORWARD_URL","String","process","env","core","addModule","CoreOutput","VpcConfig","enabled","getParam","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","graphql","ApiGraphql","EVENT_BUS","eventBusArn","IMPORT_PAGES_CREATE_HANDLER","importPages","functions","create","output","arn","EXPORT_PAGES_PROCESS_HANDLER","exportPages","OKTA_ISSUER","headlessCms","ApiHeadlessCMS","apiGateway","ApiGateway","method","function","download","cloudfront","ApiCloudfront","domains","applyCustomDomain","addOutputs","region","apiUrl","domainName","apply","value","apiDomain","cognitoAppClientId","cognitoUserPoolPasswordPolicy","dynamoDbTable","dynamoDbElasticsearchTable","tagResources","WbyProjectName","WbyEnvironment","pulumi"],"sources":["createApiPulumiApp.ts"],"sourcesContent":["import { createPulumiApp, PulumiAppParam, PulumiAppParamCallback } from \"@webiny/pulumi\";\nimport {\n ApiGateway,\n ApiCloudfront,\n ApiFileManager,\n ApiGraphql,\n ApiHeadlessCMS,\n ApiPageBuilder\n} from \"~/apps\";\nimport { CoreOutput, VpcConfig } from \"~/apps\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { tagResources } from \"~/utils\";\n\nexport interface CreateApiPulumiAppParams {\n /**\n * Enables or disables VPC for the API.\n * For VPC to work you also have to enable it in the Core application.\n */\n vpc?: PulumiAppParam<boolean>;\n\n /** Custom domain configuration */\n domains?: PulumiAppParamCallback<CustomDomainParams>;\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: ReturnType<typeof createApiPulumiApp>) => void | Promise<void>;\n}\n\nexport const createApiPulumiApp = (projectAppParams: CreateApiPulumiAppParams = {}) => {\n return createPulumiApp({\n name: \"api\",\n path: \"apps/api\",\n config: projectAppParams,\n program: async app => {\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 core output as a module available for all other modules\n const core = app.addModule(CoreOutput);\n\n // Register VPC config module to be available to other modules\n app.addModule(VpcConfig, {\n enabled: app.getParam(projectAppParams.vpc)\n });\n\n const pageBuilder = app.addModule(ApiPageBuilder, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: core.cognitoUserPoolId,\n DB_TABLE: core.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: core.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: core.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: core.fileManagerBucketId,\n WEBINY_LOGS_FORWARD_URL\n }\n });\n\n const fileManager = app.addModule(ApiFileManager);\n\n const graphql = app.addModule(ApiGraphql, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: core.cognitoUserPoolId,\n DB_TABLE: core.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: core.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: core.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: core.fileManagerBucketId,\n EVENT_BUS: core.eventBusArn,\n IMPORT_PAGES_CREATE_HANDLER:\n pageBuilder.importPages.functions.create.output.arn,\n EXPORT_PAGES_PROCESS_HANDLER:\n 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 });\n\n const headlessCms = app.addModule(ApiHeadlessCMS, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: core.cognitoUserPoolId,\n DB_TABLE: core.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: core.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: core.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: core.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 domains = app.getParam(projectAppParams.domains);\n if (domains) {\n applyCustomDomain(cloudfront, domains);\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: core.cognitoUserPoolId,\n cognitoAppClientId: core.cognitoAppClientId,\n cognitoUserPoolPasswordPolicy: core.cognitoUserPoolPasswordPolicy,\n dynamoDbTable: core.primaryDynamodbTableName,\n dynamoDbElasticsearchTable: core.elasticsearchDynamodbTableName\n });\n\n tagResources({\n WbyProjectName: String(process.env[\"WEBINY_PROJECT_NAME\"]),\n WbyEnvironment: String(process.env[\"WEBINY_ENV\"])\n });\n\n if (projectAppParams.pulumi) {\n await projectAppParams.pulumi(app as ReturnType<typeof createApiPulumiApp>);\n }\n\n return {\n fileManager,\n graphql,\n headlessCms,\n apiGateway,\n cloudfront\n };\n }\n });\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["createApiPulumiApp","projectAppParams","app","createPulumiApp","name","path","config","program","pulumi","addHandler","WEBINY_LOGS_FORWARD_URL","String","process","env","core","addModule","CoreOutput","VpcConfig","enabled","getParam","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","method","function","download","cloudfront","ApiCloudfront","domains","applyCustomDomain","addOutputs","region","apiUrl","domainName","apply","value","apiDomain","cognitoAppClientId","cognitoUserPoolPasswordPolicy","apwSchedulerScheduleAction","scheduleAction","lambda","apwSchedulerExecuteAction","executeAction","apwSchedulerEventTargetId","targetId","dynamoDbTable","dynamoDbElasticsearchTable","tagResources","WbyProjectName","WbyEnvironment","withCommonLambdaEnvVariables"],"sources":["createApiPulumiApp.ts"],"sourcesContent":["import { createPulumiApp, PulumiAppParam, PulumiAppParamCallback } from \"@webiny/pulumi\";\nimport {\n ApiGateway,\n ApiApwScheduler,\n ApiCloudfront,\n ApiFileManager,\n ApiGraphql,\n ApiHeadlessCMS,\n ApiPageBuilder,\n CoreOutput,\n VpcConfig\n} from \"~/apps\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { tagResources } from \"~/utils\";\nimport { withCommonLambdaEnvVariables } from \"~/utils\";\n\nexport type ApiPulumiApp = ReturnType<typeof createApiPulumiApp>;\n\nexport interface CreateApiPulumiAppParams {\n /**\n * Enables or disables VPC for the API.\n * For VPC to work you also have to enable it in the Core application.\n */\n vpc?: PulumiAppParam<boolean>;\n\n /** Custom domain configuration */\n domains?: PulumiAppParamCallback<CustomDomainParams>;\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: ApiPulumiApp) => void | Promise<void>;\n}\n\nexport const createApiPulumiApp = (projectAppParams: CreateApiPulumiAppParams = {}) => {\n const app = createPulumiApp({\n name: \"api\",\n path: \"apps/api\",\n config: projectAppParams,\n program: async app => {\n // Overrides must be applied via a handler, registered at the very start of the program.\n // By doing this, we're ensuring user's adjustments are not applied too late.\n if (projectAppParams.pulumi) {\n app.addHandler(() => {\n return projectAppParams.pulumi!(app as ApiPulumiApp);\n });\n }\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 // Register core output as a module available to all the other modules\n const core = app.addModule(CoreOutput);\n\n // Register VPC config module to be available to other modules\n app.addModule(VpcConfig, {\n enabled: app.getParam(projectAppParams.vpc)\n });\n\n const pageBuilder = app.addModule(ApiPageBuilder, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: core.cognitoUserPoolId,\n DB_TABLE: core.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: core.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: core.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: core.fileManagerBucketId,\n WEBINY_LOGS_FORWARD_URL\n }\n });\n\n const fileManager = app.addModule(ApiFileManager);\n\n const apwScheduler = app.addModule(ApiApwScheduler, {\n primaryDynamodbTableArn: core.primaryDynamodbTableArn,\n\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: core.cognitoUserPoolId,\n DB_TABLE: core.primaryDynamodbTableName,\n S3_BUCKET: core.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: core.cognitoUserPoolId,\n DB_TABLE: core.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: core.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: core.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: core.fileManagerBucketId,\n EVENT_BUS: core.eventBusArn,\n IMPORT_PAGES_CREATE_HANDLER:\n pageBuilder.importPages.functions.create.output.arn,\n EXPORT_PAGES_PROCESS_HANDLER:\n 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: core.cognitoUserPoolId,\n DB_TABLE: core.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: core.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: core.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: core.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 domains = app.getParam(projectAppParams.domains);\n if (domains) {\n applyCustomDomain(cloudfront, domains);\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: core.cognitoUserPoolId,\n cognitoAppClientId: core.cognitoAppClientId,\n cognitoUserPoolPasswordPolicy: core.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: core.primaryDynamodbTableName,\n dynamoDbElasticsearchTable: core.elasticsearchDynamodbTableName\n });\n\n tagResources({\n WbyProjectName: String(process.env[\"WEBINY_PROJECT_NAME\"]),\n WbyEnvironment: String(process.env[\"WEBINY_ENV\"])\n });\n\n return {\n fileManager,\n graphql,\n headlessCms,\n apiGateway,\n cloudfront,\n apwScheduler\n };\n }\n });\n\n return withCommonLambdaEnvVariables(app);\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PulumiAppParam } from "@webiny/pulumi";
|
|
2
|
+
export declare type CorePulumiApp = ReturnType<typeof createCorePulumiApp>;
|
|
2
3
|
export interface CreateCorePulumiAppParams {
|
|
3
4
|
/**
|
|
4
5
|
* Secures against deleting database by accident.
|
|
@@ -23,7 +24,7 @@ export interface CreateCorePulumiAppParams {
|
|
|
23
24
|
* Provides a way to adjust existing Pulumi code (cloud infrastructure resources)
|
|
24
25
|
* or add additional ones into the mix.
|
|
25
26
|
*/
|
|
26
|
-
pulumi?: (app:
|
|
27
|
+
pulumi?: (app: CorePulumiApp) => void | Promise<void>;
|
|
27
28
|
}
|
|
28
29
|
export interface CoreAppLegacyConfig {
|
|
29
30
|
useEmailAsUsername?: boolean;
|
|
@@ -35,6 +35,14 @@ function createCorePulumiApp(projectAppParams = {}) {
|
|
|
35
35
|
path: "apps/core",
|
|
36
36
|
config: projectAppParams,
|
|
37
37
|
program: async app => {
|
|
38
|
+
// Overrides must be applied via a handler, registered at the very start of the program.
|
|
39
|
+
// By doing this, we're ensuring user's adjustments are not applied to late.
|
|
40
|
+
if (projectAppParams.pulumi) {
|
|
41
|
+
app.addHandler(() => {
|
|
42
|
+
return projectAppParams.pulumi(app);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
38
46
|
const prod = app.params.run.env === "prod";
|
|
39
47
|
const protect = app.getParam(projectAppParams.protect) || prod;
|
|
40
48
|
const legacyConfig = app.getParam(projectAppParams.legacy) || {}; // Setup DynamoDB table
|
|
@@ -75,11 +83,6 @@ function createCorePulumiApp(projectAppParams = {}) {
|
|
|
75
83
|
WbyProjectName: String(process.env["WEBINY_PROJECT_NAME"]),
|
|
76
84
|
WbyEnvironment: String(process.env["WEBINY_ENV"])
|
|
77
85
|
});
|
|
78
|
-
|
|
79
|
-
if (projectAppParams.pulumi) {
|
|
80
|
-
await projectAppParams.pulumi(app);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
86
|
return _objectSpread(_objectSpread({
|
|
84
87
|
dynamoDbTable,
|
|
85
88
|
vpc
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createCorePulumiApp","projectAppParams","createPulumiApp","name","path","config","program","app","prod","params","run","env","protect","getParam","legacyConfig","legacy","dynamoDbTable","addModule","CoreDynamo","vpcEnabled","vpc","CoreVpc","cognito","CoreCognito","useEmailAsUsername","eventBus","CoreEventBus","fileManagerBucket","CoreFileManger","elasticSearch","ElasticSearch","addOutputs","fileManagerBucketId","output","id","primaryDynamodbTableArn","arn","primaryDynamodbTableName","primaryDynamodbTableHashKey","hashKey","primaryDynamodbTableRangeKey","rangeKey","cognitoUserPoolId","userPool","cognitoUserPoolArn","cognitoUserPoolPasswordPolicy","passwordPolicy","cognitoAppClientId","userPoolClient","eventBusArn","tagResources","WbyProjectName","String","process","WbyEnvironment"
|
|
1
|
+
{"version":3,"names":["createCorePulumiApp","projectAppParams","createPulumiApp","name","path","config","program","app","pulumi","addHandler","prod","params","run","env","protect","getParam","legacyConfig","legacy","dynamoDbTable","addModule","CoreDynamo","vpcEnabled","vpc","CoreVpc","cognito","CoreCognito","useEmailAsUsername","eventBus","CoreEventBus","fileManagerBucket","CoreFileManger","elasticSearch","ElasticSearch","addOutputs","fileManagerBucketId","output","id","primaryDynamodbTableArn","arn","primaryDynamodbTableName","primaryDynamodbTableHashKey","hashKey","primaryDynamodbTableRangeKey","rangeKey","cognitoUserPoolId","userPool","cognitoUserPoolArn","cognitoUserPoolPasswordPolicy","passwordPolicy","cognitoAppClientId","userPoolClient","eventBusArn","tagResources","WbyProjectName","String","process","WbyEnvironment"],"sources":["createCorePulumiApp.ts"],"sourcesContent":["import { createPulumiApp, PulumiAppParam } from \"@webiny/pulumi\";\nimport { CoreCognito } from \"./CoreCognito\";\nimport { CoreDynamo } from \"./CoreDynamo\";\nimport { ElasticSearch } from \"./CoreElasticSearch\";\nimport { CoreEventBus } from \"./CoreEventBus\";\nimport { CoreFileManger } from \"./CoreFileManager\";\nimport { CoreVpc } from \"./CoreVpc\";\nimport { tagResources } from \"~/utils\";\n\nexport type CorePulumiApp = ReturnType<typeof createCorePulumiApp>;\n\nexport interface CreateCorePulumiAppParams {\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>;\n\n /**\n * Enables VPC for the application.\n * By default enabled in production environments.\n */\n vpc?: PulumiAppParam<boolean>;\n\n /**\n * Additional settings for backwards compatibility.\n */\n legacy?: PulumiAppParam<CoreAppLegacyConfig>;\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: CorePulumiApp) => void | Promise<void>;\n}\n\nexport interface CoreAppLegacyConfig {\n useEmailAsUsername?: boolean;\n}\n\nexport function createCorePulumiApp(projectAppParams: CreateCorePulumiAppParams = {}) {\n return createPulumiApp({\n name: \"core\",\n path: \"apps/core\",\n config: projectAppParams,\n program: async app => {\n // Overrides must be applied via a handler, registered at the very start of the program.\n // By doing this, we're ensuring user's adjustments are not applied to late.\n if (projectAppParams.pulumi) {\n app.addHandler(() => {\n return projectAppParams.pulumi!(app as CorePulumiApp);\n });\n }\n\n const prod = app.params.run.env === \"prod\";\n const protect = app.getParam(projectAppParams.protect) || prod;\n const legacyConfig = app.getParam(projectAppParams.legacy) || {};\n\n // Setup DynamoDB table\n const dynamoDbTable = app.addModule(CoreDynamo, { protect });\n\n // Setup VPC\n const vpcEnabled = app.getParam(projectAppParams?.vpc) || prod;\n const vpc = vpcEnabled ? app.addModule(CoreVpc) : null;\n\n // Setup Cognito\n const cognito = app.addModule(CoreCognito, {\n protect,\n useEmailAsUsername: legacyConfig.useEmailAsUsername ?? false\n });\n\n // Setup event bus\n const eventBus = app.addModule(CoreEventBus);\n\n // Setup file core bucket\n const fileManagerBucket = app.addModule(CoreFileManger, { protect });\n\n const elasticSearch = app.getParam(projectAppParams?.elasticSearch)\n ? app.addModule(ElasticSearch, { protect })\n : null;\n\n app.addOutputs({\n fileManagerBucketId: fileManagerBucket.output.id,\n primaryDynamodbTableArn: dynamoDbTable.output.arn,\n primaryDynamodbTableName: dynamoDbTable.output.name,\n primaryDynamodbTableHashKey: dynamoDbTable.output.hashKey,\n primaryDynamodbTableRangeKey: dynamoDbTable.output.rangeKey,\n cognitoUserPoolId: cognito.userPool.output.id,\n cognitoUserPoolArn: cognito.userPool.output.arn,\n cognitoUserPoolPasswordPolicy: cognito.userPool.output.passwordPolicy,\n cognitoAppClientId: cognito.userPoolClient.output.id,\n eventBusArn: eventBus.output.arn\n });\n\n tagResources({\n WbyProjectName: String(process.env[\"WEBINY_PROJECT_NAME\"]),\n WbyEnvironment: String(process.env[\"WEBINY_ENV\"])\n });\n\n return {\n dynamoDbTable,\n vpc,\n ...cognito,\n fileManagerBucket,\n eventBus,\n elasticSearch\n };\n }\n });\n}\n"],"mappings":"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"}
|
package/apps/lambdaUtils.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import * as pulumi from "@pulumi/pulumi";
|
|
2
2
|
import * as aws from "@pulumi/aws";
|
|
3
3
|
import { PulumiApp } from "@webiny/pulumi";
|
|
4
|
+
export * from "../utils/lambdaEnvVariables";
|
|
4
5
|
interface LambdaRoleParams {
|
|
5
6
|
name: string;
|
|
6
7
|
policy?: pulumi.Output<aws.iam.Policy>;
|
|
7
8
|
executionRole?: pulumi.Input<string>;
|
|
8
9
|
}
|
|
9
10
|
export declare function createLambdaRole(app: PulumiApp, params: LambdaRoleParams): import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Role>;
|
|
10
|
-
export declare function getCommonLambdaEnvVariables(): Record<string, string>;
|
|
11
|
-
export {};
|
package/apps/lambdaUtils.js
CHANGED
|
@@ -3,11 +3,27 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
createLambdaRole: true
|
|
8
|
+
};
|
|
6
9
|
exports.createLambdaRole = createLambdaRole;
|
|
7
|
-
exports.getCommonLambdaEnvVariables = getCommonLambdaEnvVariables;
|
|
8
10
|
|
|
9
11
|
var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
10
12
|
|
|
13
|
+
var _lambdaEnvVariables = require("../utils/lambdaEnvVariables");
|
|
14
|
+
|
|
15
|
+
Object.keys(_lambdaEnvVariables).forEach(function (key) {
|
|
16
|
+
if (key === "default" || key === "__esModule") return;
|
|
17
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
18
|
+
if (key in exports && exports[key] === _lambdaEnvVariables[key]) return;
|
|
19
|
+
Object.defineProperty(exports, key, {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () {
|
|
22
|
+
return _lambdaEnvVariables[key];
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
|
|
11
27
|
var _common = require("./common");
|
|
12
28
|
|
|
13
29
|
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); }
|
|
@@ -63,25 +79,4 @@ function createLambdaRole(app, params) {
|
|
|
63
79
|
}
|
|
64
80
|
|
|
65
81
|
return role;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
function getCommonLambdaEnvVariables() {
|
|
69
|
-
// Apart from a couple of basic environment variables like STAGED_ROLLOUTS_VARIANT and DEBUG,
|
|
70
|
-
// we also take into consideration variables that have `WEBINY_` and `WCP_` prefix in their names.
|
|
71
|
-
const envVars = Object.keys(process.env).reduce((current, environmentVariableName) => {
|
|
72
|
-
const startsWithWebiny = environmentVariableName.startsWith("WEBINY_");
|
|
73
|
-
const startsWithWcp = environmentVariableName.startsWith("WCP_");
|
|
74
|
-
|
|
75
|
-
if (startsWithWebiny || startsWithWcp) {
|
|
76
|
-
current[environmentVariableName] = process.env[environmentVariableName];
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return current;
|
|
80
|
-
}, {
|
|
81
|
-
// STAGED_ROLLOUTS_VARIANT: app.ctx.variant || "",
|
|
82
|
-
// Among other things, this determines the amount of information we reveal on runtime errors.
|
|
83
|
-
// https://www.webiny.com/docs/how-to-guides/environment-variables/#debug-environment-variable
|
|
84
|
-
DEBUG: String(process.env.DEBUG)
|
|
85
|
-
});
|
|
86
|
-
return envVars;
|
|
87
82
|
}
|
package/apps/lambdaUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createLambdaRole","app","params","role","addResource","aws","iam","Role","name","config","assumeRolePolicy","Version","Statement","Action","Principal","Service","Effect","policy","RolePolicyAttachment","output","policyArn","arn","executionRole","vpc","getModule","VpcConfig","enabled","ManagedPolicy","AWSLambdaVPCAccessExecutionRole","AWSLambdaBasicExecutionRole"
|
|
1
|
+
{"version":3,"names":["createLambdaRole","app","params","role","addResource","aws","iam","Role","name","config","assumeRolePolicy","Version","Statement","Action","Principal","Service","Effect","policy","RolePolicyAttachment","output","policyArn","arn","executionRole","vpc","getModule","VpcConfig","enabled","ManagedPolicy","AWSLambdaVPCAccessExecutionRole","AWSLambdaBasicExecutionRole"],"sources":["lambdaUtils.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { PulumiApp } from \"@webiny/pulumi\";\nexport * from \"../utils/lambdaEnvVariables\";\n\nimport { VpcConfig } from \"./common\";\n\ninterface LambdaRoleParams {\n name: string;\n policy?: pulumi.Output<aws.iam.Policy>;\n executionRole?: pulumi.Input<string>;\n}\n\nexport function createLambdaRole(app: PulumiApp, params: LambdaRoleParams) {\n const role = app.addResource(aws.iam.Role, {\n name: params.name,\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 if (params.policy) {\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${params.name}-policy`,\n config: {\n role: role.output,\n policyArn: params.policy.arn\n }\n });\n }\n\n if (params.executionRole) {\n // If execution role is set, use it.\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${params.name}-execution-role`,\n config: {\n role: role.output,\n policyArn: params.executionRole\n }\n });\n } else {\n // Fallback to default execution role.\n const vpc = app.getModule(VpcConfig);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${params.name}-execution-role`,\n config: {\n role: role.output,\n policyArn: vpc.enabled\n ? aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole\n : aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n }\n\n return role;\n}\n"],"mappings":";;;;;;;;;;AACA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;;;;;AAQO,SAASA,gBAAT,CAA0BC,GAA1B,EAA0CC,MAA1C,EAAoE;EACvE,MAAMC,IAAI,GAAGF,GAAG,CAACG,WAAJ,CAAgBC,GAAG,CAACC,GAAJ,CAAQC,IAAxB,EAA8B;IACvCC,IAAI,EAAEN,MAAM,CAACM,IAD0B;IAEvCC,MAAM,EAAE;MACJC,gBAAgB,EAAE;QACdC,OAAO,EAAE,YADK;QAEdC,SAAS,EAAE,CACP;UACIC,MAAM,EAAE,gBADZ;UAEIC,SAAS,EAAE;YACPC,OAAO,EAAE;UADF,CAFf;UAKIC,MAAM,EAAE;QALZ,CADO;MAFG;IADd;EAF+B,CAA9B,CAAb;;EAkBA,IAAId,MAAM,CAACe,MAAX,EAAmB;IACfhB,GAAG,CAACG,WAAJ,CAAgBC,GAAG,CAACC,GAAJ,CAAQY,oBAAxB,EAA8C;MAC1CV,IAAI,EAAG,GAAEN,MAAM,CAACM,IAAK,SADqB;MAE1CC,MAAM,EAAE;QACJN,IAAI,EAAEA,IAAI,CAACgB,MADP;QAEJC,SAAS,EAAElB,MAAM,CAACe,MAAP,CAAcI;MAFrB;IAFkC,CAA9C;EAOH;;EAED,IAAInB,MAAM,CAACoB,aAAX,EAA0B;IACtB;IACArB,GAAG,CAACG,WAAJ,CAAgBC,GAAG,CAACC,GAAJ,CAAQY,oBAAxB,EAA8C;MAC1CV,IAAI,EAAG,GAAEN,MAAM,CAACM,IAAK,iBADqB;MAE1CC,MAAM,EAAE;QACJN,IAAI,EAAEA,IAAI,CAACgB,MADP;QAEJC,SAAS,EAAElB,MAAM,CAACoB;MAFd;IAFkC,CAA9C;EAOH,CATD,MASO;IACH;IACA,MAAMC,GAAG,GAAGtB,GAAG,CAACuB,SAAJ,CAAcC,iBAAd,CAAZ;IAEAxB,GAAG,CAACG,WAAJ,CAAgBC,GAAG,CAACC,GAAJ,CAAQY,oBAAxB,EAA8C;MAC1CV,IAAI,EAAG,GAAEN,MAAM,CAACM,IAAK,iBADqB;MAE1CC,MAAM,EAAE;QACJN,IAAI,EAAEA,IAAI,CAACgB,MADP;QAEJC,SAAS,EAAEG,GAAG,CAACG,OAAJ,GACLrB,GAAG,CAACC,GAAJ,CAAQqB,aAAR,CAAsBC,+BADjB,GAELvB,GAAG,CAACC,GAAJ,CAAQqB,aAAR,CAAsBE;MAJxB;IAFkC,CAA9C;EASH;;EAED,OAAO1B,IAAP;AACH"}
|
|
@@ -103,9 +103,9 @@ function createRenderSubscriber(app, policy, params) {
|
|
|
103
103
|
timeout: 30,
|
|
104
104
|
memorySize: 512,
|
|
105
105
|
environment: {
|
|
106
|
-
variables:
|
|
106
|
+
variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => _objectSpread(_objectSpread({}, value), {}, {
|
|
107
107
|
DB_TABLE: params.dbTableName
|
|
108
|
-
})
|
|
108
|
+
}))
|
|
109
109
|
},
|
|
110
110
|
description: "Subscribes to render events on event bus",
|
|
111
111
|
code: new pulumi.asset.AssetArchive({
|
|
@@ -172,9 +172,9 @@ function createRenderer(app, queue, policy, params) {
|
|
|
172
172
|
memorySize: 2048,
|
|
173
173
|
layers: [(0, _awsLayers.getLayerArn)("shelf-io-chrome-aws-lambda-layer")],
|
|
174
174
|
environment: {
|
|
175
|
-
variables:
|
|
175
|
+
variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => _objectSpread(_objectSpread({}, value), {}, {
|
|
176
176
|
DB_TABLE: params.dbTableName
|
|
177
|
-
})
|
|
177
|
+
}))
|
|
178
178
|
},
|
|
179
179
|
description: "Renders pages and stores output in an S3 bucket of choice.",
|
|
180
180
|
code: new pulumi.asset.AssetArchive({
|
|
@@ -215,9 +215,9 @@ function createFlushService(app, policy, params) {
|
|
|
215
215
|
timeout: 30,
|
|
216
216
|
memorySize: 512,
|
|
217
217
|
environment: {
|
|
218
|
-
variables:
|
|
218
|
+
variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => _objectSpread(_objectSpread({}, value), {}, {
|
|
219
219
|
DB_TABLE: params.dbTableName
|
|
220
|
-
})
|
|
220
|
+
}))
|
|
221
221
|
},
|
|
222
222
|
description: "Subscribes to flush events on event bus",
|
|
223
223
|
code: new pulumi.asset.AssetArchive({
|