@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.
Files changed (78) hide show
  1. package/apps/admin/createAdminPulumiApp.js +3 -1
  2. package/apps/admin/index.js +3 -1
  3. package/apps/api/ApiApwScheduler.js +6 -3
  4. package/apps/api/ApiApwScheduler.js.map +1 -1
  5. package/apps/api/ApiCloudfront.js +3 -1
  6. package/apps/api/ApiFileManager.js +7 -4
  7. package/apps/api/ApiFileManager.js.map +1 -1
  8. package/apps/api/ApiGateway.js +3 -1
  9. package/apps/api/ApiGraphql.js +5 -2
  10. package/apps/api/ApiGraphql.js.map +1 -1
  11. package/apps/api/ApiMigration.js +5 -2
  12. package/apps/api/ApiMigration.js.map +1 -1
  13. package/apps/api/ApiOutput.js +3 -1
  14. package/apps/api/ApiPageBuilder.js +8 -5
  15. package/apps/api/ApiPageBuilder.js.map +1 -1
  16. package/apps/api/createApiPulumiApp.js +8 -3
  17. package/apps/api/createApiPulumiApp.js.map +1 -1
  18. package/apps/api/index.js +3 -1
  19. package/apps/awsUtils.d.ts +1 -1
  20. package/apps/awsUtils.js +3 -1
  21. package/apps/common/CoreOutput.js +3 -1
  22. package/apps/common/VpcConfig.js +3 -1
  23. package/apps/common/index.js +3 -1
  24. package/apps/core/CoreCognito.js +3 -1
  25. package/apps/core/CoreDynamo.js +3 -1
  26. package/apps/core/CoreElasticSearch.js +5 -2
  27. package/apps/core/CoreElasticSearch.js.map +1 -1
  28. package/apps/core/CoreEventBus.js +3 -1
  29. package/apps/core/CoreFileManager.js +3 -1
  30. package/apps/core/CoreVpc.js +3 -1
  31. package/apps/core/cognitoIdentityProviders/amazon.js +3 -1
  32. package/apps/core/cognitoIdentityProviders/apple.js +3 -1
  33. package/apps/core/cognitoIdentityProviders/configure.js +3 -1
  34. package/apps/core/cognitoIdentityProviders/facebook.js +3 -1
  35. package/apps/core/cognitoIdentityProviders/getIdpConfig.js +3 -1
  36. package/apps/core/cognitoIdentityProviders/google.js +3 -1
  37. package/apps/core/cognitoIdentityProviders/index.js +3 -1
  38. package/apps/core/createCorePulumiApp.d.ts +2 -1
  39. package/apps/core/createCorePulumiApp.js +6 -1
  40. package/apps/core/createCorePulumiApp.js.map +1 -1
  41. package/apps/core/index.js +3 -1
  42. package/apps/createAppBucket.js +3 -1
  43. package/apps/customDomain.js +3 -1
  44. package/apps/index.js +3 -1
  45. package/apps/lambdaUtils.js +3 -1
  46. package/apps/react/createReactPulumiApp.js +3 -1
  47. package/apps/react/index.js +3 -1
  48. package/apps/tenantRouter.js +5 -2
  49. package/apps/tenantRouter.js.map +1 -1
  50. package/apps/website/WebsitePrerendering.js +7 -4
  51. package/apps/website/WebsitePrerendering.js.map +1 -1
  52. package/apps/website/createWebsitePulumiApp.d.ts +6 -5
  53. package/apps/website/createWebsitePulumiApp.js +3 -1
  54. package/apps/website/deliveryViewerRequest.js +3 -1
  55. package/apps/website/index.js +3 -1
  56. package/components/tenantRouter/WebsiteTenantRouter.js +5 -2
  57. package/components/tenantRouter/WebsiteTenantRouter.js.map +1 -1
  58. package/components/tenantRouter/functions/origin/request.js +3 -1
  59. package/constants.d.ts +1 -0
  60. package/constants.js +11 -0
  61. package/constants.js.map +1 -0
  62. package/enterprise/createAdminPulumiApp.js +3 -1
  63. package/enterprise/createApiPulumiApp.js +3 -1
  64. package/enterprise/createCorePulumiApp.js +3 -1
  65. package/enterprise/createWebsitePulumiApp.js +3 -1
  66. package/enterprise/index.js +3 -1
  67. package/index.d.ts +1 -0
  68. package/index.js +15 -1
  69. package/index.js.map +1 -1
  70. package/package.json +8 -8
  71. package/utils/addDomainsUrlsOutputs.js +3 -1
  72. package/utils/crawlDirectory.js +3 -1
  73. package/utils/getPresignedPost.js +3 -1
  74. package/utils/index.js +3 -1
  75. package/utils/lambdaEnvVariables.js +3 -1
  76. package/utils/storageMigrate.js +3 -1
  77. package/utils/tagResources.js +3 -1
  78. package/utils/uploadFolderToS3.js +3 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_pulumi","require","_CoreCognito","_CoreDynamo","_CoreElasticSearch","_CoreEventBus","_CoreFileManager","_CoreVpc","_utils","createCorePulumiApp","projectAppParams","createPulumiApp","name","path","config","program","app","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","protect","legacyConfig","legacy","dynamoDbTable","addModule","CoreDynamo","vpcEnabled","vpc","CoreVpc","cognito","CoreCognito","useEmailAsUsername","eventBus","CoreEventBus","bucket","fileManagerBucket","CoreFileManger","ElasticSearch","addOutputs","fileManagerBucketId","output","id","primaryDynamodbTableArn","arn","primaryDynamodbTableName","primaryDynamodbTableHashKey","hashKey","primaryDynamodbTableRangeKey","rangeKey","cognitoUserPoolId","userPool","cognitoUserPoolArn","cognitoUserPoolPasswordPolicy","passwordPolicy","cognitoAppClientId","userPoolClient","eventBusArn","tagResources","WbyProjectName","String","WbyEnvironment","_objectSpread2","default"],"sources":["createCorePulumiApp.ts"],"sourcesContent":["import { createPulumiApp, PulumiAppParam } from \"@webiny/pulumi\";\nimport { CoreCognito } from \"./CoreCognito\";\nimport { CoreDynamo } from \"./CoreDynamo\";\nimport { ElasticSearch } from \"./CoreElasticSearch\";\nimport { CoreEventBus } from \"./CoreEventBus\";\nimport { CoreFileManger } from \"./CoreFileManager\";\nimport { CoreVpc } from \"./CoreVpc\";\nimport { tagResources } from \"~/utils\";\n\nexport type CorePulumiApp = ReturnType<typeof createCorePulumiApp>;\n\nexport interface CreateCorePulumiAppParams {\n /**\n * Secures against deleting database by accident.\n * By default enabled in production environments.\n */\n protect?: PulumiAppParam<boolean>;\n\n /**\n * Enables ElasticSearch infrastructure.\n * Note that it requires also changes in application code.\n */\n elasticSearch?: PulumiAppParam<\n | boolean\n | Partial<{\n domainName: string;\n indexPrefix: string;\n }>\n >;\n\n /**\n * Enables VPC for the application.\n * By default enabled in production environments.\n */\n vpc?: PulumiAppParam<boolean>;\n\n /**\n * Additional settings for backwards compatibility.\n */\n legacy?: PulumiAppParam<CoreAppLegacyConfig>;\n\n /**\n * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)\n * or add additional ones into the mix.\n */\n pulumi?: (app: CorePulumiApp) => void | Promise<void>;\n\n /**\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 interface CoreAppLegacyConfig {\n useEmailAsUsername?: boolean;\n}\n\nexport function createCorePulumiApp(projectAppParams: CreateCorePulumiAppParams = {}) {\n return createPulumiApp({\n name: \"core\",\n path: \"apps/core\",\n config: projectAppParams,\n program: async app => {\n 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 to late.\n if (projectAppParams.pulumi) {\n app.addHandler(() => {\n return projectAppParams.pulumi!(app as CorePulumiApp);\n });\n }\n\n const productionEnvironments = app.params.create.productionEnvironments || [\"prod\"];\n const isProduction = productionEnvironments.includes(app.params.run.env);\n\n const protect = app.getParam(projectAppParams.protect) ?? isProduction;\n const legacyConfig = app.getParam(projectAppParams.legacy) || {};\n\n // Setup DynamoDB table\n const dynamoDbTable = app.addModule(CoreDynamo, { protect });\n\n // Setup VPC\n const vpcEnabled = app.getParam(projectAppParams?.vpc) ?? isProduction;\n const vpc = vpcEnabled ? app.addModule(CoreVpc) : null;\n\n // Setup Cognito\n const cognito = app.addModule(CoreCognito, {\n protect,\n useEmailAsUsername: legacyConfig.useEmailAsUsername ?? false\n });\n\n // Setup event bus\n const eventBus = app.addModule(CoreEventBus);\n\n // Setup file core bucket\n const { bucket: fileManagerBucket } = app.addModule(CoreFileManger, { protect });\n\n const elasticSearch = app.getParam(projectAppParams?.elasticSearch)\n ? app.addModule(ElasticSearch, { protect })\n : null;\n\n app.addOutputs({\n fileManagerBucketId: fileManagerBucket.output.id,\n primaryDynamodbTableArn: dynamoDbTable.output.arn,\n primaryDynamodbTableName: dynamoDbTable.output.name,\n primaryDynamodbTableHashKey: dynamoDbTable.output.hashKey,\n primaryDynamodbTableRangeKey: dynamoDbTable.output.rangeKey,\n cognitoUserPoolId: cognito.userPool.output.id,\n cognitoUserPoolArn: cognito.userPool.output.arn,\n cognitoUserPoolPasswordPolicy: cognito.userPool.output.passwordPolicy,\n cognitoAppClientId: cognito.userPoolClient.output.id,\n eventBusArn: eventBus.output.arn\n });\n\n tagResources({\n WbyProjectName: String(process.env[\"WEBINY_PROJECT_NAME\"]),\n WbyEnvironment: String(process.env[\"WEBINY_ENV\"])\n });\n\n return {\n dynamoDbTable,\n vpc,\n ...cognito,\n fileManagerBucket,\n eventBus,\n elasticSearch\n };\n }\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["aws","_interopRequireWildcard","require","_pulumi","_CoreCognito","_CoreDynamo","_CoreElasticSearch","_CoreEventBus","_CoreFileManager","_CoreVpc","_utils","createCorePulumiApp","projectAppParams","createPulumiApp","name","path","config","program","app","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","protect","legacyConfig","legacy","dynamoDbTable","addModule","CoreDynamo","vpcEnabled","vpc","CoreVpc","cognito","CoreCognito","useEmailAsUsername","eventBus","CoreEventBus","bucket","fileManagerBucket","CoreFileManger","ElasticSearch","addOutputs","region","fileManagerBucketId","output","id","primaryDynamodbTableArn","arn","primaryDynamodbTableName","primaryDynamodbTableHashKey","hashKey","primaryDynamodbTableRangeKey","rangeKey","cognitoUserPoolId","userPool","cognitoUserPoolArn","cognitoUserPoolPasswordPolicy","passwordPolicy","cognitoAppClientId","userPoolClient","eventBusArn","tagResources","WbyProjectName","String","WbyEnvironment","_objectSpread2","default"],"sources":["createCorePulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport { createPulumiApp, PulumiAppParam } from \"@webiny/pulumi\";\nimport { CoreCognito } from \"./CoreCognito\";\nimport { CoreDynamo } from \"./CoreDynamo\";\nimport { ElasticSearch } from \"./CoreElasticSearch\";\nimport { CoreEventBus } from \"./CoreEventBus\";\nimport { CoreFileManger } from \"./CoreFileManager\";\nimport { CoreVpc } from \"./CoreVpc\";\nimport { tagResources } from \"~/utils\";\n\nexport type CorePulumiApp = ReturnType<typeof createCorePulumiApp>;\n\nexport interface CreateCorePulumiAppParams {\n /**\n * Secures against deleting database by accident.\n * By default enabled in production environments.\n */\n protect?: PulumiAppParam<boolean>;\n\n /**\n * Enables ElasticSearch infrastructure.\n * Note that it requires also changes in application code.\n */\n elasticSearch?: PulumiAppParam<\n | boolean\n | Partial<{\n domainName: string;\n indexPrefix: string;\n }>\n >;\n\n /**\n * Enables VPC for the application.\n * By default enabled in production environments.\n */\n vpc?: PulumiAppParam<boolean>;\n\n /**\n * Additional settings for backwards compatibility.\n */\n legacy?: PulumiAppParam<CoreAppLegacyConfig>;\n\n /**\n * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)\n * or add additional ones into the mix.\n */\n pulumi?: (app: CorePulumiApp) => void | Promise<void>;\n\n /**\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 interface CoreAppLegacyConfig {\n useEmailAsUsername?: boolean;\n}\n\nexport function createCorePulumiApp(projectAppParams: CreateCorePulumiAppParams = {}) {\n return createPulumiApp({\n name: \"core\",\n path: \"apps/core\",\n config: projectAppParams,\n program: async app => {\n 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 to late.\n if (projectAppParams.pulumi) {\n app.addHandler(() => {\n return projectAppParams.pulumi!(app as CorePulumiApp);\n });\n }\n\n const productionEnvironments = app.params.create.productionEnvironments || [\"prod\"];\n const isProduction = productionEnvironments.includes(app.params.run.env);\n\n const protect = app.getParam(projectAppParams.protect) ?? isProduction;\n const legacyConfig = app.getParam(projectAppParams.legacy) || {};\n\n // Setup DynamoDB table\n const dynamoDbTable = app.addModule(CoreDynamo, { protect });\n\n // Setup VPC\n const vpcEnabled = app.getParam(projectAppParams?.vpc) ?? isProduction;\n const vpc = vpcEnabled ? app.addModule(CoreVpc) : null;\n\n // Setup Cognito\n const cognito = app.addModule(CoreCognito, {\n protect,\n useEmailAsUsername: legacyConfig.useEmailAsUsername ?? false\n });\n\n // Setup event bus\n const eventBus = app.addModule(CoreEventBus);\n\n // Setup file core bucket\n const { bucket: fileManagerBucket } = app.addModule(CoreFileManger, { protect });\n\n const elasticSearch = app.getParam(projectAppParams?.elasticSearch)\n ? app.addModule(ElasticSearch, { protect })\n : null;\n\n app.addOutputs({\n region: aws.config.region,\n fileManagerBucketId: fileManagerBucket.output.id,\n primaryDynamodbTableArn: dynamoDbTable.output.arn,\n primaryDynamodbTableName: dynamoDbTable.output.name,\n primaryDynamodbTableHashKey: dynamoDbTable.output.hashKey,\n primaryDynamodbTableRangeKey: dynamoDbTable.output.rangeKey,\n cognitoUserPoolId: cognito.userPool.output.id,\n cognitoUserPoolArn: cognito.userPool.output.arn,\n cognitoUserPoolPasswordPolicy: cognito.userPool.output.passwordPolicy,\n cognitoAppClientId: cognito.userPoolClient.output.id,\n eventBusArn: eventBus.output.arn\n });\n\n tagResources({\n WbyProjectName: String(process.env[\"WEBINY_PROJECT_NAME\"]),\n WbyEnvironment: String(process.env[\"WEBINY_ENV\"])\n });\n\n return {\n dynamoDbTable,\n vpc,\n ...cognito,\n fileManagerBucket,\n eventBus,\n elasticSearch\n };\n }\n });\n}\n"],"mappings":"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"}
