@webiny/pulumi-aws 5.33.5-beta.0 → 5.34.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.
Files changed (83) hide show
  1. package/apps/admin/createAdminPulumiApp.d.ts +5 -5
  2. package/apps/admin/createAdminPulumiApp.js +3 -7
  3. package/apps/admin/createAdminPulumiApp.js.map +1 -1
  4. package/apps/api/ApiApwScheduler.d.ts +8 -9
  5. package/apps/api/ApiApwScheduler.js +6 -12
  6. package/apps/api/ApiApwScheduler.js.map +1 -1
  7. package/apps/api/ApiCloudfront.d.ts +1 -2
  8. package/apps/api/ApiCloudfront.js +2 -4
  9. package/apps/api/ApiCloudfront.js.map +1 -1
  10. package/apps/api/ApiFileManager.d.ts +4 -5
  11. package/apps/api/ApiFileManager.js +8 -13
  12. package/apps/api/ApiFileManager.js.map +1 -1
  13. package/apps/api/ApiGateway.d.ts +5 -6
  14. package/apps/api/ApiGateway.js +2 -4
  15. package/apps/api/ApiGateway.js.map +1 -1
  16. package/apps/api/ApiGraphql.d.ts +3 -3
  17. package/apps/api/ApiGraphql.js +5 -11
  18. package/apps/api/ApiGraphql.js.map +1 -1
  19. package/apps/api/ApiHeadlessCMS.d.ts +3 -4
  20. package/apps/api/ApiHeadlessCMS.js +5 -11
  21. package/apps/api/ApiHeadlessCMS.js.map +1 -1
  22. package/apps/api/ApiPageBuilder.d.ts +10 -11
  23. package/apps/api/ApiPageBuilder.js +37 -42
  24. package/apps/api/ApiPageBuilder.js.map +1 -1
  25. package/apps/api/createApiPulumiApp.d.ts +24 -24
  26. package/apps/api/createApiPulumiApp.js +2 -2
  27. package/apps/api/createApiPulumiApp.js.map +1 -1
  28. package/apps/awsUtils.js +2 -4
  29. package/apps/awsUtils.js.map +1 -1
  30. package/apps/core/CoreCognito.d.ts +2 -3
  31. package/apps/core/CoreCognito.js +2 -4
  32. package/apps/core/CoreCognito.js.map +1 -1
  33. package/apps/core/CoreDynamo.d.ts +1 -2
  34. package/apps/core/CoreDynamo.js +2 -4
  35. package/apps/core/CoreDynamo.js.map +1 -1
  36. package/apps/core/CoreElasticSearch.d.ts +7 -7
  37. package/apps/core/CoreElasticSearch.js +3 -5
  38. package/apps/core/CoreElasticSearch.js.map +1 -1
  39. package/apps/core/CoreEventBus.d.ts +1 -2
  40. package/apps/core/CoreEventBus.js +2 -4
  41. package/apps/core/CoreEventBus.js.map +1 -1
  42. package/apps/core/CoreFileManager.d.ts +2 -3
  43. package/apps/core/CoreFileManager.js +2 -4
  44. package/apps/core/CoreFileManager.js.map +1 -1
  45. package/apps/core/CoreOpenSearch.d.ts +7 -7
  46. package/apps/core/CoreOpenSearch.js +3 -5
  47. package/apps/core/CoreOpenSearch.js.map +1 -1
  48. package/apps/core/CoreVpc.d.ts +3 -4
  49. package/apps/core/CoreVpc.js +2 -4
  50. package/apps/core/CoreVpc.js.map +1 -1
  51. package/apps/core/createCorePulumiApp.d.ts +15 -15
  52. package/apps/core/createCorePulumiApp.js +3 -7
  53. package/apps/core/createCorePulumiApp.js.map +1 -1
  54. package/apps/createAppBucket.d.ts +5 -5
  55. package/apps/createAppBucket.js +2 -4
  56. package/apps/createAppBucket.js.map +1 -1
  57. package/apps/lambdaUtils.d.ts +1 -1
  58. package/apps/lambdaUtils.js +2 -4
  59. package/apps/lambdaUtils.js.map +1 -1
  60. package/apps/react/createReactPulumiApp.d.ts +5 -5
  61. package/apps/react/createReactPulumiApp.js +33 -10
  62. package/apps/react/createReactPulumiApp.js.map +1 -1
  63. package/apps/tenantRouter.js +6 -12
  64. package/apps/tenantRouter.js.map +1 -1
  65. package/apps/website/WebsitePrerendering.d.ts +17 -18
  66. package/apps/website/WebsitePrerendering.js +8 -13
  67. package/apps/website/WebsitePrerendering.js.map +1 -1
  68. package/apps/website/createWebsitePulumiApp.d.ts +27 -27
  69. package/apps/website/createWebsitePulumiApp.js +6 -12
  70. package/apps/website/createWebsitePulumiApp.js.map +1 -1
  71. package/components/tenantRouter/WebsiteTenantRouter.js +3 -5
  72. package/components/tenantRouter/WebsiteTenantRouter.js.map +1 -1
  73. package/package.json +13 -13
  74. package/utils/crawlDirectory.js +2 -4
  75. package/utils/crawlDirectory.js.map +1 -1
  76. package/utils/getPresignedPost.js +1 -1
  77. package/utils/lambdaEnvVariables.d.ts +1 -1
  78. package/utils/lambdaEnvVariables.js +9 -15
  79. package/utils/lambdaEnvVariables.js.map +1 -1
  80. package/utils/tagResources.js +5 -11
  81. package/utils/tagResources.js.map +1 -1
  82. package/utils/uploadFolderToS3.js +3 -8
  83. package/utils/uploadFolderToS3.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["ApiGraphql","createAppModule","name","config","app","params","core","getModule","CoreOutput","policy","createGraphqlLambdaPolicy","role","createLambdaRole","output","graphql","addResource","aws","lambda","Function","runtime","handler","arn","timeout","memorySize","code","pulumi","asset","AssetArchive","FileArchive","path","join","paths","workspace","environment","variables","getCommonLambdaEnvVariables","apply","value","env","AWS_NODEJS_CONNECTION_REUSE_ENABLED","vpcConfig","VpcConfig","functionVpcConfig","headlessCmsModule","ApiHeadlessCMS","headlessCmsGraphQL","functions","dynamodb","TableItem","tableName","primaryDynamodbTableName","hashKey","primaryDynamodbTableHashKey","rangeKey","primaryDynamodbTableRangeKey","key","item","interpolate","run","variant","apwSchedulerEventRule","apwSchedulerEventTarget","targetId","addRoute","routeParams","apiGateway","resources","console","log","kebabName","toKebabCase","method","function","coreOutput","awsAccountId","getAwsAccountId","awsRegion","getAwsRegion","iam","Policy","description","Version","Statement","Sid","Effect","Action","Resource","primaryDynamodbTableArn","elasticsearchDynamodbTableArn","fileManagerBucketId","cognitoUserPoolArn","eventBusArn","elasticsearchDomainArn"],"sources":["ApiGraphql.ts"],"sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport toKebabCase from \"lodash/kebabCase\";\n\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { ApiHeadlessCMS, CoreOutput, VpcConfig } from \"~/apps\";\nimport { getAwsAccountId, getAwsRegion } from \"../awsUtils\";\n\ninterface GraphqlParams {\n env: Record<string, any>;\n apwSchedulerEventRule: pulumi.Output<aws.cloudwatch.EventRule>;\n apwSchedulerEventTarget: pulumi.Output<aws.cloudwatch.EventTarget>;\n}\n\nexport interface AddRouteParams {\n /**\n * Must be in kebab case (a-z and -)\n */\n name: string;\n path: `/${string}`;\n method: \"DELETE\" | \"GET\" | \"HEAD\" | \"PATCH\" | \"POST\" | \"PUT\" | \"OPTIONS\" | \"ANY\";\n}\n\nexport type ApiGraphql = PulumiAppModule<typeof ApiGraphql>;\n\nexport const ApiGraphql = createAppModule({\n name: \"ApiGraphql\",\n config(app: PulumiApp, params: GraphqlParams) {\n const core = app.getModule(CoreOutput);\n\n const policy = createGraphqlLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"api-lambda-role\",\n policy: policy.output\n });\n\n const graphql = app.addResource(aws.lambda.Function, {\n name: \"graphql\",\n config: {\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n role: role.output.arn,\n timeout: 30,\n memorySize: 512,\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"graphql/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n AWS_NODEJS_CONNECTION_REUSE_ENABLED: \"1\"\n }))\n },\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const headlessCmsModule = app.getModule(ApiHeadlessCMS);\n\n const headlessCmsGraphQL = headlessCmsModule.functions.graphql;\n /**\n * Store meta information like \"mainGraphqlFunctionArn\" in APW settings at deploy time.\n *\n * Note: We can't pass \"mainGraphqlFunctionArn\" as env variable due to circular dependency between\n * \"graphql\" lambda and \"api-apw-scheduler-execute-action\" lambda.\n */\n app.addResource(aws.dynamodb.TableItem, {\n name: \"apwSettings\",\n config: {\n tableName: core.primaryDynamodbTableName,\n hashKey: core.primaryDynamodbTableHashKey,\n rangeKey: pulumi\n .output(core.primaryDynamodbTableRangeKey)\n .apply(key => key || \"SK\"),\n item: pulumi.interpolate`{\n \"PK\": {\"S\": \"APW#SETTINGS\"},\n \"SK\": {\"S\": \"${app.params.run.variant || \"default\"}\"},\n \"cmsGraphqlFunctionArn\": {\"S\": \"${headlessCmsGraphQL.output.arn}\"},\n \"mainGraphqlFunctionArn\": {\"S\": \"${graphql.output.arn}\"},\n \"eventRuleName\": {\"S\": \"${params.apwSchedulerEventRule.name}\"},\n \"eventTargetId\": {\"S\": \"${params.apwSchedulerEventTarget.targetId}\"}\n }`\n }\n });\n\n return {\n role,\n policy,\n functions: {\n graphql\n },\n addRoute: (routeParams: AddRouteParams) => {\n const apiGateway: any = app.resources.apiGateway;\n if (!apiGateway) {\n console.log(\n \"Could not add route because there is no apiGateway in the resources.\"\n );\n return;\n }\n const kebabName = toKebabCase(routeParams.name);\n if (kebabName !== routeParams.name) {\n console.log(`Route name is not allowed: \"${routeParams.name}\".`);\n return;\n }\n return apiGateway.addRoute(routeParams.name, {\n path: routeParams.path,\n method: routeParams.method,\n function: graphql.output.arn\n });\n }\n };\n }\n});\n\nfunction createGraphqlLambdaPolicy(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: \"ApiGraphqlLambdaPolicy\",\n config: {\n description: \"This policy enables access to 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:ConditionCheckItem\",\n \"dynamodb:CreateBackup\",\n \"dynamodb:CreateTable\",\n \"dynamodb:CreateTableReplica\",\n \"dynamodb:DeleteBackup\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:DeleteTable\",\n \"dynamodb:DeleteTableReplica\",\n \"dynamodb:DescribeBackup\",\n \"dynamodb:DescribeContinuousBackups\",\n \"dynamodb:DescribeContributorInsights\",\n \"dynamodb:DescribeExport\",\n \"dynamodb:DescribeKinesisStreamingDestination\",\n \"dynamodb:DescribeLimits\",\n \"dynamodb:DescribeReservedCapacity\",\n \"dynamodb:DescribeReservedCapacityOfferings\",\n \"dynamodb:DescribeStream\",\n \"dynamodb:DescribeTable\",\n \"dynamodb:DescribeTableReplicaAutoScaling\",\n \"dynamodb:DescribeTimeToLive\",\n \"dynamodb:DisableKinesisStreamingDestination\",\n \"dynamodb:EnableKinesisStreamingDestination\",\n \"dynamodb:ExportTableToPointInTime\",\n \"dynamodb:GetItem\",\n \"dynamodb:GetRecords\",\n \"dynamodb:GetShardIterator\",\n \"dynamodb:ListBackups\",\n \"dynamodb:ListContributorInsights\",\n \"dynamodb:ListExports\",\n \"dynamodb:ListStreams\",\n \"dynamodb:ListTables\",\n \"dynamodb:ListTagsOfResource\",\n \"dynamodb:PartiQLDelete\",\n \"dynamodb:PartiQLInsert\",\n \"dynamodb:PartiQLSelect\",\n \"dynamodb:PartiQLUpdate\",\n \"dynamodb:PurchaseReservedCapacityOfferings\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:RestoreTableFromBackup\",\n \"dynamodb:RestoreTableToPointInTime\",\n \"dynamodb:Scan\",\n \"dynamodb:UpdateContinuousBackups\",\n \"dynamodb:UpdateContributorInsights\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:UpdateTable\",\n \"dynamodb:UpdateTableReplicaAutoScaling\",\n \"dynamodb:UpdateTimeToLive\"\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 ],\n Resource: `arn:aws:s3:::${core.fileManagerBucketId}/*`\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 {\n Sid: \"PermissionForEventBus\",\n Effect: \"Allow\",\n Action: \"events:PutEvents\",\n Resource: core.eventBusArn\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":["ApiGraphql","createAppModule","name","config","app","params","core","getModule","CoreOutput","policy","createGraphqlLambdaPolicy","role","createLambdaRole","output","graphql","addResource","aws","lambda","Function","runtime","handler","arn","timeout","memorySize","code","pulumi","asset","AssetArchive","FileArchive","path","join","paths","workspace","environment","variables","getCommonLambdaEnvVariables","apply","value","env","AWS_NODEJS_CONNECTION_REUSE_ENABLED","vpcConfig","VpcConfig","functionVpcConfig","headlessCmsModule","ApiHeadlessCMS","headlessCmsGraphQL","functions","dynamodb","TableItem","tableName","primaryDynamodbTableName","hashKey","primaryDynamodbTableHashKey","rangeKey","primaryDynamodbTableRangeKey","key","item","interpolate","run","variant","apwSchedulerEventRule","apwSchedulerEventTarget","targetId","addRoute","routeParams","apiGateway","resources","console","log","kebabName","toKebabCase","method","function","coreOutput","awsAccountId","getAwsAccountId","awsRegion","getAwsRegion","iam","Policy","description","Version","Statement","Sid","Effect","Action","Resource","primaryDynamodbTableArn","elasticsearchDynamodbTableArn","fileManagerBucketId","cognitoUserPoolArn","eventBusArn","elasticsearchDomainArn"],"sources":["ApiGraphql.ts"],"sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport toKebabCase from \"lodash/kebabCase\";\n\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { ApiHeadlessCMS, CoreOutput, VpcConfig } from \"~/apps\";\nimport { getAwsAccountId, getAwsRegion } from \"../awsUtils\";\n\ninterface GraphqlParams {\n env: Record<string, any>;\n apwSchedulerEventRule: pulumi.Output<aws.cloudwatch.EventRule>;\n apwSchedulerEventTarget: pulumi.Output<aws.cloudwatch.EventTarget>;\n}\n\nexport interface AddRouteParams {\n /**\n * Must be in kebab case (a-z and -)\n */\n name: string;\n path: `/${string}`;\n method: \"DELETE\" | \"GET\" | \"HEAD\" | \"PATCH\" | \"POST\" | \"PUT\" | \"OPTIONS\" | \"ANY\";\n}\n\nexport type ApiGraphql = PulumiAppModule<typeof ApiGraphql>;\n\nexport const ApiGraphql = createAppModule({\n name: \"ApiGraphql\",\n config(app: PulumiApp, params: GraphqlParams) {\n const core = app.getModule(CoreOutput);\n\n const policy = createGraphqlLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"api-lambda-role\",\n policy: policy.output\n });\n\n const graphql = app.addResource(aws.lambda.Function, {\n name: \"graphql\",\n config: {\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n role: role.output.arn,\n timeout: 30,\n memorySize: 512,\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"graphql/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n AWS_NODEJS_CONNECTION_REUSE_ENABLED: \"1\"\n }))\n },\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const headlessCmsModule = app.getModule(ApiHeadlessCMS);\n\n const headlessCmsGraphQL = headlessCmsModule.functions.graphql;\n /**\n * Store meta information like \"mainGraphqlFunctionArn\" in APW settings at deploy time.\n *\n * Note: We can't pass \"mainGraphqlFunctionArn\" as env variable due to circular dependency between\n * \"graphql\" lambda and \"api-apw-scheduler-execute-action\" lambda.\n */\n app.addResource(aws.dynamodb.TableItem, {\n name: \"apwSettings\",\n config: {\n tableName: core.primaryDynamodbTableName,\n hashKey: core.primaryDynamodbTableHashKey,\n rangeKey: pulumi\n .output(core.primaryDynamodbTableRangeKey)\n .apply(key => key || \"SK\"),\n item: pulumi.interpolate`{\n \"PK\": {\"S\": \"APW#SETTINGS\"},\n \"SK\": {\"S\": \"${app.params.run.variant || \"default\"}\"},\n \"cmsGraphqlFunctionArn\": {\"S\": \"${headlessCmsGraphQL.output.arn}\"},\n \"mainGraphqlFunctionArn\": {\"S\": \"${graphql.output.arn}\"},\n \"eventRuleName\": {\"S\": \"${params.apwSchedulerEventRule.name}\"},\n \"eventTargetId\": {\"S\": \"${params.apwSchedulerEventTarget.targetId}\"}\n }`\n }\n });\n\n return {\n role,\n policy,\n functions: {\n graphql\n },\n addRoute: (routeParams: AddRouteParams) => {\n const apiGateway: any = app.resources.apiGateway;\n if (!apiGateway) {\n console.log(\n \"Could not add route because there is no apiGateway in the resources.\"\n );\n return;\n }\n const kebabName = toKebabCase(routeParams.name);\n if (kebabName !== routeParams.name) {\n console.log(`Route name is not allowed: \"${routeParams.name}\".`);\n return;\n }\n return apiGateway.addRoute(routeParams.name, {\n path: routeParams.path,\n method: routeParams.method,\n function: graphql.output.arn\n });\n }\n };\n }\n});\n\nfunction createGraphqlLambdaPolicy(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: \"ApiGraphqlLambdaPolicy\",\n config: {\n description: \"This policy enables access to 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:ConditionCheckItem\",\n \"dynamodb:CreateBackup\",\n \"dynamodb:CreateTable\",\n \"dynamodb:CreateTableReplica\",\n \"dynamodb:DeleteBackup\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:DeleteTable\",\n \"dynamodb:DeleteTableReplica\",\n \"dynamodb:DescribeBackup\",\n \"dynamodb:DescribeContinuousBackups\",\n \"dynamodb:DescribeContributorInsights\",\n \"dynamodb:DescribeExport\",\n \"dynamodb:DescribeKinesisStreamingDestination\",\n \"dynamodb:DescribeLimits\",\n \"dynamodb:DescribeReservedCapacity\",\n \"dynamodb:DescribeReservedCapacityOfferings\",\n \"dynamodb:DescribeStream\",\n \"dynamodb:DescribeTable\",\n \"dynamodb:DescribeTableReplicaAutoScaling\",\n \"dynamodb:DescribeTimeToLive\",\n \"dynamodb:DisableKinesisStreamingDestination\",\n \"dynamodb:EnableKinesisStreamingDestination\",\n \"dynamodb:ExportTableToPointInTime\",\n \"dynamodb:GetItem\",\n \"dynamodb:GetRecords\",\n \"dynamodb:GetShardIterator\",\n \"dynamodb:ListBackups\",\n \"dynamodb:ListContributorInsights\",\n \"dynamodb:ListExports\",\n \"dynamodb:ListStreams\",\n \"dynamodb:ListTables\",\n \"dynamodb:ListTagsOfResource\",\n \"dynamodb:PartiQLDelete\",\n \"dynamodb:PartiQLInsert\",\n \"dynamodb:PartiQLSelect\",\n \"dynamodb:PartiQLUpdate\",\n \"dynamodb:PurchaseReservedCapacityOfferings\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:RestoreTableFromBackup\",\n \"dynamodb:RestoreTableToPointInTime\",\n \"dynamodb:Scan\",\n \"dynamodb:UpdateContinuousBackups\",\n \"dynamodb:UpdateContributorInsights\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:UpdateTable\",\n \"dynamodb:UpdateTableReplicaAutoScaling\",\n \"dynamodb:UpdateTimeToLive\"\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 ],\n Resource: `arn:aws:s3:::${core.fileManagerBucketId}/*`\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 {\n Sid: \"PermissionForEventBus\",\n Effect: \"Allow\",\n Action: \"events:PutEvents\",\n Resource: core.eventBusArn\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,14 +1,13 @@
