@webiny/pulumi-aws 5.37.8-beta.0 → 5.38.0-beta.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.js +3 -1
- package/apps/admin/index.js +3 -1
- package/apps/api/ApiApwScheduler.js +6 -3
- package/apps/api/ApiApwScheduler.js.map +1 -1
- package/apps/api/ApiCloudfront.js +3 -1
- package/apps/api/ApiFileManager.js +7 -4
- package/apps/api/ApiFileManager.js.map +1 -1
- package/apps/api/ApiGateway.js +3 -1
- package/apps/api/ApiGraphql.js +5 -2
- package/apps/api/ApiGraphql.js.map +1 -1
- package/apps/api/ApiMigration.js +5 -2
- package/apps/api/ApiMigration.js.map +1 -1
- package/apps/api/ApiOutput.js +3 -1
- package/apps/api/ApiPageBuilder.js +8 -5
- package/apps/api/ApiPageBuilder.js.map +1 -1
- package/apps/api/createApiPulumiApp.js +8 -3
- package/apps/api/createApiPulumiApp.js.map +1 -1
- package/apps/api/index.js +3 -1
- package/apps/awsUtils.d.ts +1 -1
- package/apps/awsUtils.js +3 -1
- package/apps/common/CoreOutput.js +3 -1
- package/apps/common/VpcConfig.js +3 -1
- package/apps/common/index.js +3 -1
- package/apps/core/CoreCognito.js +3 -1
- package/apps/core/CoreDynamo.js +3 -1
- package/apps/core/CoreElasticSearch.js +5 -2
- package/apps/core/CoreElasticSearch.js.map +1 -1
- package/apps/core/CoreEventBus.js +3 -1
- package/apps/core/CoreFileManager.js +3 -1
- package/apps/core/CoreVpc.js +3 -1
- package/apps/core/cognitoIdentityProviders/amazon.js +3 -1
- package/apps/core/cognitoIdentityProviders/apple.js +3 -1
- package/apps/core/cognitoIdentityProviders/configure.js +3 -1
- package/apps/core/cognitoIdentityProviders/facebook.js +3 -1
- package/apps/core/cognitoIdentityProviders/getIdpConfig.js +3 -1
- package/apps/core/cognitoIdentityProviders/google.js +3 -1
- package/apps/core/cognitoIdentityProviders/index.js +3 -1
- package/apps/core/createCorePulumiApp.d.ts +2 -1
- package/apps/core/createCorePulumiApp.js +6 -1
- package/apps/core/createCorePulumiApp.js.map +1 -1
- package/apps/core/index.js +3 -1
- package/apps/createAppBucket.js +3 -1
- package/apps/customDomain.js +3 -1
- package/apps/index.js +3 -1
- package/apps/lambdaUtils.js +3 -1
- package/apps/react/createReactPulumiApp.js +3 -1
- package/apps/react/index.js +3 -1
- package/apps/tenantRouter.js +5 -2
- package/apps/tenantRouter.js.map +1 -1
- package/apps/website/WebsitePrerendering.js +7 -4
- package/apps/website/WebsitePrerendering.js.map +1 -1
- package/apps/website/createWebsitePulumiApp.d.ts +6 -5
- package/apps/website/createWebsitePulumiApp.js +3 -1
- package/apps/website/deliveryViewerRequest.js +3 -1
- package/apps/website/index.js +3 -1
- package/components/tenantRouter/WebsiteTenantRouter.js +5 -2
- package/components/tenantRouter/WebsiteTenantRouter.js.map +1 -1
- package/components/tenantRouter/functions/origin/request.js +3 -1
- package/constants.d.ts +1 -0
- package/constants.js +11 -0
- package/constants.js.map +1 -0
- package/enterprise/createAdminPulumiApp.js +3 -1
- package/enterprise/createApiPulumiApp.js +3 -1
- package/enterprise/createCorePulumiApp.js +3 -1
- package/enterprise/createWebsitePulumiApp.js +3 -1
- package/enterprise/index.js +3 -1
- package/index.d.ts +1 -0
- package/index.js +15 -1
- package/index.js.map +1 -1
- package/package.json +8 -8
- package/utils/addDomainsUrlsOutputs.js +3 -1
- package/utils/crawlDirectory.js +3 -1
- package/utils/getPresignedPost.js +3 -1
- package/utils/index.js +3 -1
- package/utils/lambdaEnvVariables.js +3 -1
- package/utils/storageMigrate.js +3 -1
- package/utils/tagResources.js +3 -1
- package/utils/uploadFolderToS3.js +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["path","_interopRequireWildcard","require","pulumi","aws","_installation","_pulumi2","_common","_lambdaUtils","_awsUtils","ApiPageBuilder","createAppModule","name","config","app","params","core","getModule","CoreOutput","addHandler","pbInstallationZipPath","join","resolve","createInstallationZip","s3","BucketObject","key","bucket","fileManagerBucketId","contentType","source","asset","FileAsset","exportResources","createExportResources","importResources","createImportResources","export","import","exports","policy","createExportLambdaPolicy","role","createLambdaRole","output","combine","addResource","lambda","Function","arn","runtime","handler","timeout","memorySize","description","code","AssetArchive","FileArchive","paths","workspace","environment","variables","getCommonLambdaEnvVariables","apply","value","_objectSpread2","default","env","S3_BUCKET","process","EXPORT_COMBINE_HANDLER","functions","awsAccountId","getAwsAccountId","awsRegion","getAwsRegion","elasticSearchEnabled","create","elasticSearch","iam","Policy","Version","Statement","Sid","Effect","Action","Resource","interpolate","primaryDynamodbTableArn","elasticsearchDomainArn","createImportLambdaPolicy","IMPORT_QUEUE_PROCESS_HANDLER","coreOutput","elasticsearchDynamodbTableArn","cognitoUserPoolArn"],"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 bucket: core.fileManagerBucketId,\n contentType: \"application/octet-stream\",\n source: new pulumi.asset.FileAsset(pbInstallationZipPath)\n });\n });\n\n const exportResources = createExportResources(app, params);\n const importResources = createImportResources(app, params);\n\n return {\n export: exportResources,\n import: importResources\n };\n }\n});\n\nfunction createExportResources(app: PulumiApp, params: PageBuilderParams) {\n const core = app.getModule(CoreOutput);\n\n const policy = createExportLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"pb-export-lambda-role\",\n policy: policy.output\n });\n\n const combine = app.addResource(aws.lambda.Function, {\n name: \"pb-export-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 export's combine workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/export/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-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 export's process workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/export/process/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId,\n EXPORT_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 createExportLambdaPolicy(app: PulumiApp) {\n const core = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n const awsRegion = getAwsRegion(app);\n\n const elasticSearchEnabled = !!app.params.create.elasticSearch;\n\n return app.addResource(aws.iam.Policy, {\n name: \"PbExportTaskLambdaPolicy\",\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 // Attach permissions for elastic search domain as well (if ES is enabled).\n ...(elasticSearchEnabled\n ? [\n {\n Sid: \"PermissionForES\",\n Effect: \"Allow\" as const,\n Action: \"es:*\",\n Resource: [\n pulumi.interpolate`${core.elasticsearchDomainArn}`,\n pulumi.interpolate`${core.elasticsearchDomainArn}/*`\n ]\n }\n ]\n : [])\n ]\n }\n }\n });\n}\n\nfunction createImportResources(app: PulumiApp, params: PageBuilderParams) {\n const core = app.getModule(CoreOutput);\n const policy = createImportLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"pb-import-lambda-role\",\n policy: policy.output\n });\n\n const process = app.addResource(aws.lambda.Function, {\n name: \"pb-import-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 queue process workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/import/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-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 queue create workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/import/create/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId,\n IMPORT_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 createImportLambdaPolicy(app: PulumiApp) {\n const coreOutput = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n const awsRegion = getAwsRegion(app);\n\n const elasticSearchEnabled = !!app.params.create.elasticSearch;\n\n return app.addResource(aws.iam.Policy, {\n name: \"ImportLambdaPolicy\",\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 ...(elasticSearchEnabled\n ? [\n {\n Sid: \"PermissionForES\",\n Effect: \"Allow\" as const,\n Action: \"es:*\",\n Resource: [\n pulumi.interpolate`${core.elasticsearchDomainArn}`,\n pulumi.interpolate`${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":["path","_interopRequireWildcard","require","pulumi","aws","_installation","_pulumi2","_common","_lambdaUtils","_awsUtils","_constants","ApiPageBuilder","createAppModule","name","config","app","params","core","getModule","CoreOutput","addHandler","pbInstallationZipPath","join","resolve","createInstallationZip","s3","BucketObject","key","bucket","fileManagerBucketId","contentType","source","asset","FileAsset","exportResources","createExportResources","importResources","createImportResources","export","import","exports","policy","createExportLambdaPolicy","role","createLambdaRole","output","combine","addResource","lambda","Function","arn","runtime","LAMBDA_RUNTIME","handler","timeout","memorySize","description","code","AssetArchive","FileArchive","paths","workspace","environment","variables","getCommonLambdaEnvVariables","apply","value","_objectSpread2","default","env","S3_BUCKET","process","EXPORT_COMBINE_HANDLER","functions","awsAccountId","getAwsAccountId","awsRegion","getAwsRegion","elasticSearchEnabled","create","elasticSearch","iam","Policy","Version","Statement","Sid","Effect","Action","Resource","interpolate","primaryDynamodbTableArn","elasticsearchDomainArn","createImportLambdaPolicy","IMPORT_QUEUE_PROCESS_HANDLER","coreOutput","elasticsearchDynamodbTableArn","cognitoUserPoolArn"],"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\";\nimport { LAMBDA_RUNTIME } from \"~/constants\";\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 bucket: core.fileManagerBucketId,\n contentType: \"application/octet-stream\",\n source: new pulumi.asset.FileAsset(pbInstallationZipPath)\n });\n });\n\n const exportResources = createExportResources(app, params);\n const importResources = createImportResources(app, params);\n\n return {\n export: exportResources,\n import: importResources\n };\n }\n});\n\nfunction createExportResources(app: PulumiApp, params: PageBuilderParams) {\n const core = app.getModule(CoreOutput);\n\n const policy = createExportLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"pb-export-lambda-role\",\n policy: policy.output\n });\n\n const combine = app.addResource(aws.lambda.Function, {\n name: \"pb-export-combine\",\n config: {\n role: role.output.arn,\n runtime: LAMBDA_RUNTIME,\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle export's combine workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/export/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-process\",\n config: {\n role: role.output.arn,\n runtime: LAMBDA_RUNTIME,\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle export's process workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/export/process/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId,\n EXPORT_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 createExportLambdaPolicy(app: PulumiApp) {\n const core = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n const awsRegion = getAwsRegion(app);\n\n const elasticSearchEnabled = !!app.params.create.elasticSearch;\n\n return app.addResource(aws.iam.Policy, {\n name: \"PbExportTaskLambdaPolicy\",\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 // Attach permissions for elastic search domain as well (if ES is enabled).\n ...(elasticSearchEnabled\n ? [\n {\n Sid: \"PermissionForES\",\n Effect: \"Allow\" as const,\n Action: \"es:*\",\n Resource: [\n pulumi.interpolate`${core.elasticsearchDomainArn}`,\n pulumi.interpolate`${core.elasticsearchDomainArn}/*`\n ]\n }\n ]\n : [])\n ]\n }\n }\n });\n}\n\nfunction createImportResources(app: PulumiApp, params: PageBuilderParams) {\n const core = app.getModule(CoreOutput);\n const policy = createImportLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"pb-import-lambda-role\",\n policy: policy.output\n });\n\n const process = app.addResource(aws.lambda.Function, {\n name: \"pb-import-queue-process\",\n config: {\n role: role.output.arn,\n runtime: LAMBDA_RUNTIME,\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 512,\n description: \"Handle import queue process workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/import/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-queue-create\",\n config: {\n role: role.output.arn,\n runtime: LAMBDA_RUNTIME,\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 512,\n description: \"Handle import queue create workflow\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"pageBuilder/import/create/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n S3_BUCKET: core.fileManagerBucketId,\n IMPORT_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 createImportLambdaPolicy(app: PulumiApp) {\n const coreOutput = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n const awsRegion = getAwsRegion(app);\n\n const elasticSearchEnabled = !!app.params.create.elasticSearch;\n\n return app.addResource(aws.iam.Policy, {\n name: \"ImportLambdaPolicy\",\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 ...(elasticSearchEnabled\n ? [\n {\n Sid: \"PermissionForES\",\n Effect: \"Allow\" as const,\n Action: \"es:*\",\n Resource: [\n pulumi.interpolate`${core.elasticsearchDomainArn}`,\n pulumi.interpolate`${core.elasticsearchDomainArn}/*`\n ]\n }\n ]\n : [])\n ]\n };\n\n return policy;\n })\n }\n });\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.createApiPulumiApp = void 0;
|
|
8
|
+
var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
7
9
|
var _pulumi = require("@webiny/pulumi");
|
|
8
10
|
var _ = require("./..");
|
|
9
11
|
var _customDomain = require("../customDomain");
|
|
@@ -149,7 +151,7 @@ const createApiPulumiApp = (projectAppParams = {}) => {
|
|
|
149
151
|
(0, _customDomain.applyCustomDomain)(cloudfront, domains);
|
|
150
152
|
}
|
|
151
153
|
app.addOutputs({
|
|
152
|
-
region:
|
|
154
|
+
region: aws.config.region,
|
|
153
155
|
cognitoUserPoolId: core.cognitoUserPoolId,
|
|
154
156
|
cognitoAppClientId: core.cognitoAppClientId,
|
|
155
157
|
cognitoUserPoolPasswordPolicy: core.cognitoUserPoolPasswordPolicy,
|
|
@@ -159,7 +161,8 @@ const createApiPulumiApp = (projectAppParams = {}) => {
|
|
|
159
161
|
apwSchedulerEventTargetId: apwScheduler.eventTarget.output.targetId,
|
|
160
162
|
dynamoDbTable: core.primaryDynamodbTableName,
|
|
161
163
|
dynamoDbElasticsearchTable: core.elasticsearchDynamodbTableName,
|
|
162
|
-
migrationLambdaArn: migration.function.output.arn
|
|
164
|
+
migrationLambdaArn: migration.function.output.arn,
|
|
165
|
+
graphqlLambdaName: graphql.functions.graphql.output.name
|
|
163
166
|
});
|
|
164
167
|
app.addHandler(() => {
|
|
165
168
|
(0, _utils.addDomainsUrlsOutputs)({
|
|
@@ -189,4 +192,6 @@ const createApiPulumiApp = (projectAppParams = {}) => {
|
|
|
189
192
|
});
|
|
190
193
|
return (0, _utils.withCommonLambdaEnvVariables)(app);
|
|
191
194
|
};
|
|
192
|
-
exports.createApiPulumiApp = createApiPulumiApp;
|
|
195
|
+
exports.createApiPulumiApp = createApiPulumiApp;
|
|
196
|
+
|
|
197
|
+
//# sourceMappingURL=createApiPulumiApp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pulumi","require","_","_customDomain","_utils","createApiPulumiApp","projectAppParams","app","createPulumiApp","name","path","config","program","elasticSearch","getParam","domainName","process","env","AWS_ELASTIC_SEARCH_DOMAIN_NAME","indexPrefix","ELASTIC_SEARCH_INDEX_PREFIX","pulumiResourceNamePrefix","onResource","resource","startsWith","pulumi","addHandler","productionEnvironments","params","create","isProduction","includes","run","WEBINY_LOGS_FORWARD_URL","String","core","addModule","CoreOutput","vpcEnabled","vpc","VpcConfig","enabled","pageBuilder","ApiPageBuilder","COGNITO_REGION","AWS_REGION","COGNITO_USER_POOL_ID","cognitoUserPoolId","DB_TABLE","primaryDynamodbTableName","DB_TABLE_ELASTICSEARCH","elasticsearchDynamodbTableName","ELASTIC_SEARCH_ENDPOINT","elasticsearchDomainEndpoint","S3_BUCKET","fileManagerBucketId","fileManager","ApiFileManager","apwScheduler","ApiApwScheduler","primaryDynamodbTableArn","graphql","ApiGraphql","EVENT_BUS","eventBusArn","IMPORT_CREATE_HANDLER","import","functions","output","arn","EXPORT_PROCESS_HANDLER","export","OKTA_ISSUER","APW_SCHEDULER_SCHEDULE_ACTION_HANDLER","scheduleAction","lambda","apwSchedulerEventRule","eventRule","apwSchedulerEventTarget","eventTarget","apiGateway","ApiGateway","method","function","download","cloudfront","ApiCloudfront","migration","ApiMigration","domains","applyCustomDomain","addOutputs","region","cognitoAppClientId","cognitoUserPoolPasswordPolicy","apwSchedulerScheduleAction","apwSchedulerExecuteAction","executeAction","apwSchedulerEventTargetId","targetId","dynamoDbTable","dynamoDbElasticsearchTable","migrationLambdaArn","addDomainsUrlsOutputs","cloudfrontDistribution","map","distributionDomain","distributionUrl","usedDomain","usedUrl","tagResources","WbyProjectName","WbyEnvironment","withCommonLambdaEnvVariables","exports"],"sources":["createApiPulumiApp.ts"],"sourcesContent":["import { createPulumiApp, PulumiAppParam, PulumiAppParamCallback } from \"@webiny/pulumi\";\nimport {\n ApiGateway,\n ApiApwScheduler,\n ApiCloudfront,\n ApiFileManager,\n ApiGraphql,\n ApiMigration,\n ApiPageBuilder,\n CoreOutput,\n VpcConfig\n} from \"~/apps\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { tagResources, withCommonLambdaEnvVariables, addDomainsUrlsOutputs } from \"~/utils\";\n\nexport type ApiPulumiApp = ReturnType<typeof createApiPulumiApp>;\n\nexport interface CreateApiPulumiAppParams {\n /**\n * Enables ElasticSearch infrastructure.\n * Note that it requires also changes in application code.\n */\n elasticSearch?: PulumiAppParam<\n | boolean\n | Partial<{\n domainName: string;\n indexPrefix: string;\n }>\n >;\n\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 /**\n * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.\n */\n pulumiResourceNamePrefix?: PulumiAppParam<string>;\n\n /**\n * Treats provided environments as production environments, which\n * are deployed in production deployment mode.\n * https://www.webiny.com/docs/architecture/deployment-modes/production\n */\n productionEnvironments?: PulumiAppParam<string[]>;\n}\n\nexport const createApiPulumiApp = (projectAppParams: CreateApiPulumiAppParams = {}) => {\n const app = createPulumiApp({\n name: \"api\",\n path: \"apps/api\",\n config: projectAppParams,\n program: async app => {\n if (projectAppParams.elasticSearch) {\n const elasticSearch = app.getParam(projectAppParams.elasticSearch);\n if (typeof elasticSearch === \"object\") {\n if (elasticSearch.domainName) {\n process.env.AWS_ELASTIC_SEARCH_DOMAIN_NAME = elasticSearch.domainName;\n }\n\n if (elasticSearch.indexPrefix) {\n process.env.ELASTIC_SEARCH_INDEX_PREFIX = elasticSearch.indexPrefix;\n }\n }\n }\n\n const pulumiResourceNamePrefix = app.getParam(\n projectAppParams.pulumiResourceNamePrefix\n );\n if (pulumiResourceNamePrefix) {\n app.onResource(resource => {\n if (!resource.name.startsWith(pulumiResourceNamePrefix)) {\n resource.name = `${pulumiResourceNamePrefix}${resource.name}`;\n }\n });\n }\n\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 const productionEnvironments = app.params.create.productionEnvironments || [\"prod\"];\n const isProduction = productionEnvironments.includes(app.params.run.env);\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 const vpcEnabled = app.getParam(projectAppParams?.vpc) ?? isProduction;\n app.addModule(VpcConfig, { enabled: vpcEnabled });\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 env: {\n DB_TABLE: core.primaryDynamodbTableName\n }\n });\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_CREATE_HANDLER: pageBuilder.import.functions.create.output.arn,\n EXPORT_PROCESS_HANDLER: pageBuilder.export.functions.process.output.arn,\n // TODO: move to okta plugin\n OKTA_ISSUER: process.env[\"OKTA_ISSUER\"],\n WEBINY_LOGS_FORWARD_URL,\n /**\n * APW\n */\n APW_SCHEDULER_SCHEDULE_ACTION_HANDLER:\n apwScheduler.scheduleAction.lambda.output.arn\n },\n apwSchedulerEventRule: apwScheduler.eventRule.output,\n apwSchedulerEventTarget: apwScheduler.eventTarget.output\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: graphql.functions.graphql.output.arn\n },\n \"cms-options\": {\n path: \"/cms/{key+}\",\n method: \"OPTIONS\",\n function: graphql.functions.graphql.output.arn\n },\n \"files-catch-all\": {\n path: \"/{path+}\",\n method: \"ANY\",\n function: fileManager.functions.download.output.arn\n }\n });\n\n const cloudfront = app.addModule(ApiCloudfront);\n const migration = app.addModule(ApiMigration);\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 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 migrationLambdaArn: migration.function.output.arn\n });\n\n app.addHandler(() => {\n addDomainsUrlsOutputs({\n app,\n cloudfrontDistribution: cloudfront,\n map: {\n distributionDomain: \"cloudfrontApiDomain\",\n distributionUrl: \"cloudfrontApiUrl\",\n usedDomain: \"apiDomain\",\n usedUrl: \"apiUrl\"\n }\n });\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 apiGateway,\n cloudfront,\n apwScheduler,\n migration\n };\n }\n });\n\n return withCommonLambdaEnvVariables(app);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["aws","_interopRequireWildcard","require","_pulumi","_","_customDomain","_utils","createApiPulumiApp","projectAppParams","app","createPulumiApp","name","path","config","program","elasticSearch","getParam","domainName","process","env","AWS_ELASTIC_SEARCH_DOMAIN_NAME","indexPrefix","ELASTIC_SEARCH_INDEX_PREFIX","pulumiResourceNamePrefix","onResource","resource","startsWith","pulumi","addHandler","productionEnvironments","params","create","isProduction","includes","run","WEBINY_LOGS_FORWARD_URL","String","core","addModule","CoreOutput","vpcEnabled","vpc","VpcConfig","enabled","pageBuilder","ApiPageBuilder","COGNITO_REGION","AWS_REGION","COGNITO_USER_POOL_ID","cognitoUserPoolId","DB_TABLE","primaryDynamodbTableName","DB_TABLE_ELASTICSEARCH","elasticsearchDynamodbTableName","ELASTIC_SEARCH_ENDPOINT","elasticsearchDomainEndpoint","S3_BUCKET","fileManagerBucketId","fileManager","ApiFileManager","apwScheduler","ApiApwScheduler","primaryDynamodbTableArn","graphql","ApiGraphql","EVENT_BUS","eventBusArn","IMPORT_CREATE_HANDLER","import","functions","output","arn","EXPORT_PROCESS_HANDLER","export","OKTA_ISSUER","APW_SCHEDULER_SCHEDULE_ACTION_HANDLER","scheduleAction","lambda","apwSchedulerEventRule","eventRule","apwSchedulerEventTarget","eventTarget","apiGateway","ApiGateway","method","function","download","cloudfront","ApiCloudfront","migration","ApiMigration","domains","applyCustomDomain","addOutputs","region","cognitoAppClientId","cognitoUserPoolPasswordPolicy","apwSchedulerScheduleAction","apwSchedulerExecuteAction","executeAction","apwSchedulerEventTargetId","targetId","dynamoDbTable","dynamoDbElasticsearchTable","migrationLambdaArn","graphqlLambdaName","addDomainsUrlsOutputs","cloudfrontDistribution","map","distributionDomain","distributionUrl","usedDomain","usedUrl","tagResources","WbyProjectName","WbyEnvironment","withCommonLambdaEnvVariables","exports"],"sources":["createApiPulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport { createPulumiApp, PulumiAppParam, PulumiAppParamCallback } from \"@webiny/pulumi\";\nimport {\n ApiGateway,\n ApiApwScheduler,\n ApiCloudfront,\n ApiFileManager,\n ApiGraphql,\n ApiMigration,\n ApiPageBuilder,\n CoreOutput,\n VpcConfig\n} from \"~/apps\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { tagResources, withCommonLambdaEnvVariables, addDomainsUrlsOutputs } from \"~/utils\";\n\nexport type ApiPulumiApp = ReturnType<typeof createApiPulumiApp>;\n\nexport interface CreateApiPulumiAppParams {\n /**\n * Enables ElasticSearch infrastructure.\n * Note that it requires also changes in application code.\n */\n elasticSearch?: PulumiAppParam<\n | boolean\n | Partial<{\n domainName: string;\n indexPrefix: string;\n }>\n >;\n\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 /**\n * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.\n */\n pulumiResourceNamePrefix?: PulumiAppParam<string>;\n\n /**\n * Treats provided environments as production environments, which\n * are deployed in production deployment mode.\n * https://www.webiny.com/docs/architecture/deployment-modes/production\n */\n productionEnvironments?: PulumiAppParam<string[]>;\n}\n\nexport const createApiPulumiApp = (projectAppParams: CreateApiPulumiAppParams = {}) => {\n const app = createPulumiApp({\n name: \"api\",\n path: \"apps/api\",\n config: projectAppParams,\n program: async app => {\n if (projectAppParams.elasticSearch) {\n const elasticSearch = app.getParam(projectAppParams.elasticSearch);\n if (typeof elasticSearch === \"object\") {\n if (elasticSearch.domainName) {\n process.env.AWS_ELASTIC_SEARCH_DOMAIN_NAME = elasticSearch.domainName;\n }\n\n if (elasticSearch.indexPrefix) {\n process.env.ELASTIC_SEARCH_INDEX_PREFIX = elasticSearch.indexPrefix;\n }\n }\n }\n\n const pulumiResourceNamePrefix = app.getParam(\n projectAppParams.pulumiResourceNamePrefix\n );\n if (pulumiResourceNamePrefix) {\n app.onResource(resource => {\n if (!resource.name.startsWith(pulumiResourceNamePrefix)) {\n resource.name = `${pulumiResourceNamePrefix}${resource.name}`;\n }\n });\n }\n\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 const productionEnvironments = app.params.create.productionEnvironments || [\"prod\"];\n const isProduction = productionEnvironments.includes(app.params.run.env);\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 const vpcEnabled = app.getParam(projectAppParams?.vpc) ?? isProduction;\n app.addModule(VpcConfig, { enabled: vpcEnabled });\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 env: {\n DB_TABLE: core.primaryDynamodbTableName\n }\n });\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_CREATE_HANDLER: pageBuilder.import.functions.create.output.arn,\n EXPORT_PROCESS_HANDLER: pageBuilder.export.functions.process.output.arn,\n // TODO: move to okta plugin\n OKTA_ISSUER: process.env[\"OKTA_ISSUER\"],\n WEBINY_LOGS_FORWARD_URL,\n /**\n * APW\n */\n APW_SCHEDULER_SCHEDULE_ACTION_HANDLER:\n apwScheduler.scheduleAction.lambda.output.arn\n },\n apwSchedulerEventRule: apwScheduler.eventRule.output,\n apwSchedulerEventTarget: apwScheduler.eventTarget.output\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: graphql.functions.graphql.output.arn\n },\n \"cms-options\": {\n path: \"/cms/{key+}\",\n method: \"OPTIONS\",\n function: graphql.functions.graphql.output.arn\n },\n \"files-catch-all\": {\n path: \"/{path+}\",\n method: \"ANY\",\n function: fileManager.functions.download.output.arn\n }\n });\n\n const cloudfront = app.addModule(ApiCloudfront);\n const migration = app.addModule(ApiMigration);\n\n const domains = app.getParam(projectAppParams.domains);\n if (domains) {\n applyCustomDomain(cloudfront, domains);\n }\n\n app.addOutputs({\n region: aws.config.region,\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 migrationLambdaArn: migration.function.output.arn,\n graphqlLambdaName: graphql.functions.graphql.output.name\n });\n\n app.addHandler(() => {\n addDomainsUrlsOutputs({\n app,\n cloudfrontDistribution: cloudfront,\n map: {\n distributionDomain: \"cloudfrontApiDomain\",\n distributionUrl: \"cloudfrontApiUrl\",\n usedDomain: \"apiDomain\",\n usedUrl: \"apiUrl\"\n }\n });\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 apiGateway,\n cloudfront,\n apwScheduler,\n migration\n };\n }\n });\n\n return withCommonLambdaEnvVariables(app);\n};\n"],"mappings":"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"}
|
package/apps/api/index.js
CHANGED
package/apps/awsUtils.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { PulumiApp } from "@webiny/pulumi";
|
|
2
2
|
export declare function getAwsAccountId(app: PulumiApp): import("@pulumi/pulumi").Output<string>;
|
|
3
|
-
export declare function getAwsRegion(app: PulumiApp): import("@pulumi/pulumi").Output<"
|
|
3
|
+
export declare function getAwsRegion(app: PulumiApp): import("@pulumi/pulumi").Output<"af-south-1" | "ap-east-1" | "ap-northeast-1" | "ap-northeast-2" | "ap-northeast-3" | "ap-south-1" | "ap-south-2" | "ap-southeast-1" | "ap-southeast-2" | "ap-southeast-3" | "ca-central-1" | "cn-north-1" | "cn-northwest-1" | "eu-central-1" | "eu-central-2" | "eu-north-1" | "eu-south-1" | "eu-south-2" | "eu-west-1" | "eu-west-2" | "eu-west-3" | "me-central-1" | "me-south-1" | "sa-east-1" | "us-gov-east-1" | "us-gov-west-1" | "us-east-1" | "us-east-2" | "us-west-1" | "us-west-2">;
|
package/apps/awsUtils.js
CHANGED
package/apps/common/VpcConfig.js
CHANGED
package/apps/common/index.js
CHANGED
package/apps/core/CoreCognito.js
CHANGED
package/apps/core/CoreDynamo.js
CHANGED
|
@@ -12,6 +12,7 @@ var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
|
12
12
|
var _pulumi2 = require("@webiny/pulumi");
|
|
13
13
|
var _awsUtils = require("../awsUtils");
|
|
14
14
|
var _CoreVpc = require("./CoreVpc");
|
|
15
|
+
var _constants = require("../../constants");
|
|
15
16
|
function getDevClusterConfig() {
|
|
16
17
|
return {
|
|
17
18
|
instanceType: "t3.small.elasticsearch"
|
|
@@ -202,7 +203,7 @@ const ElasticSearch = (0, _pulumi2.createAppModule)({
|
|
|
202
203
|
name: "dynamo-to-elastic",
|
|
203
204
|
config: {
|
|
204
205
|
role: role.output.arn,
|
|
205
|
-
runtime:
|
|
206
|
+
runtime: _constants.LAMBDA_RUNTIME,
|
|
206
207
|
handler: "handler.handler",
|
|
207
208
|
timeout: 600,
|
|
208
209
|
memorySize: 512,
|
|
@@ -269,4 +270,6 @@ function getDynamoDbToElasticLambdaPolicy(app, domain) {
|
|
|
269
270
|
}
|
|
270
271
|
}
|
|
271
272
|
});
|
|
272
|
-
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
//# sourceMappingURL=CoreElasticSearch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_path","_interopRequireDefault","require","pulumi","_interopRequireWildcard","aws","_pulumi2","_awsUtils","_CoreVpc","getDevClusterConfig","instanceType","getProdClusterConfig","instanceCount","zoneAwarenessEnabled","zoneAwarenessConfig","availabilityZoneCount","ElasticSearch","createAppModule","name","config","app","params","domainName","accountId","getAwsAccountId","productionEnvironments","create","isProduction","includes","run","env","vpc","getModule","CoreVpc","optional","domain","domainPolicy","process","AWS_ELASTIC_SEARCH_DOMAIN_NAME","String","addRemoteResource","elasticsearch","getDomain","async","addResource","Domain","elasticsearchVersion","clusterConfig","vpcOptions","subnetIds","subnets","private","map","s","output","id","securityGroupIds","defaultSecurityGroupId","undefined","ebsOptions","ebsEnabled","volumeSize","volumeType","advancedOptions","snapshotOptions","automatedSnapshotStartHour","opts","protect","DomainPolicy","accessPolicies","Version","Statement","Effect","Principal","AWS","Action","Resource","interpolate","arn","table","dynamodb","Table","attributes","type","streamEnabled","streamViewType","billingMode","hashKey","rangeKey","roleName","role","iam","Role","assumeRolePolicy","Service","meta","isLambdaFunctionRole","policy","getDynamoDbToElasticLambdaPolicy","RolePolicyAttachment","policyArn","ManagedPolicy","AWSLambdaVPCAccessExecutionRole","AWSLambdaBasicExecutionRole","AWSLambdaDynamoDBExecutionRole","lambda","Function","runtime","handler","timeout","memorySize","environment","variables","DEBUG","ELASTIC_SEARCH_ENDPOINT","endpoint","description","code","asset","AssetArchive","FileArchive","path","join","paths","workspace","vpcConfig","eventSourceMapping","EventSourceMapping","eventSourceArn","streamArn","functionName","startingPosition","maximumRetryAttempts","batchSize","maximumBatchingWindowInSeconds","addOutputs","elasticsearchDomainArn","elasticsearchDomainEndpoint","elasticsearchDynamodbTableArn","elasticsearchDynamodbTableName","dynamoToElastic","exports","Policy","Sid"],"sources":["CoreElasticSearch.ts"],"sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport {\n createAppModule,\n PulumiApp,\n PulumiAppResource,\n PulumiAppResourceConstructor,\n PulumiAppRemoteResource\n} from \"@webiny/pulumi\";\n\nimport { getAwsAccountId } from \"../awsUtils\";\nimport { CoreVpc } from \"./CoreVpc\";\n\nexport interface ElasticSearchParams {\n protect: boolean;\n}\n\nfunction getDevClusterConfig(): aws.types.input.elasticsearch.DomainClusterConfig {\n return {\n instanceType: \"t3.small.elasticsearch\"\n };\n}\n\nfunction getProdClusterConfig(): aws.types.input.elasticsearch.DomainClusterConfig {\n return {\n // For production deployments, we create 2 instances and configure multi-AZ.\n instanceType: \"t3.medium.elasticsearch\",\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n zoneAwarenessConfig: {\n availabilityZoneCount: 2\n }\n };\n}\n\nexport const ElasticSearch = createAppModule({\n name: \"ElasticSearch\",\n config(app, params: ElasticSearchParams) {\n const domainName = \"webiny-js\";\n const accountId = getAwsAccountId(app);\n\n const productionEnvironments = app.params.create.productionEnvironments || [\"prod\"];\n const isProduction = productionEnvironments.includes(app.params.run.env);\n\n const vpc = app.getModule(CoreVpc, { optional: true });\n\n // This needs to be implemented in order to be able to use a shared ElasticSearch cluster.\n let domain:\n | PulumiAppResource<PulumiAppResourceConstructor<aws.elasticsearch.Domain>>\n | PulumiAppRemoteResource<aws.elasticsearch.GetDomainResult>;\n\n let domainPolicy;\n\n if (process.env.AWS_ELASTIC_SEARCH_DOMAIN_NAME) {\n const domainName = String(process.env.AWS_ELASTIC_SEARCH_DOMAIN_NAME);\n // This can be useful for testing purposes in ephemeral environments. More information here:\n // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments\n domain = app.addRemoteResource(domainName, () => {\n return aws.elasticsearch.getDomain({ domainName }, { async: true });\n });\n } else {\n // Regular ElasticSearch deployment.\n domain = app.addResource(aws.elasticsearch.Domain, {\n name: domainName,\n config: {\n elasticsearchVersion: \"7.10\",\n clusterConfig: isProduction ? getProdClusterConfig() : getDevClusterConfig(),\n vpcOptions: vpc\n ? {\n subnetIds: vpc.subnets.private.map(s => s.output.id),\n securityGroupIds: [vpc.vpc.output.defaultSecurityGroupId]\n }\n : undefined,\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n volumeType: \"gp2\"\n },\n advancedOptions: {\n \"rest.action.multi.allow_explicit_index\": \"true\"\n },\n snapshotOptions: {\n automatedSnapshotStartHour: 23\n }\n },\n opts: { protect: params.protect }\n });\n\n /**\n * Domain policy defines who can access your Elasticsearch Domain.\n * For details on Elasticsearch security, read the official documentation:\n * https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/security.html\n */\n domainPolicy = app.addResource(aws.elasticsearch.DomainPolicy, {\n name: `${domainName}-policy`,\n config: {\n domainName: domain.output.domainName,\n accessPolicies: {\n Version: \"2012-10-17\",\n Statement: [\n /**\n * Allow requests signed with current account\n */\n {\n Effect: \"Allow\",\n Principal: {\n AWS: accountId\n },\n Action: \"es:*\",\n Resource: pulumi.interpolate`${domain.output.arn}/*`\n }\n ]\n }\n },\n opts: { protect: params.protect }\n });\n }\n\n /**\n * Create a table for Elasticsearch records. All ES records are stored in this table to dramatically improve\n * performance and stability on write operations (especially massive data imports). This table also serves as a backup and\n * a single source of truth for your Elasticsearch domain. Streaming is enabled on this table, and it will\n * allow asynchronous synchronization of data with Elasticsearch domain.\n */\n const table = app.addResource(aws.dynamodb.Table, {\n name: \"webiny-es\",\n config: {\n attributes: [\n { name: \"PK\", type: \"S\" },\n { name: \"SK\", type: \"S\" }\n ],\n streamEnabled: true,\n streamViewType: \"NEW_AND_OLD_IMAGES\",\n billingMode: \"PAY_PER_REQUEST\",\n hashKey: \"PK\",\n rangeKey: \"SK\"\n },\n opts: { protect: params.protect }\n });\n\n const roleName = \"dynamo-to-elastic-lambda-role\";\n\n const role = app.addResource(aws.iam.Role, {\n name: roleName,\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 meta: { isLambdaFunctionRole: true }\n });\n\n const policy = getDynamoDbToElasticLambdaPolicy(app, domain.output);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${roleName}-DynamoDbToElasticLambdaPolicy`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n // Only use `AWSLambdaVPCAccessExecutionRole` policy if VPC feature is enabled.\n if (vpc) {\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${roleName}-AWSLambdaVPCAccessExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole\n }\n });\n } else {\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${roleName}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n }\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${roleName}-AWSLambdaDynamoDBExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaDynamoDBExecutionRole\n }\n });\n\n /**\n * This Lambda will process the stream events from DynamoDB table that contains Elasticsearch items.\n * Elasticsearch can't take large amount of individual writes in a short period of time, so this way\n * we store data for Elasticsearch in a DynamoDB table, and asynchronously insert it into Elasticsearch\n * using batching.\n */\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"dynamo-to-elastic\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 600,\n memorySize: 512,\n environment: {\n variables: {\n DEBUG: String(process.env.DEBUG),\n ELASTIC_SEARCH_ENDPOINT: domain.output.endpoint\n }\n },\n description: \"Process DynamoDB Stream.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"dynamoToElastic/build\")\n )\n }),\n vpcConfig: vpc\n ? {\n subnetIds: vpc.subnets.private.map(s => s.output.id),\n securityGroupIds: [vpc.vpc.output.defaultSecurityGroupId]\n }\n : undefined\n }\n });\n\n const eventSourceMapping = app.addResource(aws.lambda.EventSourceMapping, {\n name: \"dynamo-to-elastic\",\n config: {\n eventSourceArn: table.output.streamArn,\n functionName: lambda.output.arn,\n startingPosition: \"LATEST\",\n maximumRetryAttempts: 3,\n batchSize: 1000,\n maximumBatchingWindowInSeconds: 1\n }\n });\n\n app.addOutputs({\n elasticsearchDomainArn: domain.output.arn,\n elasticsearchDomainEndpoint: domain.output.endpoint,\n elasticsearchDynamodbTableArn: table.output.arn,\n elasticsearchDynamodbTableName: table.output.name\n });\n\n return {\n domain,\n domainPolicy,\n table,\n dynamoToElastic: {\n role,\n policy,\n lambda,\n eventSourceMapping\n }\n };\n }\n});\n\nfunction getDynamoDbToElasticLambdaPolicy(\n app: PulumiApp,\n domain: pulumi.Output<aws.elasticsearch.Domain | aws.elasticsearch.GetDomainResult>\n) {\n return app.addResource(aws.iam.Policy, {\n name: \"DynamoDbToElasticLambdaPolicy-updated\",\n config: {\n description: \"This policy enables access to ES and Dynamodb streams\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForES\",\n Effect: \"Allow\",\n Action: [\n \"es:ESHttpDelete\",\n \"es:ESHttpPatch\",\n \"es:ESHttpPost\",\n \"es:ESHttpPut\"\n ],\n Resource: [\n pulumi.interpolate`${domain.arn}`,\n pulumi.interpolate`${domain.arn}/*`\n ]\n }\n ]\n }\n }\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_path","_interopRequireDefault","require","pulumi","_interopRequireWildcard","aws","_pulumi2","_awsUtils","_CoreVpc","_constants","getDevClusterConfig","instanceType","getProdClusterConfig","instanceCount","zoneAwarenessEnabled","zoneAwarenessConfig","availabilityZoneCount","ElasticSearch","createAppModule","name","config","app","params","domainName","accountId","getAwsAccountId","productionEnvironments","create","isProduction","includes","run","env","vpc","getModule","CoreVpc","optional","domain","domainPolicy","process","AWS_ELASTIC_SEARCH_DOMAIN_NAME","String","addRemoteResource","elasticsearch","getDomain","async","addResource","Domain","elasticsearchVersion","clusterConfig","vpcOptions","subnetIds","subnets","private","map","s","output","id","securityGroupIds","defaultSecurityGroupId","undefined","ebsOptions","ebsEnabled","volumeSize","volumeType","advancedOptions","snapshotOptions","automatedSnapshotStartHour","opts","protect","DomainPolicy","accessPolicies","Version","Statement","Effect","Principal","AWS","Action","Resource","interpolate","arn","table","dynamodb","Table","attributes","type","streamEnabled","streamViewType","billingMode","hashKey","rangeKey","roleName","role","iam","Role","assumeRolePolicy","Service","meta","isLambdaFunctionRole","policy","getDynamoDbToElasticLambdaPolicy","RolePolicyAttachment","policyArn","ManagedPolicy","AWSLambdaVPCAccessExecutionRole","AWSLambdaBasicExecutionRole","AWSLambdaDynamoDBExecutionRole","lambda","Function","runtime","LAMBDA_RUNTIME","handler","timeout","memorySize","environment","variables","DEBUG","ELASTIC_SEARCH_ENDPOINT","endpoint","description","code","asset","AssetArchive","FileArchive","path","join","paths","workspace","vpcConfig","eventSourceMapping","EventSourceMapping","eventSourceArn","streamArn","functionName","startingPosition","maximumRetryAttempts","batchSize","maximumBatchingWindowInSeconds","addOutputs","elasticsearchDomainArn","elasticsearchDomainEndpoint","elasticsearchDynamodbTableArn","elasticsearchDynamodbTableName","dynamoToElastic","exports","Policy","Sid"],"sources":["CoreElasticSearch.ts"],"sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport {\n createAppModule,\n PulumiApp,\n PulumiAppResource,\n PulumiAppResourceConstructor,\n PulumiAppRemoteResource\n} from \"@webiny/pulumi\";\n\nimport { getAwsAccountId } from \"../awsUtils\";\nimport { CoreVpc } from \"./CoreVpc\";\nimport { LAMBDA_RUNTIME } from \"~/constants\";\n\nexport interface ElasticSearchParams {\n protect: boolean;\n}\n\nfunction getDevClusterConfig(): aws.types.input.elasticsearch.DomainClusterConfig {\n return {\n instanceType: \"t3.small.elasticsearch\"\n };\n}\n\nfunction getProdClusterConfig(): aws.types.input.elasticsearch.DomainClusterConfig {\n return {\n // For production deployments, we create 2 instances and configure multi-AZ.\n instanceType: \"t3.medium.elasticsearch\",\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n zoneAwarenessConfig: {\n availabilityZoneCount: 2\n }\n };\n}\n\nexport const ElasticSearch = createAppModule({\n name: \"ElasticSearch\",\n config(app, params: ElasticSearchParams) {\n const domainName = \"webiny-js\";\n const accountId = getAwsAccountId(app);\n\n const productionEnvironments = app.params.create.productionEnvironments || [\"prod\"];\n const isProduction = productionEnvironments.includes(app.params.run.env);\n\n const vpc = app.getModule(CoreVpc, { optional: true });\n\n // This needs to be implemented in order to be able to use a shared ElasticSearch cluster.\n let domain:\n | PulumiAppResource<PulumiAppResourceConstructor<aws.elasticsearch.Domain>>\n | PulumiAppRemoteResource<aws.elasticsearch.GetDomainResult>;\n\n let domainPolicy;\n\n if (process.env.AWS_ELASTIC_SEARCH_DOMAIN_NAME) {\n const domainName = String(process.env.AWS_ELASTIC_SEARCH_DOMAIN_NAME);\n // This can be useful for testing purposes in ephemeral environments. More information here:\n // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments\n domain = app.addRemoteResource(domainName, () => {\n return aws.elasticsearch.getDomain({ domainName }, { async: true });\n });\n } else {\n // Regular ElasticSearch deployment.\n domain = app.addResource(aws.elasticsearch.Domain, {\n name: domainName,\n config: {\n elasticsearchVersion: \"7.10\",\n clusterConfig: isProduction ? getProdClusterConfig() : getDevClusterConfig(),\n vpcOptions: vpc\n ? {\n subnetIds: vpc.subnets.private.map(s => s.output.id),\n securityGroupIds: [vpc.vpc.output.defaultSecurityGroupId]\n }\n : undefined,\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n volumeType: \"gp2\"\n },\n advancedOptions: {\n \"rest.action.multi.allow_explicit_index\": \"true\"\n },\n snapshotOptions: {\n automatedSnapshotStartHour: 23\n }\n },\n opts: { protect: params.protect }\n });\n\n /**\n * Domain policy defines who can access your Elasticsearch Domain.\n * For details on Elasticsearch security, read the official documentation:\n * https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/security.html\n */\n domainPolicy = app.addResource(aws.elasticsearch.DomainPolicy, {\n name: `${domainName}-policy`,\n config: {\n domainName: domain.output.domainName,\n accessPolicies: {\n Version: \"2012-10-17\",\n Statement: [\n /**\n * Allow requests signed with current account\n */\n {\n Effect: \"Allow\",\n Principal: {\n AWS: accountId\n },\n Action: \"es:*\",\n Resource: pulumi.interpolate`${domain.output.arn}/*`\n }\n ]\n }\n },\n opts: { protect: params.protect }\n });\n }\n\n /**\n * Create a table for Elasticsearch records. All ES records are stored in this table to dramatically improve\n * performance and stability on write operations (especially massive data imports). This table also serves as a backup and\n * a single source of truth for your Elasticsearch domain. Streaming is enabled on this table, and it will\n * allow asynchronous synchronization of data with Elasticsearch domain.\n */\n const table = app.addResource(aws.dynamodb.Table, {\n name: \"webiny-es\",\n config: {\n attributes: [\n { name: \"PK\", type: \"S\" },\n { name: \"SK\", type: \"S\" }\n ],\n streamEnabled: true,\n streamViewType: \"NEW_AND_OLD_IMAGES\",\n billingMode: \"PAY_PER_REQUEST\",\n hashKey: \"PK\",\n rangeKey: \"SK\"\n },\n opts: { protect: params.protect }\n });\n\n const roleName = \"dynamo-to-elastic-lambda-role\";\n\n const role = app.addResource(aws.iam.Role, {\n name: roleName,\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 meta: { isLambdaFunctionRole: true }\n });\n\n const policy = getDynamoDbToElasticLambdaPolicy(app, domain.output);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${roleName}-DynamoDbToElasticLambdaPolicy`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n // Only use `AWSLambdaVPCAccessExecutionRole` policy if VPC feature is enabled.\n if (vpc) {\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${roleName}-AWSLambdaVPCAccessExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole\n }\n });\n } else {\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${roleName}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n }\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${roleName}-AWSLambdaDynamoDBExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaDynamoDBExecutionRole\n }\n });\n\n /**\n * This Lambda will process the stream events from DynamoDB table that contains Elasticsearch items.\n * Elasticsearch can't take large amount of individual writes in a short period of time, so this way\n * we store data for Elasticsearch in a DynamoDB table, and asynchronously insert it into Elasticsearch\n * using batching.\n */\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"dynamo-to-elastic\",\n config: {\n role: role.output.arn,\n runtime: LAMBDA_RUNTIME,\n handler: \"handler.handler\",\n timeout: 600,\n memorySize: 512,\n environment: {\n variables: {\n DEBUG: String(process.env.DEBUG),\n ELASTIC_SEARCH_ENDPOINT: domain.output.endpoint\n }\n },\n description: \"Process DynamoDB Stream.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"dynamoToElastic/build\")\n )\n }),\n vpcConfig: vpc\n ? {\n subnetIds: vpc.subnets.private.map(s => s.output.id),\n securityGroupIds: [vpc.vpc.output.defaultSecurityGroupId]\n }\n : undefined\n }\n });\n\n const eventSourceMapping = app.addResource(aws.lambda.EventSourceMapping, {\n name: \"dynamo-to-elastic\",\n config: {\n eventSourceArn: table.output.streamArn,\n functionName: lambda.output.arn,\n startingPosition: \"LATEST\",\n maximumRetryAttempts: 3,\n batchSize: 1000,\n maximumBatchingWindowInSeconds: 1\n }\n });\n\n app.addOutputs({\n elasticsearchDomainArn: domain.output.arn,\n elasticsearchDomainEndpoint: domain.output.endpoint,\n elasticsearchDynamodbTableArn: table.output.arn,\n elasticsearchDynamodbTableName: table.output.name\n });\n\n return {\n domain,\n domainPolicy,\n table,\n dynamoToElastic: {\n role,\n policy,\n lambda,\n eventSourceMapping\n }\n };\n }\n});\n\nfunction getDynamoDbToElasticLambdaPolicy(\n app: PulumiApp,\n domain: pulumi.Output<aws.elasticsearch.Domain | aws.elasticsearch.GetDomainResult>\n) {\n return app.addResource(aws.iam.Policy, {\n name: \"DynamoDbToElasticLambdaPolicy-updated\",\n config: {\n description: \"This policy enables access to ES and Dynamodb streams\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForES\",\n Effect: \"Allow\",\n Action: [\n \"es:ESHttpDelete\",\n \"es:ESHttpPatch\",\n \"es:ESHttpPost\",\n \"es:ESHttpPut\"\n ],\n Resource: [\n pulumi.interpolate`${domain.arn}`,\n pulumi.interpolate`${domain.arn}/*`\n ]\n }\n ]\n }\n }\n });\n}\n"],"mappings":"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"}
|
package/apps/core/CoreVpc.js
CHANGED
|
@@ -42,4 +42,6 @@ const configureAdminCognitoFederation = (app, config) => {
|
|
|
42
42
|
appClient.config.callbackUrls(config.callbackUrls);
|
|
43
43
|
appClient.config.logoutUrls(config.logoutUrls ?? config.callbackUrls);
|
|
44
44
|
};
|
|
45
|
-
exports.configureAdminCognitoFederation = configureAdminCognitoFederation;
|
|
45
|
+
exports.configureAdminCognitoFederation = configureAdminCognitoFederation;
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=configure.js.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as aws from "@pulumi/aws";
|
|
1
2
|
import { PulumiAppParam } from "@webiny/pulumi";
|
|
2
3
|
export declare type CorePulumiApp = ReturnType<typeof createCorePulumiApp>;
|
|
3
4
|
export interface CreateCorePulumiAppParams {
|
|
@@ -46,7 +47,7 @@ export declare function createCorePulumiApp(projectAppParams?: CreateCorePulumiA
|
|
|
46
47
|
fileManagerBucket: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/s3/bucket").Bucket>;
|
|
47
48
|
eventBus: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventBus").EventBus>;
|
|
48
49
|
elasticSearch: {
|
|
49
|
-
domain: import("@webiny/pulumi").PulumiAppResource<import("@webiny/pulumi").PulumiAppResourceConstructor<import("@pulumi/aws/elasticsearch/domain").Domain, any>> | import("@webiny/pulumi").PulumiAppRemoteResource<
|
|
50
|
+
domain: import("@webiny/pulumi").PulumiAppResource<import("@webiny/pulumi").PulumiAppResourceConstructor<import("@pulumi/aws/elasticsearch/domain").Domain, any>> | import("@webiny/pulumi").PulumiAppRemoteResource<aws.elasticsearch.GetDomainResult>;
|
|
50
51
|
domainPolicy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/elasticsearch/domainPolicy").DomainPolicy> | undefined;
|
|
51
52
|
table: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/dynamodb/table").Table>;
|
|
52
53
|
dynamoToElastic: {
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
3
4
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.createCorePulumiApp = createCorePulumiApp;
|
|
8
9
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
10
|
+
var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
9
11
|
var _pulumi = require("@webiny/pulumi");
|
|
10
12
|
var _CoreCognito = require("./CoreCognito");
|
|
11
13
|
var _CoreDynamo = require("./CoreDynamo");
|
|
@@ -80,6 +82,7 @@ function createCorePulumiApp(projectAppParams = {}) {
|
|
|
80
82
|
protect
|
|
81
83
|
}) : null;
|
|
82
84
|
app.addOutputs({
|
|
85
|
+
region: aws.config.region,
|
|
83
86
|
fileManagerBucketId: fileManagerBucket.output.id,
|
|
84
87
|
primaryDynamodbTableArn: dynamoDbTable.output.arn,
|
|
85
88
|
primaryDynamodbTableName: dynamoDbTable.output.name,
|
|
@@ -105,4 +108,6 @@ function createCorePulumiApp(projectAppParams = {}) {
|
|
|
105
108
|
});
|
|
106
109
|
}
|
|
107
110
|
});
|
|
108
|
-
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=createCorePulumiApp.js.map
|