@@ -79,4 +79,6 @@ Object.keys(_createCorePulumiApp).forEach(function (key) {
79
79
  return _createCorePulumiApp[key];
80
80
  }
81
81
  });
82
- });
82
+ });
83
+
84
+ //# sourceMappingURL=index.js.map
@@ -104,4 +104,6 @@ function createPrivateAppBucket(app, name) {
104
104
  bucketPublicAccessBlock,
105
105
  bucketPolicy
106
106
  };
107
- }
107
+ }
108
+
109
+ //# sourceMappingURL=createAppBucket.js.map
@@ -10,4 +10,6 @@ function applyCustomDomain(cloudfront, params) {
10
10
  acmCertificateArn: params.acmCertificateArn,
11
11
  sslSupportMethod: params.sslSupportMethod ?? "sni-only"
12
12
  });
13
- }
13
+ }
14
+
15
+ //# sourceMappingURL=customDomain.js.map
package/apps/index.js CHANGED
@@ -84,4 +84,6 @@ Object.keys(_website).forEach(function (key) {
84
84
  }
85
85
  });
86
86
  });
87
- var _customDomain = require("./customDomain");
87
+ var _customDomain = require("./customDomain");
88
+
89
+ //# sourceMappingURL=index.js.map
@@ -71,4 +71,6 @@ function createLambdaRole(app, params) {
71
71
  }