1
- import * as aws from "@pulumi/aws";
2
1
  import { PulumiAppModule } from "@webiny/pulumi";
3
2
  interface HeadlessCMSParams {
4
3
  env: Record<string, any>;
5
4
  }
6
5
  export declare type ApiHeadlessCMS = PulumiAppModule<typeof ApiHeadlessCMS>;
7
6
  export declare const ApiHeadlessCMS: import("@webiny/pulumi").PulumiAppModuleDefinition<{
8
- role: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Role>;
9
- policy: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Policy>;
7
+ role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
8
+ policy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
10
9
  functions: {
11
- graphql: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Function>;
10
+ graphql: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
12
11
  };
13
12
  }, HeadlessCMSParams>;
14
13
  export {};
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
6
 
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports.ApiHeadlessCMS = void 0;
9
11
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
13
 
12
14
  var _path = _interopRequireDefault(require("path"));
13
15
 
@@ -21,14 +23,6 @@ var _lambdaUtils = require("../lambdaUtils");
21
23
 
22
24
  var _common = require("../common");
23
25
 
24
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
-
26
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
-
28
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
-
30
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
31
-
32
26
  const ApiHeadlessCMS = (0, _pulumi2.createAppModule)({
33
27
  name: "ApiHeadlessCMS",
34
28
 
@@ -50,7 +44,7 @@ const ApiHeadlessCMS = (0, _pulumi2.createAppModule)({
50
44
  ".": new pulumi.asset.FileArchive(_path.default.join(app.paths.workspace, "headlessCMS/build"))
51
45
  }),
52
46
  environment: {
53
- variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => _objectSpread(_objectSpread(_objectSpread({}, value), params.env), {}, {
47
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), params.env), {}, {
54
48
  AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1"
55
49
  }))
56
50
  },
