@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.
Files changed (35) hide show
  1. package/apps/admin/createAdminPulumiApp.d.ts +3 -2
  2. package/apps/admin/createAdminPulumiApp.js +11 -8
  3. package/apps/admin/createAdminPulumiApp.js.map +1 -1
  4. package/apps/api/ApiApwScheduler.js +3 -3
  5. package/apps/api/ApiApwScheduler.js.map +1 -1
  6. package/apps/api/ApiFileManager.js +6 -6
  7. package/apps/api/ApiFileManager.js.map +1 -1
  8. package/apps/api/ApiGraphql.d.ts +3 -0
  9. package/apps/api/ApiGraphql.js +25 -2
  10. package/apps/api/ApiGraphql.js.map +1 -1
  11. package/apps/api/ApiHeadlessCMS.js +2 -2
  12. package/apps/api/ApiHeadlessCMS.js.map +1 -1
  13. package/apps/api/ApiPageBuilder.js +8 -8
  14. package/apps/api/ApiPageBuilder.js.map +1 -1
  15. package/apps/api/createApiPulumiApp.d.ts +17 -2
  16. package/apps/api/createApiPulumiApp.js +31 -10
  17. package/apps/api/createApiPulumiApp.js.map +1 -1
  18. package/apps/core/createCorePulumiApp.d.ts +2 -1
  19. package/apps/core/createCorePulumiApp.js +8 -5
  20. package/apps/core/createCorePulumiApp.js.map +1 -1
  21. package/apps/lambdaUtils.d.ts +1 -2
  22. package/apps/lambdaUtils.js +17 -22
  23. package/apps/lambdaUtils.js.map +1 -1
  24. package/apps/website/WebsitePrerendering.js +6 -6
  25. package/apps/website/WebsitePrerendering.js.map +1 -1
  26. package/apps/website/createWebsitePulumiApp.d.ts +3 -2
  27. package/apps/website/createWebsitePulumiApp.js +14 -10
  28. package/apps/website/createWebsitePulumiApp.js.map +1 -1
  29. package/package.json +9 -9
  30. package/utils/index.d.ts +1 -0
  31. package/utils/index.js +21 -1
  32. package/utils/index.js.map +1 -1
  33. package/utils/lambdaEnvVariables.d.ts +20 -0
  34. package/utils/lambdaEnvVariables.js +82 -0
  35. 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: ReturnType<typeof createApiPulumiApp>) => void | Promise<void>;
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
- return (0, _pulumi.createPulumiApp)({
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
- // Enables logs forwarding.
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
- const WEBINY_LOGS_FORWARD_URL = String(process.env.WEBINY_LOGS_FORWARD_URL); // Register core output as a module available for all other modules
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: ReturnType<typeof createCorePulumiApp>) => void | Promise<void>;
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","pulumi"],"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 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: ReturnType<typeof createCorePulumiApp>) => 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 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 if (projectAppParams.pulumi) {\n await projectAppParams.pulumi(app as ReturnType<typeof createCorePulumiApp>);\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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"}
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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"}
@@ -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 {};
@@ -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
  }
@@ -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","getCommonLambdaEnvVariables","envVars","Object","keys","process","env","reduce","current","environmentVariableName","startsWithWebiny","startsWith","startsWithWcp","DEBUG","String"],"sources":["lambdaUtils.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { PulumiApp } from \"@webiny/pulumi\";\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\nexport function getCommonLambdaEnvVariables() {\n // Apart from a couple of basic environment variables like STAGED_ROLLOUTS_VARIANT and DEBUG,\n // we also take into consideration variables that have `WEBINY_` and `WCP_` prefix in their names.\n const envVars: Record<string, string> = Object.keys(process.env).reduce(\n (current, environmentVariableName) => {\n const startsWithWebiny = environmentVariableName.startsWith(\"WEBINY_\");\n const startsWithWcp = environmentVariableName.startsWith(\"WCP_\");\n\n if (startsWithWebiny || startsWithWcp) {\n current[environmentVariableName] = process.env[environmentVariableName];\n }\n return current;\n },\n {\n // STAGED_ROLLOUTS_VARIANT: app.ctx.variant || \"\",\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 DEBUG: String(process.env.DEBUG)\n } as Record<string, any>\n );\n\n return envVars;\n}\n"],"mappings":";;;;;;;;AACA;;AAGA;;;;;;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;;AAEM,SAAS2B,2BAAT,GAAuC;EAC1C;EACA;EACA,MAAMC,OAA+B,GAAGC,MAAM,CAACC,IAAP,CAAYC,OAAO,CAACC,GAApB,EAAyBC,MAAzB,CACpC,CAACC,OAAD,EAAUC,uBAAV,KAAsC;IAClC,MAAMC,gBAAgB,GAAGD,uBAAuB,CAACE,UAAxB,CAAmC,SAAnC,CAAzB;IACA,MAAMC,aAAa,GAAGH,uBAAuB,CAACE,UAAxB,CAAmC,MAAnC,CAAtB;;IAEA,IAAID,gBAAgB,IAAIE,aAAxB,EAAuC;MACnCJ,OAAO,CAACC,uBAAD,CAAP,GAAmCJ,OAAO,CAACC,GAAR,CAAYG,uBAAZ,CAAnC;IACH;;IACD,OAAOD,OAAP;EACH,CATmC,EAUpC;IACI;IACA;IACA;IACAK,KAAK,EAAEC,MAAM,CAACT,OAAO,CAACC,GAAR,CAAYO,KAAb;EAJjB,CAVoC,CAAxC;EAkBA,OAAOX,OAAP;AACH"}
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: _objectSpread(_objectSpread({}, (0, _lambdaUtils.getCommonLambdaEnvVariables)()), {}, {
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: _objectSpread(_objectSpread({}, (0, _lambdaUtils.getCommonLambdaEnvVariables)()), {}, {
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: _objectSpread(_objectSpread({}, (0, _lambdaUtils.getCommonLambdaEnvVariables)()), {}, {
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({