72
72
  });
73
73
  return role;
74
- }
74
+ }
75
+
76
+ //# sourceMappingURL=lambdaUtils.js.map
@@ -134,4 +134,6 @@ const createReactPulumiApp = projectAppParams => {
134
134
  }
135
135
  });
136
136
  };
137
- exports.createReactPulumiApp = createReactPulumiApp;
137
+ exports.createReactPulumiApp = createReactPulumiApp;
138
+
139
+ //# sourceMappingURL=createReactPulumiApp.js.map
@@ -13,4 +13,6 @@ Object.keys(_createReactPulumiApp).forEach(function (key) {
13
13
  return _createReactPulumiApp[key];
14
14
  }
15
15
  });
16
- });
16
+ });
17
+
18
+ //# sourceMappingURL=index.js.map
@@ -11,6 +11,7 @@ var _fs = require("fs");
11
11
  var pulumi = _interopRequireWildcard(require("@pulumi/pulumi"));
12
12
  var aws = _interopRequireWildcard(require("@pulumi/aws"));
13
13
  var _common = require("./common");
14
+ var _constants = require("../constants");
14
15
  function createFunctionArchive({
15
16
  dynamoDbTable,
16
17
  region
@@ -70,7 +71,7 @@ function applyTenantRouter(app, cloudfront) {
70
71
  name: `${PREFIX}-origin-request`,
71
72
  config: {
72
73
  publish: true,
73
- runtime: "nodejs14.x",
74
+ runtime: _constants.LAMBDA_RUNTIME,
74
75
  handler: "index.handler",
75
76
  role: role.output.arn,
76
77
  timeout: 5,
@@ -115,4 +116,6 @@ function applyTenantRouter(app, cloudfront) {
115
116
  return {
116
117
  originLambda
117
118
  };
118
- }
119
+ }
120
+
121
+ //# sourceMappingURL=tenantRouter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_fs","require","pulumi","_interopRequireWildcard","aws","_common","createFunctionArchive","dynamoDbTable","region","handler","readFileSync","__dirname","source","replace","asset","AssetArchive","StringAsset","PREFIX","applyTenantRouter","app","cloudfront","String","process","env","AWS_REGION","core","getModule","CoreOutput","primaryDynamodbTableName","inlinePolicies","all","getCallerIdentity","apply","identity","name","policy","JSON","stringify","Version","Statement","Sid","Effect","Action","Resource","accountId","role","addResource","iam","Role","config","managedPolicyArns","ManagedPolicies","AWSLambdaBasicExecutionRole","assumeRolePolicy","Principal","Principals","LambdaPrincipal","EdgeLambdaPrincipal","awsUsEast1","Provider","originLambda","lambda","Function","publish","runtime","output","arn","timeout","memorySize","code","opts","provider","retainOnDelete","meta","canUseVpc","defaultCacheBehavior","value","_value$forwardedValue","_value$forwardedValue2","_value$forwardedValue3","_objectSpread2","default","forwardedValues","queryString","cookies","forward","headers","lambdaFunctionAssociations","eventType","includeBody","lambdaArn","qualifiedArn"],"sources":["tenantRouter.ts"],"sourcesContent":["import { readFileSync } from \"fs\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { PulumiApp, PulumiAppResource } from \"@webiny/pulumi\";\nimport { CoreOutput } from \"./common\";\n\ninterface Params {\n region: string;\n dynamoDbTable: string;\n}\n\nfunction createFunctionArchive({ dynamoDbTable, region }: Params) {\n const handler = readFileSync(\n __dirname + \"/../components/tenantRouter/functions/origin/request.js\",\n \"utf-8\"\n );\n\n const source = handler\n .replace(\"{DB_TABLE_NAME}\", dynamoDbTable)\n .replace(\"{DB_TABLE_REGION}\", region);\n\n return new pulumi.asset.AssetArchive({\n \"index.js\": new pulumi.asset.StringAsset(source)\n });\n}\n\nconst PREFIX = \"website-router\";\n\nexport function applyTenantRouter(\n app: PulumiApp,\n cloudfront: PulumiAppResource<typeof aws.cloudfront.Distribution>\n) {\n const region = String(process.env.AWS_REGION);\n\n // Get Core app output\n const core = app.getModule(CoreOutput);\n\n // `primaryDynamodbTableName` is a string, hence the type cast here.\n const dynamoDbTable = core.primaryDynamodbTableName;\n\n // Because of JSON.stringify, we need to resolve promises upfront.\n const inlinePolicies = pulumi\n .all([aws.getCallerIdentity({}), dynamoDbTable])\n .apply(([identity, dynamoDbTable]) => [\n {\n name: \"tenant-router-policy\",\n policy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForDynamodb\",\n Effect: \"Allow\",\n Action: [\"dynamodb:GetItem\", \"dynamodb:Query\"],\n Resource: [\n `arn:aws:dynamodb:${region}:${identity.accountId}:table/${dynamoDbTable}`,\n `arn:aws:dynamodb:${region}:${identity.accountId}:table/${dynamoDbTable}/*`\n ]\n }\n ]\n })\n }\n ]);\n\n const role = app.addResource(aws.iam.Role, {\n name: `${PREFIX}-role`,\n config: {\n inlinePolicies,\n managedPolicyArns: [aws.iam.ManagedPolicies.AWSLambdaBasicExecutionRole],\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: aws.iam.Principals.LambdaPrincipal,\n Effect: \"Allow\"\n },\n {\n Action: \"sts:AssumeRole\",\n Principal: aws.iam.Principals.EdgeLambdaPrincipal,\n Effect: \"Allow\"\n }\n ]\n }\n }\n });\n\n const awsUsEast1 = new aws.Provider(\"us-east-1\", { region: \"us-east-1\" });\n\n const originLambda = app.addResource(aws.lambda.Function, {\n name: `${PREFIX}-origin-request`,\n config: {\n publish: true,\n runtime: \"nodejs14.x\",\n handler: \"index.handler\",\n role: role.output.arn,\n timeout: 5,\n memorySize: 128,\n code: dynamoDbTable.apply(dynamoDbTable => {\n return createFunctionArchive({\n region,\n dynamoDbTable\n });\n })\n },\n // With the `retainOnDelete` option set to `true`, the Lambda function will not be deleted when\n // the environment is destroyed. Users need to delete the function manually. We decided to use\n // this option here because it enables us to avoid annoying AWS Lambda function replication\n // errors upon destroying the stack (see https://github.com/pulumi/pulumi-aws/issues/2178).\n opts: { provider: awsUsEast1, retainOnDelete: true },\n meta: {\n canUseVpc: false\n }\n });\n\n cloudfront.config.defaultCacheBehavior(value => {\n return {\n ...value,\n // We need to forward the `Host` header so the Lambda@Edge knows what custom domain was requested.\n forwardedValues: {\n ...value.forwardedValues,\n queryString: value.forwardedValues?.queryString || false,\n cookies: value.forwardedValues?.cookies || { forward: \"none\" },\n headers: [...(value.forwardedValues?.headers || []), \"Host\"]\n },\n lambdaFunctionAssociations: [\n ...(value.lambdaFunctionAssociations || []),\n {\n eventType: \"origin-request\",\n includeBody: false,\n lambdaArn: originLambda.output.qualifiedArn\n }\n ]\n };\n });\n\n return { originLambda };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_fs","require","pulumi","_interopRequireWildcard","aws","_common","_constants","createFunctionArchive","dynamoDbTable","region","handler","readFileSync","__dirname","source","replace","asset","AssetArchive","StringAsset","PREFIX","applyTenantRouter","app","cloudfront","String","process","env","AWS_REGION","core","getModule","CoreOutput","primaryDynamodbTableName","inlinePolicies","all","getCallerIdentity","apply","identity","name","policy","JSON","stringify","Version","Statement","Sid","Effect","Action","Resource","accountId","role","addResource","iam","Role","config","managedPolicyArns","ManagedPolicies","AWSLambdaBasicExecutionRole","assumeRolePolicy","Principal","Principals","LambdaPrincipal","EdgeLambdaPrincipal","awsUsEast1","Provider","originLambda","lambda","Function","publish","runtime","LAMBDA_RUNTIME","output","arn","timeout","memorySize","code","opts","provider","retainOnDelete","meta","canUseVpc","defaultCacheBehavior","value","_value$forwardedValue","_value$forwardedValue2","_value$forwardedValue3","_objectSpread2","default","forwardedValues","queryString","cookies","forward","headers","lambdaFunctionAssociations","eventType","includeBody","lambdaArn","qualifiedArn"],"sources":["tenantRouter.ts"],"sourcesContent":["import { readFileSync } from \"fs\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { PulumiApp, PulumiAppResource } from \"@webiny/pulumi\";\nimport { CoreOutput } from \"./common\";\nimport { LAMBDA_RUNTIME } from \"~/constants\";\n\ninterface Params {\n region: string;\n dynamoDbTable: string;\n}\n\nfunction createFunctionArchive({ dynamoDbTable, region }: Params) {\n const handler = readFileSync(\n __dirname + \"/../components/tenantRouter/functions/origin/request.js\",\n \"utf-8\"\n );\n\n const source = handler\n .replace(\"{DB_TABLE_NAME}\", dynamoDbTable)\n .replace(\"{DB_TABLE_REGION}\", region);\n\n return new pulumi.asset.AssetArchive({\n \"index.js\": new pulumi.asset.StringAsset(source)\n });\n}\n\nconst PREFIX = \"website-router\";\n\nexport function applyTenantRouter(\n app: PulumiApp,\n cloudfront: PulumiAppResource<typeof aws.cloudfront.Distribution>\n) {\n const region = String(process.env.AWS_REGION);\n\n // Get Core app output\n const core = app.getModule(CoreOutput);\n\n // `primaryDynamodbTableName` is a string, hence the type cast here.\n const dynamoDbTable = core.primaryDynamodbTableName;\n\n // Because of JSON.stringify, we need to resolve promises upfront.\n const inlinePolicies = pulumi\n .all([aws.getCallerIdentity({}), dynamoDbTable])\n .apply(([identity, dynamoDbTable]) => [\n {\n name: \"tenant-router-policy\",\n policy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForDynamodb\",\n Effect: \"Allow\",\n Action: [\"dynamodb:GetItem\", \"dynamodb:Query\"],\n Resource: [\n `arn:aws:dynamodb:${region}:${identity.accountId}:table/${dynamoDbTable}`,\n `arn:aws:dynamodb:${region}:${identity.accountId}:table/${dynamoDbTable}/*`\n ]\n }\n ]\n })\n }\n ]);\n\n const role = app.addResource(aws.iam.Role, {\n name: `${PREFIX}-role`,\n config: {\n inlinePolicies,\n managedPolicyArns: [aws.iam.ManagedPolicies.AWSLambdaBasicExecutionRole],\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: aws.iam.Principals.LambdaPrincipal,\n Effect: \"Allow\"\n },\n {\n Action: \"sts:AssumeRole\",\n Principal: aws.iam.Principals.EdgeLambdaPrincipal,\n Effect: \"Allow\"\n }\n ]\n }\n }\n });\n\n const awsUsEast1 = new aws.Provider(\"us-east-1\", { region: \"us-east-1\" });\n\n const originLambda = app.addResource(aws.lambda.Function, {\n name: `${PREFIX}-origin-request`,\n config: {\n publish: true,\n runtime: LAMBDA_RUNTIME,\n handler: \"index.handler\",\n role: role.output.arn,\n timeout: 5,\n memorySize: 128,\n code: dynamoDbTable.apply(dynamoDbTable => {\n return createFunctionArchive({\n region,\n dynamoDbTable\n });\n })\n },\n // With the `retainOnDelete` option set to `true`, the Lambda function will not be deleted when\n // the environment is destroyed. Users need to delete the function manually. We decided to use\n // this option here because it enables us to avoid annoying AWS Lambda function replication\n // errors upon destroying the stack (see https://github.com/pulumi/pulumi-aws/issues/2178).\n opts: { provider: awsUsEast1, retainOnDelete: true },\n meta: {\n canUseVpc: false\n }\n });\n\n cloudfront.config.defaultCacheBehavior(value => {\n return {\n ...value,\n // We need to forward the `Host` header so the Lambda@Edge knows what custom domain was requested.\n forwardedValues: {\n ...value.forwardedValues,\n queryString: value.forwardedValues?.queryString || false,\n cookies: value.forwardedValues?.cookies || { forward: \"none\" },\n headers: [...(value.forwardedValues?.headers || []), \"Host\"]\n },\n lambdaFunctionAssociations: [\n ...(value.lambdaFunctionAssociations || []),\n {\n eventType: \"origin-request\",\n includeBody: false,\n lambdaArn: originLambda.output.qualifiedArn\n }\n ]\n };\n });\n\n return { originLambda };\n}\n"],"mappings":"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"}
@@ -15,6 +15,7 @@ var _awsLayers = require("@webiny/aws-layers");
15
15
  var _lambdaUtils = require("../lambdaUtils");
16
16
  var _common = require("../common");
17
17
  var _awsUtils = require("../awsUtils");
18
+ var _constants = require("../../constants");
18
19
  // @ts-ignore
19
20
 
20
21
  function createPrerenderingService(app, params) {
@@ -80,7 +81,7 @@ function createRenderSubscriber(app, policy, params) {
80
81
  name: "ps-render-subscriber-lambda",
81
82
  config: {
82
83
  role: role.output.arn,
83
- runtime: "nodejs14.x",
84
+ runtime: _constants.LAMBDA_RUNTIME,
84
85
  handler: "handler.handler",
85
86
  timeout: 30,
86
87
  memorySize: 512,
@@ -148,7 +149,7 @@ function createRenderer(app, queue, policy, params) {
148
149
  name: "ps-render-lambda",
149
150
  config: {
150
151
  role: role.output.arn,
151
- runtime: "nodejs14.x",
152
+ runtime: _constants.LAMBDA_RUNTIME,
152
153
  handler: "handler.handler",
153
154
  timeout: 300,
154
155
  memorySize: 2048,
@@ -190,7 +191,7 @@ function createFlushService(app, policy, params) {
190
191
  name: "ps-flush-lambda",
191
192
  config: {
192
193
  role: role.output.arn,
193
- runtime: "nodejs14.x",
194
+ runtime: _constants.LAMBDA_RUNTIME,
194
195
  handler: "handler.handler",
195
196
  timeout: 30,
196
197
  memorySize: 512,
@@ -283,4 +284,6 @@ function createLambdaPolicy(app, queue, params) {
283
284
  }
284
285
  }
285
286
  });
286
- }
287
+ }
288
+
289
+ //# sourceMappingURL=WebsitePrerendering.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["path","_interopRequireWildcard","require","pulumi","aws","_dynamodb","_awsLayers","_lambdaUtils","_common","_awsUtils","createPrerenderingService","app","params","queue","addResource","sqs","Queue","name","config","visibilityTimeoutSeconds","fifoQueue","policy","createLambdaPolicy","output","renderer","createRenderer","subscriber","createRenderSubscriber","flush","createFlushService","settings","createPrerenderingSettingsDbItem","tableItem","dynamodb","TableItem","tableName","dbTableName","hashKey","dbTableHashKey","rangeKey","dbTableRangeKey","item","interpolate","run","variant","appUrl","deliveryUrl","bucket","cloudfrontId","url","apply","v","JSON","stringify","Converter","marshall","parse","core","getModule","CoreOutput","role","createLambdaRole","lambda","Function","arn","runtime","handler","timeout","memorySize","environment","variables","getCommonLambdaEnvVariables","value","_objectSpread2","default","DB_TABLE","description","code","asset","AssetArchive","FileArchive","join","paths","workspace","vpcConfig","VpcConfig","functionVpcConfig","eventRule","cloudwatch","EventRule","eventBusName","eventBusArn","eventPattern","eventPermission","Permission","action","function","principal","sourceArn","eventTarget","EventTarget","rule","executionRole","iam","ManagedPolicy","AWSLambdaSQSQueueExecutionRole","layers","getLayerArn","eventSourceMapping","EventSourceMapping","functionName","eventSourceArn","batchSize","awsAccountId","getAwsAccountId","Policy","Version","Statement","Sid","Effect","Action","Resource","s","resources","primaryDynamodbTableArn","elasticsearchDynamodbTableArn","push"],"sources":["WebsitePrerendering.ts"],"sourcesContent":["import * as path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { Converter } from \"aws-sdk/clients/dynamodb\";\n\nimport { PulumiApp } from \"@webiny/pulumi\";\n// @ts-ignore\nimport { getLayerArn } from \"@webiny/aws-layers\";\n\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { CoreOutput, VpcConfig } from \"../common\";\nimport { getAwsAccountId } from \"../awsUtils\";\n\ninterface PreRenderingServiceParams {\n dbTableName: pulumi.Output<string>;\n dbTableHashKey: pulumi.Output<string>;\n dbTableRangeKey: pulumi.Output<string>;\n appUrl: pulumi.Output<string>;\n deliveryUrl: pulumi.Output<string>;\n bucket: pulumi.Output<string>;\n cloudfrontId: pulumi.Output<string>;\n}\n\nexport function createPrerenderingService(app: PulumiApp, params: PreRenderingServiceParams) {\n const queue = app.addResource(aws.sqs.Queue, {\n name: \"ps-render-queue\",\n config: {\n visibilityTimeoutSeconds: 300,\n fifoQueue: true\n }\n });\n\n const policy = createLambdaPolicy(app, queue.output, params);\n const renderer = createRenderer(app, queue.output, policy.output, params);\n const subscriber = createRenderSubscriber(app, policy.output, params);\n const flush = createFlushService(app, policy.output, params);\n const settings = createPrerenderingSettingsDbItem(app, queue.output, params);\n\n return {\n subscriber,\n renderer,\n flush,\n settings\n };\n}\n\nfunction createPrerenderingSettingsDbItem(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n params: PreRenderingServiceParams\n) {\n /**\n * To handle everything related to prerendering, we need the following information:\n * - appUrl - SPA URL used to prerender HTML\n * - bucket - name of the S3 bucket used for storage of HTML snapshots\n * - cloudfrontId - for cache invalidation\n * - sqsQueueUrl - an SQS queue for prerendering tasks (messages)\n */\n const tableItem = app.addResource(aws.dynamodb.TableItem, {\n name: \"psSettings\",\n config: {\n tableName: params.dbTableName,\n hashKey: params.dbTableHashKey,\n rangeKey: params.dbTableRangeKey,\n item: pulumi.interpolate`{\n \"PK\": \"PS#SETTINGS\",\n \"SK\": \"${app.params.run.variant || \"default\"}\",\n \"data\": {\n \"appUrl\": \"${params.appUrl}\",\n \"deliveryUrl\": \"${params.deliveryUrl}\",\n \"bucket\": \"${params.bucket}\",\n \"cloudfrontId\": \"${params.cloudfrontId}\",\n \"sqsQueueUrl\": \"${queue.url}\"\n }\n }`\n // We're using the native DynamoDB converter to avoid building those nested objects ourselves.\n .apply(v => JSON.stringify(Converter.marshall(JSON.parse(v))))\n }\n });\n\n return { tableItem };\n}\n\nfunction createRenderSubscriber(\n app: PulumiApp,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n\n const role = createLambdaRole(app, {\n name: \"ps-render-subscriber-role\",\n policy: policy\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-render-subscriber-lambda\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Subscribes to render events on event bus\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/subscribe/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n /**\n * TODO: when we get to staged rollouts and variants, maybe we can create per-variant event rules,\n * to avoid invocation of all variant lambdas just to do a `detail-type` check and exit early.\n * That way, we would be publishing events scoped to a variant, like \"RenderPages-{variant}\".\n */\n\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: \"ps-render-subscriber-event-rule\",\n config: {\n eventBusName: core.eventBusArn,\n eventPattern: JSON.stringify({\n \"detail-type\": [\"RenderPages\"]\n })\n }\n });\n\n const eventPermission = app.addResource(aws.lambda.Permission, {\n name: \"ps-render-subscriber-event-permission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: lambda.output.arn,\n principal: \"events.amazonaws.com\",\n sourceArn: eventRule.output.arn\n }\n });\n\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: \"ps-render-subscriber-event-target\",\n config: {\n rule: eventRule.output.name,\n eventBusName: core.eventBusArn,\n arn: lambda.output.arn\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventRule,\n eventPermission,\n eventTarget\n };\n}\n\nfunction createRenderer(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const role = createLambdaRole(app, {\n name: \"ps-render-lambda-role\",\n policy: policy,\n executionRole: aws.iam.ManagedPolicy.AWSLambdaSQSQueueExecutionRole\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-render-lambda\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 300,\n memorySize: 2048,\n layers: [getLayerArn(\"shelf-io-chrome-aws-lambda-layer\")],\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Renders pages and stores output in an S3 bucket of choice.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/render/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const eventSourceMapping = app.addResource(aws.lambda.EventSourceMapping, {\n name: \"ps-render-event-source-mapping\",\n config: {\n functionName: lambda.output.arn,\n eventSourceArn: queue.arn,\n batchSize: 1\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventSourceMapping\n };\n}\n\nfunction createFlushService(\n app: PulumiApp,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n\n const role = createLambdaRole(app, {\n name: \"ps-flush-lambda-role\",\n policy: policy\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-flush-lambda\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Subscribes to flush events on event bus\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/flush/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: \"ps-flush-event-rule\",\n config: {\n eventBusName: core.eventBusArn,\n eventPattern: JSON.stringify({\n \"detail-type\": [\"FlushPages\"]\n })\n }\n });\n\n const eventPermission = app.addResource(aws.lambda.Permission, {\n name: \"ps-flush-event-permission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: lambda.output.arn,\n principal: \"events.amazonaws.com\",\n sourceArn: eventRule.output.arn\n }\n });\n\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: \"ps-flush-event-target\",\n config: {\n rule: eventRule.output.name,\n eventBusName: core.eventBusArn,\n arn: lambda.output.arn\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventRule,\n eventPermission,\n eventTarget\n };\n}\n\nfunction createLambdaPolicy(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ps-lambda-policy\",\n config: {\n description: \"This policy enables access to Lambda, S3, Cloudfront, SQS and Dynamodb\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForDynamodb\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:BatchGetItem\",\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:GetItem\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:Scan\",\n \"dynamodb:UpdateItem\"\n ],\n Resource: core.apply(s => {\n // Add permissions to DynamoDB table\n const resources = [\n `${s.primaryDynamodbTableArn}`,\n `${s.primaryDynamodbTableArn}/*`\n ];\n\n // Attach permissions for elastic search dynamo as well (if ES is enabled).\n if (s.elasticsearchDynamodbTableArn) {\n resources.push(\n `${s.elasticsearchDynamodbTableArn}`,\n `${s.elasticsearchDynamodbTableArn}/*`\n );\n }\n\n return resources;\n })\n },\n {\n Sid: \"PermissionForS3\",\n Effect: \"Allow\",\n Action: [\"s3:DeleteObject\", \"s3:GetObject\", \"s3:PutObject\"],\n Resource: [pulumi.interpolate`arn:aws:s3:::${params.bucket}/*`]\n },\n {\n Sid: \"PermissionForCloudfront\",\n Effect: \"Allow\",\n Action: \"cloudfront:CreateInvalidation\",\n Resource: pulumi.interpolate`arn:aws:cloudfront::${awsAccountId}:distribution/*`\n },\n {\n Sid: \"PermissionForSQS\",\n Effect: \"Allow\",\n Action: [\"sqs:SendMessage\", \"sqs:SendMessageBatch\"],\n Resource: queue.arn\n }\n ]\n }\n }\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["path","_interopRequireWildcard","require","pulumi","aws","_dynamodb","_awsLayers","_lambdaUtils","_common","_awsUtils","_constants","createPrerenderingService","app","params","queue","addResource","sqs","Queue","name","config","visibilityTimeoutSeconds","fifoQueue","policy","createLambdaPolicy","output","renderer","createRenderer","subscriber","createRenderSubscriber","flush","createFlushService","settings","createPrerenderingSettingsDbItem","tableItem","dynamodb","TableItem","tableName","dbTableName","hashKey","dbTableHashKey","rangeKey","dbTableRangeKey","item","interpolate","run","variant","appUrl","deliveryUrl","bucket","cloudfrontId","url","apply","v","JSON","stringify","Converter","marshall","parse","core","getModule","CoreOutput","role","createLambdaRole","lambda","Function","arn","runtime","LAMBDA_RUNTIME","handler","timeout","memorySize","environment","variables","getCommonLambdaEnvVariables","value","_objectSpread2","default","DB_TABLE","description","code","asset","AssetArchive","FileArchive","join","paths","workspace","vpcConfig","VpcConfig","functionVpcConfig","eventRule","cloudwatch","EventRule","eventBusName","eventBusArn","eventPattern","eventPermission","Permission","action","function","principal","sourceArn","eventTarget","EventTarget","rule","executionRole","iam","ManagedPolicy","AWSLambdaSQSQueueExecutionRole","layers","getLayerArn","eventSourceMapping","EventSourceMapping","functionName","eventSourceArn","batchSize","awsAccountId","getAwsAccountId","Policy","Version","Statement","Sid","Effect","Action","Resource","s","resources","primaryDynamodbTableArn","elasticsearchDynamodbTableArn","push"],"sources":["WebsitePrerendering.ts"],"sourcesContent":["import * as path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { Converter } from \"aws-sdk/clients/dynamodb\";\n\nimport { PulumiApp } from \"@webiny/pulumi\";\n// @ts-ignore\nimport { getLayerArn } from \"@webiny/aws-layers\";\n\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { CoreOutput, VpcConfig } from \"../common\";\nimport { getAwsAccountId } from \"../awsUtils\";\nimport { LAMBDA_RUNTIME } from \"~/constants\";\n\ninterface PreRenderingServiceParams {\n dbTableName: pulumi.Output<string>;\n dbTableHashKey: pulumi.Output<string>;\n dbTableRangeKey: pulumi.Output<string>;\n appUrl: pulumi.Output<string>;\n deliveryUrl: pulumi.Output<string>;\n bucket: pulumi.Output<string>;\n cloudfrontId: pulumi.Output<string>;\n}\n\nexport function createPrerenderingService(app: PulumiApp, params: PreRenderingServiceParams) {\n const queue = app.addResource(aws.sqs.Queue, {\n name: \"ps-render-queue\",\n config: {\n visibilityTimeoutSeconds: 300,\n fifoQueue: true\n }\n });\n\n const policy = createLambdaPolicy(app, queue.output, params);\n const renderer = createRenderer(app, queue.output, policy.output, params);\n const subscriber = createRenderSubscriber(app, policy.output, params);\n const flush = createFlushService(app, policy.output, params);\n const settings = createPrerenderingSettingsDbItem(app, queue.output, params);\n\n return {\n subscriber,\n renderer,\n flush,\n settings\n };\n}\n\nfunction createPrerenderingSettingsDbItem(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n params: PreRenderingServiceParams\n) {\n /**\n * To handle everything related to prerendering, we need the following information:\n * - appUrl - SPA URL used to prerender HTML\n * - bucket - name of the S3 bucket used for storage of HTML snapshots\n * - cloudfrontId - for cache invalidation\n * - sqsQueueUrl - an SQS queue for prerendering tasks (messages)\n */\n const tableItem = app.addResource(aws.dynamodb.TableItem, {\n name: \"psSettings\",\n config: {\n tableName: params.dbTableName,\n hashKey: params.dbTableHashKey,\n rangeKey: params.dbTableRangeKey,\n item: pulumi.interpolate`{\n \"PK\": \"PS#SETTINGS\",\n \"SK\": \"${app.params.run.variant || \"default\"}\",\n \"data\": {\n \"appUrl\": \"${params.appUrl}\",\n \"deliveryUrl\": \"${params.deliveryUrl}\",\n \"bucket\": \"${params.bucket}\",\n \"cloudfrontId\": \"${params.cloudfrontId}\",\n \"sqsQueueUrl\": \"${queue.url}\"\n }\n }`\n // We're using the native DynamoDB converter to avoid building those nested objects ourselves.\n .apply(v => JSON.stringify(Converter.marshall(JSON.parse(v))))\n }\n });\n\n return { tableItem };\n}\n\nfunction createRenderSubscriber(\n app: PulumiApp,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n\n const role = createLambdaRole(app, {\n name: \"ps-render-subscriber-role\",\n policy: policy\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-render-subscriber-lambda\",\n config: {\n role: role.output.arn,\n runtime: LAMBDA_RUNTIME,\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Subscribes to render events on event bus\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/subscribe/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n /**\n * TODO: when we get to staged rollouts and variants, maybe we can create per-variant event rules,\n * to avoid invocation of all variant lambdas just to do a `detail-type` check and exit early.\n * That way, we would be publishing events scoped to a variant, like \"RenderPages-{variant}\".\n */\n\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: \"ps-render-subscriber-event-rule\",\n config: {\n eventBusName: core.eventBusArn,\n eventPattern: JSON.stringify({\n \"detail-type\": [\"RenderPages\"]\n })\n }\n });\n\n const eventPermission = app.addResource(aws.lambda.Permission, {\n name: \"ps-render-subscriber-event-permission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: lambda.output.arn,\n principal: \"events.amazonaws.com\",\n sourceArn: eventRule.output.arn\n }\n });\n\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: \"ps-render-subscriber-event-target\",\n config: {\n rule: eventRule.output.name,\n eventBusName: core.eventBusArn,\n arn: lambda.output.arn\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventRule,\n eventPermission,\n eventTarget\n };\n}\n\nfunction createRenderer(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const role = createLambdaRole(app, {\n name: \"ps-render-lambda-role\",\n policy: policy,\n executionRole: aws.iam.ManagedPolicy.AWSLambdaSQSQueueExecutionRole\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-render-lambda\",\n config: {\n role: role.output.arn,\n runtime: LAMBDA_RUNTIME,\n handler: \"handler.handler\",\n timeout: 300,\n memorySize: 2048,\n layers: [getLayerArn(\"shelf-io-chrome-aws-lambda-layer\")],\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Renders pages and stores output in an S3 bucket of choice.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/render/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const eventSourceMapping = app.addResource(aws.lambda.EventSourceMapping, {\n name: \"ps-render-event-source-mapping\",\n config: {\n functionName: lambda.output.arn,\n eventSourceArn: queue.arn,\n batchSize: 1\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventSourceMapping\n };\n}\n\nfunction createFlushService(\n app: PulumiApp,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n\n const role = createLambdaRole(app, {\n name: \"ps-flush-lambda-role\",\n policy: policy\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-flush-lambda\",\n config: {\n role: role.output.arn,\n runtime: LAMBDA_RUNTIME,\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Subscribes to flush events on event bus\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/flush/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: \"ps-flush-event-rule\",\n config: {\n eventBusName: core.eventBusArn,\n eventPattern: JSON.stringify({\n \"detail-type\": [\"FlushPages\"]\n })\n }\n });\n\n const eventPermission = app.addResource(aws.lambda.Permission, {\n name: \"ps-flush-event-permission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: lambda.output.arn,\n principal: \"events.amazonaws.com\",\n sourceArn: eventRule.output.arn\n }\n });\n\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: \"ps-flush-event-target\",\n config: {\n rule: eventRule.output.name,\n eventBusName: core.eventBusArn,\n arn: lambda.output.arn\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventRule,\n eventPermission,\n eventTarget\n };\n}\n\nfunction createLambdaPolicy(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ps-lambda-policy\",\n config: {\n description: \"This policy enables access to Lambda, S3, Cloudfront, SQS and Dynamodb\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForDynamodb\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:BatchGetItem\",\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:GetItem\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:Scan\",\n \"dynamodb:UpdateItem\"\n ],\n Resource: core.apply(s => {\n // Add permissions to DynamoDB table\n const resources = [\n `${s.primaryDynamodbTableArn}`,\n `${s.primaryDynamodbTableArn}/*`\n ];\n\n // Attach permissions for elastic search dynamo as well (if ES is enabled).\n if (s.elasticsearchDynamodbTableArn) {\n resources.push(\n `${s.elasticsearchDynamodbTableArn}`,\n `${s.elasticsearchDynamodbTableArn}/*`\n );\n }\n\n return resources;\n })\n },\n {\n Sid: \"PermissionForS3\",\n Effect: \"Allow\",\n Action: [\"s3:DeleteObject\", \"s3:GetObject\", \"s3:PutObject\"],\n Resource: [pulumi.interpolate`arn:aws:s3:::${params.bucket}/*`]\n },\n {\n Sid: \"PermissionForCloudfront\",\n Effect: \"Allow\",\n Action: \"cloudfront:CreateInvalidation\",\n Resource: pulumi.interpolate`arn:aws:cloudfront::${awsAccountId}:distribution/*`\n },\n {\n Sid: \"PermissionForSQS\",\n Effect: \"Allow\",\n Action: [\"sqs:SendMessage\", \"sqs:SendMessageBatch\"],\n Resource: queue.arn\n }\n ]\n }\n }\n });\n}\n"],"mappings":"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"}
@@ -43,6 +43,11 @@ export declare const createWebsitePulumiApp: (projectAppParams?: CreateWebsitePu
43
43
  eventPermission: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/permission").Permission>;
44
44
  eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventTarget").EventTarget>;
45
45
  };
46
+ /**
47
+ * Treats provided environments as production environments, which
48
+ * are deployed in production deployment mode.
49
+ * https://www.webiny.com/docs/architecture/deployment-modes/production
50
+ */
46
51
  renderer: {
47
52
  policy: pulumi.Output<import("@pulumi/aws/iam/policy").Policy>;
48
53
  role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
@@ -59,11 +64,7 @@ export declare const createWebsitePulumiApp: (projectAppParams?: CreateWebsitePu
59
64
  };
60
65
  settings: {
61
66
  tableItem: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/dynamodb/tableItem").TableItem>;
62
- }; /**
63
- * Treats provided environments as production environments, which
64
- * are deployed in production deployment mode.
65
- * https://www.webiny.com/docs/architecture/deployment-modes/production
66
- */
67
+ };
67
68
  };
68
69
  preview: {
69
70
  cloudfront: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront/distribution").Distribution>;
@@ -258,4 +258,6 @@ const createWebsitePulumiApp = (projectAppParams = {}) => {
258
258
  });
259
259
  return (0, _utils.withCommonLambdaEnvVariables)(app);
260
260
  };
261
- exports.createWebsitePulumiApp = createWebsitePulumiApp;
261
+ exports.createWebsitePulumiApp = createWebsitePulumiApp;
262
+
263
+ //# sourceMappingURL=createWebsitePulumiApp.js.map
@@ -30,4 +30,6 @@ function handler(event) {
30
30
  var request = event.request;
31
31
  request.uri = sanitizeRequestURI(request.uri);
32
32
  return request;
33
- }
33
+ }
34
+
35
+ //# sourceMappingURL=deliveryViewerRequest.js.map
@@ -13,4 +13,6 @@ Object.keys(_createWebsitePulumiApp).forEach(function (key) {
13
13
  return _createWebsitePulumiApp[key];
14
14
  }
15
15
  });
16
- });
16
+ });
17
+
18
+ //# sourceMappingURL=index.js.map
@@ -11,6 +11,7 @@ var _fs = require("fs");
11
11
  var pulumi = _interopRequireWildcard(require("@pulumi/pulumi"));