@@ -1 +1 @@
1
- {"version":3,"names":["ApiHeadlessCMS","createAppModule","name","config","app","params","policy","createHeadlessCmsLambdaPolicy","role","createLambdaRole","output","graphql","addResource","aws","lambda","Function","runtime","handler","arn","timeout","memorySize","code","pulumi","asset","AssetArchive","FileArchive","path","join","paths","workspace","environment","variables","getCommonLambdaEnvVariables","apply","value","env","AWS_NODEJS_CONNECTION_REUSE_ENABLED","vpcConfig","getModule","VpcConfig","functionVpcConfig","functions","coreOutput","CoreOutput","iam","Policy","description","core","Version","Statement","Sid","Effect","Action","Resource","primaryDynamodbTableArn","elasticsearchDynamodbTableArn","elasticsearchDomainArn"],"sources":["ApiHeadlessCMS.ts"],"sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\n\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { CoreOutput, VpcConfig } from \"../common\";\n\ninterface HeadlessCMSParams {\n env: Record<string, any>;\n}\n\nexport type ApiHeadlessCMS = PulumiAppModule<typeof ApiHeadlessCMS>;\n\nexport const ApiHeadlessCMS = createAppModule({\n name: \"ApiHeadlessCMS\",\n config(app: PulumiApp, params: HeadlessCMSParams) {\n const policy = createHeadlessCmsLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"headless-cms-lambda-role\",\n policy: policy.output\n });\n\n const graphql = app.addResource(aws.lambda.Function, {\n name: \"headless-cms\",\n config: {\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n role: role.output.arn,\n timeout: 30,\n memorySize: 512,\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"headlessCMS/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n AWS_NODEJS_CONNECTION_REUSE_ENABLED: \"1\"\n }))\n },\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n return {\n role,\n policy,\n functions: {\n graphql\n }\n };\n }\n});\n\nfunction createHeadlessCmsLambdaPolicy(app: PulumiApp) {\n const coreOutput = app.getModule(CoreOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"HeadlessCmsLambdaPolicy\",\n config: {\n description: \"This policy enables access to Dynamodb streams\",\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: \"PermissionDynamodb\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:BatchGetItem\",\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:ConditionCheckItem\",\n \"dynamodb:CreateBackup\",\n \"dynamodb:CreateTable\",\n \"dynamodb:CreateTableReplica\",\n \"dynamodb:DeleteBackup\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:DeleteTable\",\n \"dynamodb:DeleteTableReplica\",\n \"dynamodb:DescribeBackup\",\n \"dynamodb:DescribeContinuousBackups\",\n \"dynamodb:DescribeContributorInsights\",\n \"dynamodb:DescribeExport\",\n \"dynamodb:DescribeKinesisStreamingDestination\",\n \"dynamodb:DescribeLimits\",\n \"dynamodb:DescribeReservedCapacity\",\n \"dynamodb:DescribeReservedCapacityOfferings\",\n \"dynamodb:DescribeStream\",\n \"dynamodb:DescribeTable\",\n \"dynamodb:DescribeTableReplicaAutoScaling\",\n \"dynamodb:DescribeTimeToLive\",\n \"dynamodb:DisableKinesisStreamingDestination\",\n \"dynamodb:EnableKinesisStreamingDestination\",\n \"dynamodb:ExportTableToPointInTime\",\n \"dynamodb:GetItem\",\n \"dynamodb:GetRecords\",\n \"dynamodb:GetShardIterator\",\n \"dynamodb:ListBackups\",\n \"dynamodb:ListContributorInsights\",\n \"dynamodb:ListExports\",\n \"dynamodb:ListStreams\",\n \"dynamodb:ListTables\",\n \"dynamodb:ListTagsOfResource\",\n \"dynamodb:PartiQLDelete\",\n \"dynamodb:PartiQLInsert\",\n \"dynamodb:PartiQLSelect\",\n \"dynamodb:PartiQLUpdate\",\n \"dynamodb:PurchaseReservedCapacityOfferings\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:RestoreTableFromBackup\",\n \"dynamodb:RestoreTableToPointInTime\",\n \"dynamodb:Scan\",\n \"dynamodb:UpdateContinuousBackups\",\n \"dynamodb:UpdateContributorInsights\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:UpdateTable\",\n \"dynamodb:UpdateTableReplicaAutoScaling\",\n \"dynamodb:UpdateTimeToLive\"\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 // 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":["ApiHeadlessCMS","createAppModule","name","config","app","params","policy","createHeadlessCmsLambdaPolicy","role","createLambdaRole","output","graphql","addResource","aws","lambda","Function","runtime","handler","arn","timeout","memorySize","code","pulumi","asset","AssetArchive","FileArchive","path","join","paths","workspace","environment","variables","getCommonLambdaEnvVariables","apply","value","env","AWS_NODEJS_CONNECTION_REUSE_ENABLED","vpcConfig","getModule","VpcConfig","functionVpcConfig","functions","coreOutput","CoreOutput","iam","Policy","description","core","Version","Statement","Sid","Effect","Action","Resource","primaryDynamodbTableArn","elasticsearchDynamodbTableArn","elasticsearchDomainArn"],"sources":["ApiHeadlessCMS.ts"],"sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\n\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { CoreOutput, VpcConfig } from \"../common\";\n\ninterface HeadlessCMSParams {\n env: Record<string, any>;\n}\n\nexport type ApiHeadlessCMS = PulumiAppModule<typeof ApiHeadlessCMS>;\n\nexport const ApiHeadlessCMS = createAppModule({\n name: \"ApiHeadlessCMS\",\n config(app: PulumiApp, params: HeadlessCMSParams) {\n const policy = createHeadlessCmsLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"headless-cms-lambda-role\",\n policy: policy.output\n });\n\n const graphql = app.addResource(aws.lambda.Function, {\n name: \"headless-cms\",\n config: {\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n role: role.output.arn,\n timeout: 30,\n memorySize: 512,\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"headlessCMS/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n AWS_NODEJS_CONNECTION_REUSE_ENABLED: \"1\"\n }))\n },\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n return {\n role,\n policy,\n functions: {\n graphql\n }\n };\n }\n});\n\nfunction createHeadlessCmsLambdaPolicy(app: PulumiApp) {\n const coreOutput = app.getModule(CoreOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"HeadlessCmsLambdaPolicy\",\n config: {\n description: \"This policy enables access to Dynamodb streams\",\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: \"PermissionDynamodb\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:BatchGetItem\",\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:ConditionCheckItem\",\n \"dynamodb:CreateBackup\",\n \"dynamodb:CreateTable\",\n \"dynamodb:CreateTableReplica\",\n \"dynamodb:DeleteBackup\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:DeleteTable\",\n \"dynamodb:DeleteTableReplica\",\n \"dynamodb:DescribeBackup\",\n \"dynamodb:DescribeContinuousBackups\",\n \"dynamodb:DescribeContributorInsights\",\n \"dynamodb:DescribeExport\",\n \"dynamodb:DescribeKinesisStreamingDestination\",\n \"dynamodb:DescribeLimits\",\n \"dynamodb:DescribeReservedCapacity\",\n \"dynamodb:DescribeReservedCapacityOfferings\",\n \"dynamodb:DescribeStream\",\n \"dynamodb:DescribeTable\",\n \"dynamodb:DescribeTableReplicaAutoScaling\",\n \"dynamodb:DescribeTimeToLive\",\n \"dynamodb:DisableKinesisStreamingDestination\",\n \"dynamodb:EnableKinesisStreamingDestination\",\n \"dynamodb:ExportTableToPointInTime\",\n \"dynamodb:GetItem\",\n \"dynamodb:GetRecords\",\n \"dynamodb:GetShardIterator\",\n \"dynamodb:ListBackups\",\n \"dynamodb:ListContributorInsights\",\n \"dynamodb:ListExports\",\n \"dynamodb:ListStreams\",\n \"dynamodb:ListTables\",\n \"dynamodb:ListTagsOfResource\",\n \"dynamodb:PartiQLDelete\",\n \"dynamodb:PartiQLInsert\",\n \"dynamodb:PartiQLSelect\",\n \"dynamodb:PartiQLUpdate\",\n \"dynamodb:PurchaseReservedCapacityOfferings\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:RestoreTableFromBackup\",\n \"dynamodb:RestoreTableToPointInTime\",\n \"dynamodb:Scan\",\n \"dynamodb:UpdateContinuousBackups\",\n \"dynamodb:UpdateContributorInsights\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:UpdateTable\",\n \"dynamodb:UpdateTableReplicaAutoScaling\",\n \"dynamodb:UpdateTimeToLive\"\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 // 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,24 +1,23 @@
1
- import * as aws from "@pulumi/aws";
2
1
  import { PulumiAppModule } from "@webiny/pulumi";
3
2
  interface PageBuilderParams {
4
3
  env: Record<string, any>;
5
4
  }
6
5
  export declare type ApiPageBuilder = PulumiAppModule<typeof ApiPageBuilder>;
7
6
  export declare const ApiPageBuilder: import("@webiny/pulumi").PulumiAppModuleDefinition<{
8
- exportPages: {
9
- role: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Role>;
10
- policy: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Policy>;
7
+ export: {
8
+ role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
9
+ policy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
11
10
  functions: {
12
- process: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Function>;
13
- combine: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Function>;
11
+ process: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
12
+ combine: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
14
13
  };
15
14
  };
16
- importPages: {
17
- role: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Role>;
18
- policy: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Policy>;
15
+ import: {
16
+ role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
17
+ policy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
19
18
  functions: {
20
- create: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Function>;
21
- process: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Function>;
19
+ create: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
20
+ process: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
22
21
  };
23
22
  };
24
23
  }, PageBuilderParams>;
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
6
 
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports.ApiPageBuilder = void 0;
9
11
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
13
 
12
14
  var path = _interopRequireWildcard(require("path"));
13
15
 
@@ -25,14 +27,7 @@ var _lambdaUtils = require("../lambdaUtils");
25
27
 
26
28
  var _awsUtils = require("../awsUtils");
27
29
 
28
- 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); }
29
-
30
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
-
32
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
33
-
34
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
35
-
30
+ //@ts-ignore
36
31
  const ApiPageBuilder = (0, _pulumi2.createAppModule)({
37
32
  name: "ApiPageBuilder",
38
33
 
@@ -49,59 +44,59 @@ const ApiPageBuilder = (0, _pulumi2.createAppModule)({
49
44
  source: new pulumi.asset.FileAsset(pbInstallationZipPath)
50
45
  });
51
46
  });
52
- const exportPages = createExportPagesResources(app, params);
53
- const importPages = createImportPagesResources(app, params);
47
+ const exportResources = createExportResources(app, params);
48
+ const importResources = createImportResources(app, params);
54
49
  return {
55
- exportPages,
56
- importPages
50
+ export: exportResources,
51
+ import: importResources
57
52
  };
58
53
  }
59
54
 
60
55
  });
61
56
  exports.ApiPageBuilder = ApiPageBuilder;
62
57
 
63
- function createExportPagesResources(app, params) {
58
+ function createExportResources(app, params) {
64
59
  const core = app.getModule(_common.CoreOutput);
65
- const policy = createExportPagesLambdaPolicy(app);
60
+ const policy = createExportLambdaPolicy(app);
66
61
  const role = (0, _lambdaUtils.createLambdaRole)(app, {
67
- name: "pb-export-pages-lambda-role",
62
+ name: "pb-export-lambda-role",
68
63
  policy: policy.output
69
64
  });
70
65
  const combine = app.addResource(aws.lambda.Function, {
71
- name: "pb-export-pages-combine",
66
+ name: "pb-export-combine",
72
67
  config: {
73
68
  role: role.output.arn,
74
69
  runtime: "nodejs14.x",
75
70
  handler: "handler.handler",
76
71
  timeout: 60,
77
72
  memorySize: 128,
78
- description: "Handle page export's combine workflow",
73
+ description: "Handle export's combine workflow",
79
74
  code: new pulumi.asset.AssetArchive({
80
- ".": new pulumi.asset.FileArchive(path.join(app.paths.workspace, "pageBuilder/exportPages/combine/build"))
75
+ ".": new pulumi.asset.FileArchive(path.join(app.paths.workspace, "pageBuilder/export/combine/build"))
81
76
  }),
82
77
  environment: {
83
- variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => _objectSpread(_objectSpread(_objectSpread({}, value), params.env), {}, {
78
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), params.env), {}, {
84
79
  S3_BUCKET: core.fileManagerBucketId
85
80
  }))
86
81
  }
87
82
  }
88
83
  });