12
12
  var aws = _interopRequireWildcard(require("@pulumi/aws"));
13
13
  var _utils = require("@webiny/cli-plugin-deploy-pulumi/utils");
14
+ var _constants = require("../../constants");
14
15
  function createFunctionArchive({
15
16
  dynamoDbTable,
16
17
  region
@@ -69,7 +70,7 @@ class WebsiteTenantRouter extends pulumi.ComponentResource {
69
70
  });
70
71
  this.originRequest = new aws.lambda.Function(`${name}-origin-request`, {
71
72
  publish: true,
72
- runtime: "nodejs14.x",
73
+ runtime: _constants.LAMBDA_RUNTIME,
73
74
  handler: "index.handler",
74
75
  role: role.arn,
75
76
  timeout: 5,
@@ -85,4 +86,6 @@ class WebsiteTenantRouter extends pulumi.ComponentResource {
85
86
  this.registerOutputs();
86
87
  }
87
88
  }
88
- exports.WebsiteTenantRouter = WebsiteTenantRouter;
89
+ exports.WebsiteTenantRouter = WebsiteTenantRouter;
90
+
91
+ //# sourceMappingURL=WebsiteTenantRouter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_fs","require","pulumi","_interopRequireWildcard","aws","_utils","createFunctionArchive","dynamoDbTable","region","handler","readFileSync","__dirname","source","replace","asset","AssetArchive","StringAsset","WebsiteTenantRouter","ComponentResource","constructor","name","config","opts","_defineProperty2","default","getStackOutput","folder","apiFolder","env","apiEnv","String","process","WEBINY_ENV","inlinePolicies","Promise","all","getCallerIdentity","then","callerIdentity","policy","JSON","stringify","Version","Statement","Sid","Effect","Action","Resource","accountId","role","iam","Role","managedPolicyArns","ManagedPolicies","AWSLambdaBasicExecutionRole","assumeRolePolicy","Principal","Principals","LambdaPrincipal","EdgeLambdaPrincipal","parent","awsUsEast1","Provider","originRequest","lambda","Function","publish","runtime","arn","timeout","memorySize","code","provider","registerOutputs","exports"],"sources":["WebsiteTenantRouter.ts"],"sourcesContent":["import { readFileSync } from \"fs\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { getStackOutput } from \"@webiny/cli-plugin-deploy-pulumi/utils\";\n\ninterface Config {\n apiFolder?: string;\n apiEnv?: string;\n}\n\ninterface Params {\n region: string;\n dynamoDbTable: string;\n}\n\nfunction createFunctionArchive({ dynamoDbTable, region }: Params) {\n const handler = readFileSync(__dirname + \"/functions/origin/request.js\", \"utf-8\");\n\n const source = handler\n .replace(\"{DB_TABLE_NAME}\", dynamoDbTable)\n .replace(\"{DB_TABLE_REGION}\", region);\n\n return new pulumi.asset.AssetArchive({\n \"index.js\": new pulumi.asset.StringAsset(source)\n });\n}\n\nexport class WebsiteTenantRouter extends pulumi.ComponentResource {\n public readonly originRequest: aws.lambda.Function;\n\n constructor(name: string, config: Config = {}, opts = {}) {\n super(\"webiny:aws:WebsiteTenantRouter\", name, {}, opts);\n\n const { region, dynamoDbTable } = getStackOutput<{ region: string; dynamoDbTable: string }>(\n {\n folder: config.apiFolder || \"api\",\n env: config.apiEnv || String(process.env.WEBINY_ENV)\n }\n );\n\n const inlinePolicies = Promise.all([aws.getCallerIdentity({})]).then(([callerIdentity]) => [\n {\n name: \"dynamodb-policy\",\n policy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForDynamodb\",\n Effect: \"Allow\",\n Action: [\"dynamodb:GetItem\", \"dynamodb:Query\"],\n Resource: [\n `arn:aws:dynamodb:${region}:${callerIdentity.accountId}:table/${dynamoDbTable}`,\n `arn:aws:dynamodb:${region}:${callerIdentity.accountId}:table/${dynamoDbTable}/*`\n ]\n }\n ]\n })\n }\n ]);\n\n const role = new aws.iam.Role(\n `${name}-role`,\n {\n inlinePolicies,\n managedPolicyArns: [aws.iam.ManagedPolicies.AWSLambdaBasicExecutionRole],\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: aws.iam.Principals.LambdaPrincipal,\n Effect: \"Allow\"\n },\n {\n Action: \"sts:AssumeRole\",\n Principal: aws.iam.Principals.EdgeLambdaPrincipal,\n Effect: \"Allow\"\n }\n ]\n }\n },\n { parent: this }\n );\n\n // Some resources _must_ be put in us-east-1, such as Lambda at Edge.\n const awsUsEast1 = new aws.Provider(\"us-east-1\", { region: \"us-east-1\" });\n\n this.originRequest = new aws.lambda.Function(\n `${name}-origin-request`,\n {\n publish: true,\n runtime: \"nodejs14.x\",\n handler: \"index.handler\",\n role: role.arn,\n timeout: 5,\n memorySize: 128,\n code: createFunctionArchive({ region, dynamoDbTable })\n },\n { provider: awsUsEast1, parent: this }\n );\n\n this.registerOutputs();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_fs","require","pulumi","_interopRequireWildcard","aws","_utils","_constants","createFunctionArchive","dynamoDbTable","region","handler","readFileSync","__dirname","source","replace","asset","AssetArchive","StringAsset","WebsiteTenantRouter","ComponentResource","constructor","name","config","opts","_defineProperty2","default","getStackOutput","folder","apiFolder","env","apiEnv","String","process","WEBINY_ENV","inlinePolicies","Promise","all","getCallerIdentity","then","callerIdentity","policy","JSON","stringify","Version","Statement","Sid","Effect","Action","Resource","accountId","role","iam","Role","managedPolicyArns","ManagedPolicies","AWSLambdaBasicExecutionRole","assumeRolePolicy","Principal","Principals","LambdaPrincipal","EdgeLambdaPrincipal","parent","awsUsEast1","Provider","originRequest","lambda","Function","publish","runtime","LAMBDA_RUNTIME","arn","timeout","memorySize","code","provider","registerOutputs","exports"],"sources":["WebsiteTenantRouter.ts"],"sourcesContent":["import { readFileSync } from \"fs\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { getStackOutput } from \"@webiny/cli-plugin-deploy-pulumi/utils\";\nimport { LAMBDA_RUNTIME } from \"~/constants\";\n\ninterface Config {\n apiFolder?: string;\n apiEnv?: string;\n}\n\ninterface Params {\n region: string;\n dynamoDbTable: string;\n}\n\nfunction createFunctionArchive({ dynamoDbTable, region }: Params) {\n const handler = readFileSync(__dirname + \"/functions/origin/request.js\", \"utf-8\");\n\n const source = handler\n .replace(\"{DB_TABLE_NAME}\", dynamoDbTable)\n .replace(\"{DB_TABLE_REGION}\", region);\n\n return new pulumi.asset.AssetArchive({\n \"index.js\": new pulumi.asset.StringAsset(source)\n });\n}\n\nexport class WebsiteTenantRouter extends pulumi.ComponentResource {\n public readonly originRequest: aws.lambda.Function;\n\n constructor(name: string, config: Config = {}, opts = {}) {\n super(\"webiny:aws:WebsiteTenantRouter\", name, {}, opts);\n\n const { region, dynamoDbTable } = getStackOutput<{ region: string; dynamoDbTable: string }>(\n {\n folder: config.apiFolder || \"api\",\n env: config.apiEnv || String(process.env.WEBINY_ENV)\n }\n );\n\n const inlinePolicies = Promise.all([aws.getCallerIdentity({})]).then(([callerIdentity]) => [\n {\n name: \"dynamodb-policy\",\n policy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForDynamodb\",\n Effect: \"Allow\",\n Action: [\"dynamodb:GetItem\", \"dynamodb:Query\"],\n Resource: [\n `arn:aws:dynamodb:${region}:${callerIdentity.accountId}:table/${dynamoDbTable}`,\n `arn:aws:dynamodb:${region}:${callerIdentity.accountId}:table/${dynamoDbTable}/*`\n ]\n }\n ]\n })\n }\n ]);\n\n const role = new aws.iam.Role(\n `${name}-role`,\n {\n inlinePolicies,\n managedPolicyArns: [aws.iam.ManagedPolicies.AWSLambdaBasicExecutionRole],\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: aws.iam.Principals.LambdaPrincipal,\n Effect: \"Allow\"\n },\n {\n Action: \"sts:AssumeRole\",\n Principal: aws.iam.Principals.EdgeLambdaPrincipal,\n Effect: \"Allow\"\n }\n ]\n }\n },\n { parent: this }\n );\n\n // Some resources _must_ be put in us-east-1, such as Lambda at Edge.\n const awsUsEast1 = new aws.Provider(\"us-east-1\", { region: \"us-east-1\" });\n\n this.originRequest = new aws.lambda.Function(\n `${name}-origin-request`,\n {\n publish: true,\n runtime: LAMBDA_RUNTIME,\n handler: \"index.handler\",\n role: role.arn,\n timeout: 5,\n memorySize: 128,\n code: createFunctionArchive({ region, dynamoDbTable })\n },\n { provider: awsUsEast1, parent: this }\n );\n\n this.registerOutputs();\n }\n}\n"],"mappings":"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"}
@@ -118,4 +118,6 @@ exports.handler = async event => {
118
118
  return handleOriginRequest(request);
119
119
  }
120
120
  return request;
121
- };
121
+ };
122
+
123
+ //# sourceMappingURL=request.js.map
package/constants.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const LAMBDA_RUNTIME: "nodejs16.x";
package/constants.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LAMBDA_RUNTIME = void 0;
7
+ var _aws = require("@pulumi/aws");
8
+ const LAMBDA_RUNTIME = _aws.lambda.Runtime.NodeJS16dX;
9
+ exports.LAMBDA_RUNTIME = LAMBDA_RUNTIME;
10
+
11
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_aws","require","LAMBDA_RUNTIME","lambda","Runtime","NodeJS16dX","exports"],"sources":["constants.ts"],"sourcesContent":["import { lambda } from \"@pulumi/aws\";\n\nexport const LAMBDA_RUNTIME = lambda.Runtime.NodeJS16dX;\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAEO,MAAMC,cAAc,GAAGC,WAAM,CAACC,OAAO,CAACC,UAAU;AAACC,OAAA,CAAAJ,cAAA,GAAAA,cAAA"}
@@ -21,4 +21,6 @@ Object.defineProperty(exports, "createAdminPulumiApp", {
21
21
  return _createAdminPulumiApp.createAdminPulumiApp;
22
22
  }
23
23
  });