89
84
  const process = app.addResource(aws.lambda.Function, {
90
- name: "pb-export-pages-process",
85
+ name: "pb-export-process",
91
86
  config: {
92
87
  role: role.output.arn,
93
88
  runtime: "nodejs14.x",
94
89
  handler: "handler.handler",
95
90
  timeout: 60,
96
91
  memorySize: 128,
97
- description: "Handle page export's process workflow",
92
+ description: "Handle export's process workflow",
98
93
  code: new pulumi.asset.AssetArchive({
99
- ".": new pulumi.asset.FileArchive(path.join(app.paths.workspace, "pageBuilder/exportPages/process/build"))
94
+ ".": new pulumi.asset.FileArchive(path.join(app.paths.workspace, "pageBuilder/export/process/build"))
100
95
  }),
101
96
  environment: {
102
- variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => _objectSpread(_objectSpread(_objectSpread({}, value), params.env), {}, {
97
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), params.env), {}, {
103
98
  S3_BUCKET: core.fileManagerBucketId,
104
- EXPORT_PAGE_COMBINE_HANDLER: combine.output.arn
99
+ EXPORT_COMBINE_HANDLER: combine.output.arn
105
100
  }))
106
101
  }
107
102
  }
@@ -116,12 +111,12 @@ function createExportPagesResources(app, params) {
116
111
  };