24
- var _createAdminPulumiApp = require("../apps/admin/createAdminPulumiApp");
24
+ var _createAdminPulumiApp = require("../apps/admin/createAdminPulumiApp");
25
+
26
+ //# sourceMappingURL=createAdminPulumiApp.js.map
@@ -69,4 +69,6 @@ function createApiPulumiApp(projectAppParams = {}) {
69
69
  return (_projectAppParams$pul2 = projectAppParams.pulumi) === null || _projectAppParams$pul2 === void 0 ? void 0 : _projectAppParams$pul2.call(projectAppParams, ...args);
70
70
  }
71
71
  }));
72
- }
72
+ }
73
+
74
+ //# sourceMappingURL=createApiPulumiApp.js.map
@@ -143,4 +143,6 @@ function createCorePulumiApp(projectAppParams = {}) {
143
143
  return (_projectAppParams$pul3 = projectAppParams.pulumi) === null || _projectAppParams$pul3 === void 0 ? void 0 : _projectAppParams$pul3.call(projectAppParams, ...args);
144
144
  }
145
145
  }));
146
- }
146
+ }
147
+
148
+ //# sourceMappingURL=createCorePulumiApp.js.map
@@ -67,4 +67,6 @@ function createWebsitePulumiApp(projectAppParams = {}) {
67
67
  return (_projectAppParams$pul2 = projectAppParams.pulumi) === null || _projectAppParams$pul2 === void 0 ? void 0 : _projectAppParams$pul2.call(projectAppParams, ...args);
68
68
  }
69
69
  }));
70
- }
70
+ }
71
+
72
+ //# sourceMappingURL=createWebsitePulumiApp.js.map
@@ -46,4 +46,6 @@ Object.keys(_createWebsitePulumiApp).forEach(function (key) {
46
46
  return _createWebsitePulumiApp[key];
47
47
  }
48
48
  });
49
- });
49
+ });
50
+
51
+ //# sourceMappingURL=index.js.map
package/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { WebsiteTenantRouter } from "./components/tenantRouter/WebsiteTenantRouter";
2
2
  export * from "./apps";
3
3
  export * from "./utils";
4
+ export * from "./constants";
package/index.js CHANGED
@@ -36,4 +36,18 @@ Object.keys(_utils).forEach(function (key) {
36
36
  return _utils[key];
37
37
  }
38
38
  });
39
- });
39
+ });
40
+ var _constants = require("./constants");
41
+ Object.keys(_constants).forEach(function (key) {
42
+ if (key === "default" || key === "__esModule") return;
43
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
44
+ if (key in exports && exports[key] === _constants[key]) return;
45
+ Object.defineProperty(exports, key, {
46
+ enumerable: true,
47
+ get: function () {
48
+ return _constants[key];
49
+ }
50
+ });
51
+ });
52
+
53
+ //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_WebsiteTenantRouter","require","_apps","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_utils"],"sources":["index.ts"],"sourcesContent":["export { WebsiteTenantRouter } from \"./components/tenantRouter/WebsiteTenantRouter\";\nexport * from \"./apps\";\nexport * from \"./utils\";\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,KAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,KAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,KAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,MAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,MAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,MAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAT,GAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"names":["_WebsiteTenantRouter","require","_apps","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_utils","_constants"],"sources":["index.ts"],"sourcesContent":["export { WebsiteTenantRouter } from \"./components/tenantRouter/WebsiteTenantRouter\";\nexport * from \"./apps\";\nexport * from \"./utils\";\nexport * from \"./constants\";\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,KAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,KAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,KAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,MAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,MAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,MAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,UAAA,GAAAf,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAY,UAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,UAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,UAAA,CAAAV,GAAA;IAAA;EAAA;AAAA"}