117
112
  }
118
113
 
119
- function createExportPagesLambdaPolicy(app) {
114
+ function createExportLambdaPolicy(app) {
120
115
  const core = app.getModule(_common.CoreOutput);
121
116
  const awsAccountId = (0, _awsUtils.getAwsAccountId)(app);
122
117
  const awsRegion = (0, _awsUtils.getAwsRegion)(app);
123
118
  return app.addResource(aws.iam.Policy, {
124
- name: "PbExportPageTaskLambdaPolicy",
119
+ name: "PbExportTaskLambdaPolicy",
125
120
  config: {
126
121
  description: "This policy enables access to Dynamodb",
127
122
  policy: {
@@ -148,48 +143,48 @@ function createExportPagesLambdaPolicy(app) {
148
143
  });
149
144
  }
150
145
 
151
- function createImportPagesResources(app, params) {
146
+ function createImportResources(app, params) {
152
147
  const core = app.getModule(_common.CoreOutput);
153
- const policy = createImportPagesLambdaPolicy(app);
148
+ const policy = createImportLambdaPolicy(app);
154
149
  const role = (0, _lambdaUtils.createLambdaRole)(app, {
155
- name: "pb-import-page-lambda-role",
150
+ name: "pb-import-lambda-role",
156
151
  policy: policy.output
157
152
  });
158
153
  const process = app.addResource(aws.lambda.Function, {
159
- name: "pb-import-page-queue-process",
154
+ name: "pb-import-queue-process",
160
155
  config: {
161
156
  role: role.output.arn,
162
157
  runtime: "nodejs14.x",
163
158
  handler: "handler.handler",
164
159
  timeout: 60,
165
160
  memorySize: 512,
166
- description: "Handle import page queue process workflow",
161
+ description: "Handle import queue process workflow",
167
162
  code: new pulumi.asset.AssetArchive({
168
- ".": new pulumi.asset.FileArchive(path.join(app.paths.workspace, "pageBuilder/importPages/process/build"))
163
+ ".": new pulumi.asset.FileArchive(path.join(app.paths.workspace, "pageBuilder/import/process/build"))
169
164
  }),
170
165
  environment: {
171
- variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => _objectSpread(_objectSpread(_objectSpread({}, value), params.env), {}, {
166
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), params.env), {}, {
172
167
  S3_BUCKET: core.fileManagerBucketId
173
168
  }))
174
169
  }
175
170
  }
176
171
  });
177
172
  const create = app.addResource(aws.lambda.Function, {
178
- name: "pb-import-page-queue-create",
173
+ name: "pb-import-queue-create",
179
174
  config: {
180
175
  role: role.output.arn,
181
176
  runtime: "nodejs14.x",
182
177
  handler: "handler.handler",
183
178
  timeout: 60,
184
179
  memorySize: 512,
185
- description: "Handle import page queue create workflow",
180
+ description: "Handle import queue create workflow",
186
181
  code: new pulumi.asset.AssetArchive({
187
- ".": new pulumi.asset.FileArchive(path.join(app.paths.workspace, "pageBuilder/importPages/create/build"))
182
+ ".": new pulumi.asset.FileArchive(path.join(app.paths.workspace, "pageBuilder/import/create/build"))
188
183
  }),
189
184
  environment: {
190
- variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => _objectSpread(_objectSpread(_objectSpread({}, value), params.env), {}, {
185
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), params.env), {}, {
191
186
  S3_BUCKET: core.fileManagerBucketId,
192
- IMPORT_PAGE_QUEUE_PROCESS_HANDLER: process.output.arn
187
+ IMPORT_QUEUE_PROCESS_HANDLER: process.output.arn
193
188
  }))
194
189
  }
195
190
  }
@@ -204,12 +199,12 @@ function createImportPagesResources(app, params) {
204
199
  };
205
200
  }
206
201
 
207
- function createImportPagesLambdaPolicy(app) {
202
+ function createImportLambdaPolicy(app) {
208
203
  const coreOutput = app.getModule(_common.CoreOutput);
209
204
  const awsAccountId = (0, _awsUtils.getAwsAccountId)(app);
210
205
  const awsRegion = (0, _awsUtils.getAwsRegion)(app);
211
206
  return app.addResource(aws.iam.Policy, {
212
- name: "ImportPageLambdaPolicy",
207
+ name: "ImportLambdaPolicy",
213
208
  config: {
214
209
  description: "This policy enables access Dynamodb, S3, Lambda and Cognito IDP",
215
210
  // Core is pulumi.Output, so we need to run apply() to resolve policy based on it
@@ -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","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 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
+ {"version":3,"names":["ApiPageBuilder","createAppModule","name","config","app","params","core","getModule","CoreOutput","addHandler","pbInstallationZipPath","path","join","resolve","createInstallationZip","aws","s3","BucketObject","key","bucket","fileManagerBucketId","contentType","source","pulumi","asset","FileAsset","exportResources","createExportResources","importResources","createImportResources","export","import","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","env","S3_BUCKET","process","EXPORT_COMBINE_HANDLER","functions","awsAccountId","getAwsAccountId","awsRegion","getAwsRegion","iam","Policy","Version","Statement","Sid","Effect","Action","Resource","interpolate","primaryDynamodbTableArn","createImportLambdaPolicy","create","IMPORT_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 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 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 ]\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 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 ...(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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"}