@webiny/pulumi-aws 5.34.8 → 5.35.0-beta.1

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 (109) hide show
  1. package/README.md +0 -7
  2. package/apps/admin/createAdminPulumiApp.js +0 -5
  3. package/apps/admin/createAdminPulumiApp.js.map +1 -1
  4. package/apps/admin/index.js +0 -2
  5. package/apps/admin/index.js.map +1 -1
  6. package/apps/api/ApiApwScheduler.js +9 -21
  7. package/apps/api/ApiApwScheduler.js.map +1 -1
  8. package/apps/api/ApiCloudfront.js +0 -7
  9. package/apps/api/ApiCloudfront.js.map +1 -1
  10. package/apps/api/ApiFileManager.d.ts +5 -1
  11. package/apps/api/ApiFileManager.js +8 -17
  12. package/apps/api/ApiFileManager.js.map +1 -1
  13. package/apps/api/ApiGateway.js +0 -10
  14. package/apps/api/ApiGateway.js.map +1 -1
  15. package/apps/api/ApiGraphql.js +4 -25
  16. package/apps/api/ApiGraphql.js.map +1 -1
  17. package/apps/api/ApiMigration.d.ts +5 -0
  18. package/apps/api/ApiMigration.js +58 -0
  19. package/apps/api/ApiMigration.js.map +1 -0
  20. package/apps/api/ApiOutput.js +0 -7
  21. package/apps/api/ApiOutput.js.map +1 -1
  22. package/apps/api/ApiPageBuilder.js +11 -24
  23. package/apps/api/ApiPageBuilder.js.map +1 -1
  24. package/apps/api/createApiPulumiApp.d.ts +3 -12
  25. package/apps/api/createApiPulumiApp.js +28 -46
  26. package/apps/api/createApiPulumiApp.js.map +1 -1
  27. package/apps/api/index.d.ts +1 -1
  28. package/apps/api/index.js +4 -22
  29. package/apps/api/index.js.map +1 -1
  30. package/apps/awsUtils.d.ts +1 -1
  31. package/apps/awsUtils.js +0 -4
  32. package/apps/awsUtils.js.map +1 -1
  33. package/apps/common/CoreOutput.js +0 -7
  34. package/apps/common/CoreOutput.js.map +1 -1
  35. package/apps/common/VpcConfig.js +0 -7
  36. package/apps/common/VpcConfig.js.map +1 -1
  37. package/apps/common/index.js +0 -4
  38. package/apps/common/index.js.map +1 -1
  39. package/apps/core/CoreCognito.js +12 -9
  40. package/apps/core/CoreCognito.js.map +1 -1
  41. package/apps/core/CoreDynamo.js +0 -6
  42. package/apps/core/CoreDynamo.js.map +1 -1
  43. package/apps/core/CoreElasticSearch.js +9 -24
  44. package/apps/core/CoreElasticSearch.js.map +1 -1
  45. package/apps/core/CoreEventBus.js +0 -6
  46. package/apps/core/CoreEventBus.js.map +1 -1
  47. package/apps/core/CoreFileManager.js +2 -7
  48. package/apps/core/CoreFileManager.js.map +1 -1
  49. package/apps/core/CoreVpc.js +10 -11
  50. package/apps/core/CoreVpc.js.map +1 -1
  51. package/apps/core/createCorePulumiApp.js +13 -21
  52. package/apps/core/createCorePulumiApp.js.map +1 -1
  53. package/apps/core/index.js +0 -12
  54. package/apps/core/index.js.map +1 -1
  55. package/apps/createAppBucket.js +11 -10
  56. package/apps/createAppBucket.js.map +1 -1
  57. package/apps/customDomain.js +0 -1
  58. package/apps/customDomain.js.map +1 -1
  59. package/apps/index.js +0 -13
  60. package/apps/index.js.map +1 -1
  61. package/apps/lambdaUtils.js +2 -10
  62. package/apps/lambdaUtils.js.map +1 -1
  63. package/apps/react/createReactPulumiApp.js +6 -21
  64. package/apps/react/createReactPulumiApp.js.map +1 -1
  65. package/apps/react/index.js +0 -2
  66. package/apps/react/index.js.map +1 -1
  67. package/apps/tenantRouter.js +6 -14
  68. package/apps/tenantRouter.js.map +1 -1
  69. package/apps/website/WebsitePrerendering.js +6 -20
  70. package/apps/website/WebsitePrerendering.js.map +1 -1
  71. package/apps/website/createWebsitePulumiApp.js +8 -28
  72. package/apps/website/createWebsitePulumiApp.js.map +1 -1
  73. package/apps/website/deliveryViewerRequest.js +10 -9
  74. package/apps/website/deliveryViewerRequest.js.map +1 -1
  75. package/apps/website/index.js +0 -2
  76. package/apps/website/index.js.map +1 -1
  77. package/components/tenantRouter/WebsiteTenantRouter.js +2 -12
  78. package/components/tenantRouter/WebsiteTenantRouter.js.map +1 -1
  79. package/components/tenantRouter/functions/origin/request.js +19 -27
  80. package/components/tenantRouter/functions/origin/request.js.map +1 -1
  81. package/enterprise/createAdminPulumiApp.js +0 -1
  82. package/enterprise/createAdminPulumiApp.js.map +1 -1
  83. package/enterprise/createApiPulumiApp.d.ts +3 -7
  84. package/enterprise/createApiPulumiApp.js +4 -17
  85. package/enterprise/createApiPulumiApp.js.map +1 -1
  86. package/enterprise/createCorePulumiApp.js +21 -34
  87. package/enterprise/createCorePulumiApp.js.map +1 -1
  88. package/enterprise/createWebsitePulumiApp.js +2 -17
  89. package/enterprise/createWebsitePulumiApp.js.map +1 -1
  90. package/enterprise/index.js +0 -8
  91. package/enterprise/index.js.map +1 -1
  92. package/index.js +0 -5
  93. package/index.js.map +1 -1
  94. package/package.json +9 -9
  95. package/utils/addDomainsUrlsOutputs.js +6 -10
  96. package/utils/addDomainsUrlsOutputs.js.map +1 -1
  97. package/utils/crawlDirectory.js +0 -8
  98. package/utils/crawlDirectory.js.map +1 -1
  99. package/utils/getPresignedPost.js +0 -7
  100. package/utils/getPresignedPost.js.map +1 -1
  101. package/utils/index.js +0 -7
  102. package/utils/index.js.map +1 -1
  103. package/utils/lambdaEnvVariables.js +5 -15
  104. package/utils/lambdaEnvVariables.js.map +1 -1
  105. package/utils/storageMigrate.js.map +1 -1
  106. package/utils/tagResources.js +3 -10
  107. package/utils/tagResources.js.map +1 -1
  108. package/utils/uploadFolderToS3.js +2 -36
  109. package/utils/uploadFolderToS3.js.map +1 -1
package/README.md CHANGED
@@ -161,13 +161,6 @@ export declare const createApiPulumiApp: (projectAppParams?: CreateApiAppParams)
161
161
  graphql: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
162
162
  };
163
163
  };
164
- headlessCms: {
165
- role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam").Role>;
166
- policy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam").Policy>;
167
- functions: {
168
- graphql: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
169
- };
170
- };
171
164
  apiGateway: {
172
165
  api: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2").Api>;
173
166
  stage: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2").Stage>;
@@ -1,21 +1,16 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createAdminPulumiApp = void 0;
9
-
10
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
9
  var _ = require("./..");
13
-
14
10
  const createAdminPulumiApp = projectAppParams => {
15
11
  return (0, _.createReactPulumiApp)((0, _objectSpread2.default)({
16
12
  name: "admin",
17
13
  folder: "apps/admin"
18
14
  }, projectAppParams));
19
15
  };
20
-
21
16
  exports.createAdminPulumiApp = createAdminPulumiApp;
@@ -1 +1 @@
1
- {"version":3,"names":["createAdminPulumiApp","projectAppParams","createReactPulumiApp","name","folder"],"sources":["createAdminPulumiApp.ts"],"sourcesContent":["import { PulumiAppParam, PulumiAppParamCallback } from \"@webiny/pulumi\";\nimport { createReactPulumiApp, CustomDomainParams } from \"~/apps\";\n\nexport type AdminPulumiApp = ReturnType<typeof createReactPulumiApp>;\n\nexport interface CreateAdminPulumiAppParams {\n /** Custom domain configuration */\n domains?: PulumiAppParamCallback<CustomDomainParams>;\n\n /**\n * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)\n * or add additional ones into the mix.\n */\n pulumi?: (app: AdminPulumiApp) => void | Promise<void>;\n\n /**\n * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.\n */\n pulumiResourceNamePrefix?: PulumiAppParam<string>;\n\n /**\n * Treats provided environments as production environments, which\n * are deployed in production deployment mode.\n * https://www.webiny.com/docs/architecture/deployment-modes/production\n */\n productionEnvironments?: PulumiAppParam<string[]>;\n}\n\nexport const createAdminPulumiApp = (projectAppParams: CreateAdminPulumiAppParams) => {\n return createReactPulumiApp({\n name: \"admin\",\n folder: \"apps/admin\",\n ...projectAppParams\n });\n};\n"],"mappings":";;;;;;;;;;;AACA;;AA2BO,MAAMA,oBAAoB,GAAIC,gBAAD,IAAkD;EAClF,OAAO,IAAAC,sBAAA;IACHC,IAAI,EAAE,OADH;IAEHC,MAAM,EAAE;EAFL,GAGAH,gBAHA,EAAP;AAKH,CANM"}
1
+ {"version":3,"names":["createAdminPulumiApp","projectAppParams","createReactPulumiApp","name","folder"],"sources":["createAdminPulumiApp.ts"],"sourcesContent":["import { PulumiAppParam, PulumiAppParamCallback } from \"@webiny/pulumi\";\nimport { createReactPulumiApp, CustomDomainParams } from \"~/apps\";\n\nexport type AdminPulumiApp = ReturnType<typeof createReactPulumiApp>;\n\nexport interface CreateAdminPulumiAppParams {\n /** Custom domain configuration */\n domains?: PulumiAppParamCallback<CustomDomainParams>;\n\n /**\n * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)\n * or add additional ones into the mix.\n */\n pulumi?: (app: AdminPulumiApp) => void | Promise<void>;\n\n /**\n * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.\n */\n pulumiResourceNamePrefix?: PulumiAppParam<string>;\n\n /**\n * Treats provided environments as production environments, which\n * are deployed in production deployment mode.\n * https://www.webiny.com/docs/architecture/deployment-modes/production\n */\n productionEnvironments?: PulumiAppParam<string[]>;\n}\n\nexport const createAdminPulumiApp = (projectAppParams: CreateAdminPulumiAppParams) => {\n return createReactPulumiApp({\n name: \"admin\",\n folder: \"apps/admin\",\n ...projectAppParams\n });\n};\n"],"mappings":";;;;;;;;AACA;AA2BO,MAAMA,oBAAoB,GAAIC,gBAA4C,IAAK;EAClF,OAAO,IAAAC,sBAAoB;IACvBC,IAAI,EAAE,OAAO;IACbC,MAAM,EAAE;EAAY,GACjBH,gBAAgB,EACrB;AACN,CAAC;AAAC"}
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  var _createAdminPulumiApp = require("./createAdminPulumiApp");
8
-
9
7
  Object.keys(_createAdminPulumiApp).forEach(function (key) {
10
8
  if (key === "default" || key === "__esModule") return;
11
9
  if (key in exports && exports[key] === _createAdminPulumiApp[key]) return;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./createAdminPulumiApp\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./createAdminPulumiApp\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -1,28 +1,18 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.ApiApwScheduler = void 0;
11
-
12
9
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
-
14
10
  var _path = _interopRequireDefault(require("path"));
15
-
16
11
  var pulumi = _interopRequireWildcard(require("@pulumi/pulumi"));
17
-
18
12
  var aws = _interopRequireWildcard(require("@pulumi/aws"));
19
-
20
13
  var _pulumi2 = require("@webiny/pulumi");
21
-
22
14
  var _common = require("../common");
23
-
24
15
  var _lambdaUtils = require("../lambdaUtils");
25
-
26
16
  const LAMBDA_NAME_PREFIX = "apw-scheduler";
27
17
  const CREATE_RULE_LAMBDA = `${LAMBDA_NAME_PREFIX}-schedule-action-lambda`;
28
18
  const EXECUTE_ACTION_LAMBDA = `${LAMBDA_NAME_PREFIX}-execute-action-lambda`;
@@ -30,11 +20,11 @@ const EVENT_RULE_NAME = `${LAMBDA_NAME_PREFIX}-event-rule`;
30
20
  const EVENT_RULE_TARGET = `${LAMBDA_NAME_PREFIX}-event-rule-target`;
31
21
  const ApiApwScheduler = (0, _pulumi2.createAppModule)({
32
22
  name: "ApiApwScheduler",
33
-
34
23
  config(app, params) {
35
24
  const executeAction = createExecuteActionLambda(app, params);
36
- const scheduleAction = createScheduleActionLambda(app, executeAction.lambda.output, params); // Create event rule.
25
+ const scheduleAction = createScheduleActionLambda(app, executeAction.lambda.output, params);
37
26
 
27
+ // Create event rule.
38
28
  const eventRule = app.addResource(aws.cloudwatch.EventRule, {
39
29
  name: EVENT_RULE_NAME,
40
30
  config: {
@@ -42,8 +32,9 @@ const ApiApwScheduler = (0, _pulumi2.createAppModule)({
42
32
  scheduleExpression: "cron(* * * * ? 2000)",
43
33
  isEnabled: true
44
34
  }
45
- }); // Add required permission to the target lambda.
35
+ });
46
36
 
37
+ // Add required permission to the target lambda.
47
38
  app.addResource(aws.lambda.Permission, {
48
39
  name: "eventTargetPermission",
49
40
  config: {
@@ -52,8 +43,9 @@ const ApiApwScheduler = (0, _pulumi2.createAppModule)({
52
43
  principal: "events.amazonaws.com",
53
44
  statementId: "allow-rule-invoke-" + EVENT_RULE_NAME
54
45
  }
55
- }); // Add lambda as target to the event rule.
46
+ });
56
47
 
48
+ // Add lambda as target to the event rule.
57
49
  const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {
58
50
  name: EVENT_RULE_TARGET,
59
51
  config: {
@@ -68,10 +60,8 @@ const ApiApwScheduler = (0, _pulumi2.createAppModule)({
68
60
  eventTarget
69
61
  };
70
62
  }
71
-
72
63
  });
73
64
  exports.ApiApwScheduler = ApiApwScheduler;
74
-
75
65
  function createExecuteActionLambda(app, params) {
76
66
  const role = app.addResource(aws.iam.Role, {
77
67
  name: `${EXECUTE_ACTION_LAMBDA}-role`,
@@ -129,7 +119,6 @@ function createExecuteActionLambda(app, params) {
129
119
  lambda
130
120
  };
131
121
  }
132
-
133
122
  function createExecuteActionLambdaPolicy(app) {
134
123
  const core = app.getModule(_common.CoreOutput);
135
124
  return app.addResource(aws.iam.Policy, {
@@ -153,7 +142,6 @@ function createExecuteActionLambdaPolicy(app) {
153
142
  }
154
143
  });
155
144
  }
156
-
157
145
  function createScheduleActionLambda(app, executeLambda, params) {
158
146
  const role = app.addResource(aws.iam.Role, {
159
147
  name: `${CREATE_RULE_LAMBDA}-role`,
@@ -202,20 +190,20 @@ function createScheduleActionLambda(app, executeLambda, params) {
202
190
  }),
203
191
  environment: {
204
192
  variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), params.env), {}, {
205
- APW_SCHEDULER_EXECUTE_ACTION_HANDLER: executeLambda.arn // RULE_NAME: this.eventRule.name.apply(name => name),
193
+ APW_SCHEDULER_EXECUTE_ACTION_HANDLER: executeLambda.arn
194
+ // RULE_NAME: this.eventRule.name.apply(name => name),
206
195
  // RULE_TARGET_ID: this.eventTarget.targetId.apply(id => id)
207
-
208
196
  }))
209
197
  }
210
198
  }
211
199
  });
200
+
212
201
  return {
213
202
  role,
214
203
  policy,
215
204
  lambda
216
205
  };
217
206
  }
218
-
219
207
  function createScheduleActionLambdaPolicy(app) {
220
208
  const core = app.getModule(_common.CoreOutput);
221
209
  return app.addResource(aws.iam.Policy, {
@@ -1 +1 @@
1
- {"version":3,"names":["LAMBDA_NAME_PREFIX","CREATE_RULE_LAMBDA","EXECUTE_ACTION_LAMBDA","EVENT_RULE_NAME","EVENT_RULE_TARGET","ApiApwScheduler","createAppModule","name","config","app","params","executeAction","createExecuteActionLambda","scheduleAction","createScheduleActionLambda","lambda","output","eventRule","addResource","aws","cloudwatch","EventRule","description","scheduleExpression","isEnabled","Permission","action","function","arn","principal","statementId","eventTarget","EventTarget","rule","role","iam","Role","assumeRolePolicy","Version","Statement","Action","Principal","Service","Effect","meta","isLambdaFunctionRole","policy","createExecuteActionLambdaPolicy","RolePolicyAttachment","policyArn","ManagedPolicy","AWSLambdaBasicExecutionRole","Function","runtime","handler","timeout","memorySize","code","pulumi","asset","AssetArchive","FileArchive","path","join","paths","workspace","environment","variables","getCommonLambdaEnvVariables","apply","value","env","core","getModule","CoreOutput","Policy","Sid","Resource","interpolate","primaryDynamodbTableArn","executeLambda","createScheduleActionLambdaPolicy","APW_SCHEDULER_EXECUTE_ACTION_HANDLER"],"sources":["ApiApwScheduler.ts"],"sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\nimport { CoreOutput } from \"../common\";\nimport { getCommonLambdaEnvVariables } from \"../lambdaUtils\";\n\ninterface ScheduleActionParams {\n env: Record<string, any>;\n}\n\nconst LAMBDA_NAME_PREFIX = \"apw-scheduler\";\nconst CREATE_RULE_LAMBDA = `${LAMBDA_NAME_PREFIX}-schedule-action-lambda`;\nconst EXECUTE_ACTION_LAMBDA = `${LAMBDA_NAME_PREFIX}-execute-action-lambda`;\nconst EVENT_RULE_NAME = `${LAMBDA_NAME_PREFIX}-event-rule`;\nconst EVENT_RULE_TARGET = `${LAMBDA_NAME_PREFIX}-event-rule-target`;\n\nexport type ApiApwScheduler = PulumiAppModule<typeof ApiApwScheduler>;\n\nexport const ApiApwScheduler = createAppModule({\n name: \"ApiApwScheduler\",\n config(app: PulumiApp, params: ScheduleActionParams) {\n const executeAction = createExecuteActionLambda(app, params);\n const scheduleAction = createScheduleActionLambda(app, executeAction.lambda.output, params);\n\n // Create event rule.\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: EVENT_RULE_NAME,\n config: {\n description: `Enable us to schedule an action in publishing workflow at a particular datetime`,\n scheduleExpression: \"cron(* * * * ? 2000)\",\n isEnabled: true\n }\n });\n\n // Add required permission to the target lambda.\n app.addResource(aws.lambda.Permission, {\n name: \"eventTargetPermission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: scheduleAction.lambda.output.arn,\n principal: \"events.amazonaws.com\",\n statementId: \"allow-rule-invoke-\" + EVENT_RULE_NAME\n }\n });\n\n // Add lambda as target to the event rule.\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: EVENT_RULE_TARGET,\n config: {\n rule: eventRule.output.name,\n arn: scheduleAction.lambda.output.arn\n }\n });\n\n return {\n executeAction,\n scheduleAction,\n eventRule,\n eventTarget\n };\n }\n});\n\nfunction createExecuteActionLambda(app: PulumiApp, params: ScheduleActionParams) {\n const role = app.addResource(aws.iam.Role, {\n name: `${EXECUTE_ACTION_LAMBDA}-role`,\n config: {\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"lambda.amazonaws.com\"\n },\n Effect: \"Allow\"\n }\n ]\n }\n },\n meta: { isLambdaFunctionRole: true }\n });\n\n const policy = createExecuteActionLambdaPolicy(app);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: EXECUTE_ACTION_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle execute action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"apw/executeAction/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env\n }))\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createExecuteActionLambdaPolicy(app: PulumiApp) {\n const core = app.getModule(CoreOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerExecuteActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\"dynamodb:Query\", \"dynamodb:GetItem\", \"dynamodb:DeleteItem\"],\n Resource: [\n pulumi.interpolate`${core.primaryDynamodbTableArn}`,\n pulumi.interpolate`${core.primaryDynamodbTableArn}/*`\n ]\n }\n ]\n }\n }\n });\n}\n\nfunction createScheduleActionLambda(\n app: PulumiApp,\n executeLambda: pulumi.Output<aws.lambda.Function>,\n params: ScheduleActionParams\n) {\n const role = app.addResource(aws.iam.Role, {\n name: `${CREATE_RULE_LAMBDA}-role`,\n config: {\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"lambda.amazonaws.com\"\n },\n Effect: \"Allow\"\n }\n ]\n }\n },\n meta: { isLambdaFunctionRole: true }\n });\n\n const policy = createScheduleActionLambdaPolicy(app);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: CREATE_RULE_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle schedule action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"apw/scheduleAction/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n APW_SCHEDULER_EXECUTE_ACTION_HANDLER: executeLambda.arn\n // RULE_NAME: this.eventRule.name.apply(name => name),\n // RULE_TARGET_ID: this.eventTarget.targetId.apply(id => id)\n }))\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createScheduleActionLambdaPolicy(app: PulumiApp) {\n const core = app.getModule(CoreOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerScheduleActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:GetItem\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:DeleteItem\"\n ],\n Resource: [\n pulumi.interpolate`${core.primaryDynamodbTableArn}`,\n pulumi.interpolate`${core.primaryDynamodbTableArn}/*`\n ]\n },\n {\n Sid: \"PermissionEvents\",\n Effect: \"Allow\",\n Action: [\n \"events:DeleteRule\",\n \"events:PutTargets\",\n \"events:PutRule\",\n \"events:ListRules\",\n \"events:RemoveTargets\",\n \"events:ListTargetsByRule\"\n ],\n Resource: [\"*\"]\n }\n ]\n }\n }\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["LAMBDA_NAME_PREFIX","CREATE_RULE_LAMBDA","EXECUTE_ACTION_LAMBDA","EVENT_RULE_NAME","EVENT_RULE_TARGET","ApiApwScheduler","createAppModule","name","config","app","params","executeAction","createExecuteActionLambda","scheduleAction","createScheduleActionLambda","lambda","output","eventRule","addResource","aws","cloudwatch","EventRule","description","scheduleExpression","isEnabled","Permission","action","function","arn","principal","statementId","eventTarget","EventTarget","rule","role","iam","Role","assumeRolePolicy","Version","Statement","Action","Principal","Service","Effect","meta","isLambdaFunctionRole","policy","createExecuteActionLambdaPolicy","RolePolicyAttachment","policyArn","ManagedPolicy","AWSLambdaBasicExecutionRole","Function","runtime","handler","timeout","memorySize","code","pulumi","asset","AssetArchive","FileArchive","path","join","paths","workspace","environment","variables","getCommonLambdaEnvVariables","apply","value","env","core","getModule","CoreOutput","Policy","Sid","Resource","interpolate","primaryDynamodbTableArn","executeLambda","createScheduleActionLambdaPolicy","APW_SCHEDULER_EXECUTE_ACTION_HANDLER"],"sources":["ApiApwScheduler.ts"],"sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\nimport { CoreOutput } from \"../common\";\nimport { getCommonLambdaEnvVariables } from \"../lambdaUtils\";\n\ninterface ScheduleActionParams {\n env: Record<string, any>;\n}\n\nconst LAMBDA_NAME_PREFIX = \"apw-scheduler\";\nconst CREATE_RULE_LAMBDA = `${LAMBDA_NAME_PREFIX}-schedule-action-lambda`;\nconst EXECUTE_ACTION_LAMBDA = `${LAMBDA_NAME_PREFIX}-execute-action-lambda`;\nconst EVENT_RULE_NAME = `${LAMBDA_NAME_PREFIX}-event-rule`;\nconst EVENT_RULE_TARGET = `${LAMBDA_NAME_PREFIX}-event-rule-target`;\n\nexport type ApiApwScheduler = PulumiAppModule<typeof ApiApwScheduler>;\n\nexport const ApiApwScheduler = createAppModule({\n name: \"ApiApwScheduler\",\n config(app: PulumiApp, params: ScheduleActionParams) {\n const executeAction = createExecuteActionLambda(app, params);\n const scheduleAction = createScheduleActionLambda(app, executeAction.lambda.output, params);\n\n // Create event rule.\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: EVENT_RULE_NAME,\n config: {\n description: `Enable us to schedule an action in publishing workflow at a particular datetime`,\n scheduleExpression: \"cron(* * * * ? 2000)\",\n isEnabled: true\n }\n });\n\n // Add required permission to the target lambda.\n app.addResource(aws.lambda.Permission, {\n name: \"eventTargetPermission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: scheduleAction.lambda.output.arn,\n principal: \"events.amazonaws.com\",\n statementId: \"allow-rule-invoke-\" + EVENT_RULE_NAME\n }\n });\n\n // Add lambda as target to the event rule.\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: EVENT_RULE_TARGET,\n config: {\n rule: eventRule.output.name,\n arn: scheduleAction.lambda.output.arn\n }\n });\n\n return {\n executeAction,\n scheduleAction,\n eventRule,\n eventTarget\n };\n }\n});\n\nfunction createExecuteActionLambda(app: PulumiApp, params: ScheduleActionParams) {\n const role = app.addResource(aws.iam.Role, {\n name: `${EXECUTE_ACTION_LAMBDA}-role`,\n config: {\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"lambda.amazonaws.com\"\n },\n Effect: \"Allow\"\n }\n ]\n }\n },\n meta: { isLambdaFunctionRole: true }\n });\n\n const policy = createExecuteActionLambdaPolicy(app);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: EXECUTE_ACTION_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle execute action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"apw/executeAction/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env\n }))\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createExecuteActionLambdaPolicy(app: PulumiApp) {\n const core = app.getModule(CoreOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerExecuteActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\"dynamodb:Query\", \"dynamodb:GetItem\", \"dynamodb:DeleteItem\"],\n Resource: [\n pulumi.interpolate`${core.primaryDynamodbTableArn}`,\n pulumi.interpolate`${core.primaryDynamodbTableArn}/*`\n ]\n }\n ]\n }\n }\n });\n}\n\nfunction createScheduleActionLambda(\n app: PulumiApp,\n executeLambda: pulumi.Output<aws.lambda.Function>,\n params: ScheduleActionParams\n) {\n const role = app.addResource(aws.iam.Role, {\n name: `${CREATE_RULE_LAMBDA}-role`,\n config: {\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"lambda.amazonaws.com\"\n },\n Effect: \"Allow\"\n }\n ]\n }\n },\n meta: { isLambdaFunctionRole: true }\n });\n\n const policy = createScheduleActionLambdaPolicy(app);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: CREATE_RULE_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle schedule action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"apw/scheduleAction/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n ...params.env,\n APW_SCHEDULER_EXECUTE_ACTION_HANDLER: executeLambda.arn\n // RULE_NAME: this.eventRule.name.apply(name => name),\n // RULE_TARGET_ID: this.eventTarget.targetId.apply(id => id)\n }))\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createScheduleActionLambdaPolicy(app: PulumiApp) {\n const core = app.getModule(CoreOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerScheduleActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:GetItem\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:DeleteItem\"\n ],\n Resource: [\n pulumi.interpolate`${core.primaryDynamodbTableArn}`,\n pulumi.interpolate`${core.primaryDynamodbTableArn}/*`\n ]\n },\n {\n Sid: \"PermissionEvents\",\n Effect: \"Allow\",\n Action: [\n \"events:DeleteRule\",\n \"events:PutTargets\",\n \"events:PutRule\",\n \"events:ListRules\",\n \"events:RemoveTargets\",\n \"events:ListTargetsByRule\"\n ],\n Resource: [\"*\"]\n }\n ]\n }\n }\n });\n}\n"],"mappings":"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"}
@@ -1,21 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.ApiCloudfront = void 0;
9
-
10
8
  var aws = _interopRequireWildcard(require("@pulumi/aws"));
11
-
12
9
  var _pulumi = require("@webiny/pulumi");
13
-
14
10
  var _ApiGateway = require("./ApiGateway");
15
-
16
11
  const ApiCloudfront = (0, _pulumi.createAppModule)({
17
12
  name: "ApiCloudfront",
18
-
19
13
  config(app) {
20
14
  const gateway = app.getModule(_ApiGateway.ApiGateway);
21
15
  return app.addResource(aws.cloudfront.Distribution, {
@@ -96,6 +90,5 @@ const ApiCloudfront = (0, _pulumi.createAppModule)({
96
90
  }
97
91
  });
98
92
  }
99
-
100
93
  });
101
94
  exports.ApiCloudfront = ApiCloudfront;
@@ -1 +1 @@
1
- {"version":3,"names":["ApiCloudfront","createAppModule","name","config","app","gateway","getModule","ApiGateway","addResource","aws","cloudfront","Distribution","waitForDeployment","isIpv6Enabled","enabled","defaultCacheBehavior","compress","allowedMethods","cachedMethods","forwardedValues","cookies","forward","headers","queryString","minTtl","defaultTtl","maxTtl","targetOriginId","api","output","viewerProtocolPolicy","orderedCacheBehaviors","pathPattern","origins","domainName","stage","invokeUrl","apply","url","URL","hostname","originPath","pathname","originId","customOriginConfig","httpPort","httpsPort","originProtocolPolicy","originSslProtocols","restrictions","geoRestriction","restrictionType","viewerCertificate","cloudfrontDefaultCertificate"],"sources":["ApiCloudfront.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\n\nimport { ApiGateway } from \"./ApiGateway\";\n\nexport type ApiCloudfront = PulumiAppModule<typeof ApiCloudfront>;\n\nexport const ApiCloudfront = createAppModule({\n name: \"ApiCloudfront\",\n config(app: PulumiApp) {\n const gateway = app.getModule(ApiGateway);\n\n return app.addResource(aws.cloudfront.Distribution, {\n name: \"api-cloudfront\",\n config: {\n waitForDeployment: false,\n isIpv6Enabled: true,\n enabled: true,\n defaultCacheBehavior: {\n compress: true,\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\", \"PUT\", \"POST\", \"PATCH\", \"DELETE\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: {\n forward: \"none\"\n },\n headers: [\"Accept\", \"Accept-Language\"],\n queryString: true\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 0,\n maxTtl: 86400,\n targetOriginId: gateway.api.output.name,\n viewerProtocolPolicy: \"allow-all\"\n },\n orderedCacheBehaviors: [\n {\n compress: true,\n allowedMethods: [\n \"GET\",\n \"HEAD\",\n \"OPTIONS\",\n \"PUT\",\n \"POST\",\n \"PATCH\",\n \"DELETE\"\n ],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: {\n forward: \"none\"\n },\n headers: [\"Accept\", \"Accept-Language\"],\n queryString: true\n },\n pathPattern: \"/cms*\",\n viewerProtocolPolicy: \"allow-all\",\n targetOriginId: gateway.api.output.name\n },\n {\n allowedMethods: [\n \"GET\",\n \"HEAD\",\n \"OPTIONS\",\n \"PUT\",\n \"POST\",\n \"PATCH\",\n \"DELETE\"\n ],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: {\n forward: \"none\"\n },\n headers: [\"Accept\", \"Accept-Language\"],\n queryString: true\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 0,\n maxTtl: 2592000,\n pathPattern: \"/files/*\",\n viewerProtocolPolicy: \"allow-all\",\n targetOriginId: gateway.api.output.name\n }\n ],\n origins: [\n {\n domainName: gateway.stage.output.invokeUrl.apply(\n (url: string) => new URL(url).hostname\n ),\n originPath: gateway.stage.output.invokeUrl.apply(\n (url: string) => new URL(url).pathname\n ),\n originId: gateway.api.output.name,\n customOriginConfig: {\n httpPort: 80,\n httpsPort: 443,\n originProtocolPolicy: \"https-only\",\n originSslProtocols: [\"TLSv1.2\"]\n }\n }\n ],\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n }\n });\n }\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["ApiCloudfront","createAppModule","name","config","app","gateway","getModule","ApiGateway","addResource","aws","cloudfront","Distribution","waitForDeployment","isIpv6Enabled","enabled","defaultCacheBehavior","compress","allowedMethods","cachedMethods","forwardedValues","cookies","forward","headers","queryString","minTtl","defaultTtl","maxTtl","targetOriginId","api","output","viewerProtocolPolicy","orderedCacheBehaviors","pathPattern","origins","domainName","stage","invokeUrl","apply","url","URL","hostname","originPath","pathname","originId","customOriginConfig","httpPort","httpsPort","originProtocolPolicy","originSslProtocols","restrictions","geoRestriction","restrictionType","viewerCertificate","cloudfrontDefaultCertificate"],"sources":["ApiCloudfront.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\n\nimport { ApiGateway } from \"./ApiGateway\";\n\nexport type ApiCloudfront = PulumiAppModule<typeof ApiCloudfront>;\n\nexport const ApiCloudfront = createAppModule({\n name: \"ApiCloudfront\",\n config(app: PulumiApp) {\n const gateway = app.getModule(ApiGateway);\n\n return app.addResource(aws.cloudfront.Distribution, {\n name: \"api-cloudfront\",\n config: {\n waitForDeployment: false,\n isIpv6Enabled: true,\n enabled: true,\n defaultCacheBehavior: {\n compress: true,\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\", \"PUT\", \"POST\", \"PATCH\", \"DELETE\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: {\n forward: \"none\"\n },\n headers: [\"Accept\", \"Accept-Language\"],\n queryString: true\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 0,\n maxTtl: 86400,\n targetOriginId: gateway.api.output.name,\n viewerProtocolPolicy: \"allow-all\"\n },\n orderedCacheBehaviors: [\n {\n compress: true,\n allowedMethods: [\n \"GET\",\n \"HEAD\",\n \"OPTIONS\",\n \"PUT\",\n \"POST\",\n \"PATCH\",\n \"DELETE\"\n ],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: {\n forward: \"none\"\n },\n headers: [\"Accept\", \"Accept-Language\"],\n queryString: true\n },\n pathPattern: \"/cms*\",\n viewerProtocolPolicy: \"allow-all\",\n targetOriginId: gateway.api.output.name\n },\n {\n allowedMethods: [\n \"GET\",\n \"HEAD\",\n \"OPTIONS\",\n \"PUT\",\n \"POST\",\n \"PATCH\",\n \"DELETE\"\n ],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: {\n forward: \"none\"\n },\n headers: [\"Accept\", \"Accept-Language\"],\n queryString: true\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 0,\n maxTtl: 2592000,\n pathPattern: \"/files/*\",\n viewerProtocolPolicy: \"allow-all\",\n targetOriginId: gateway.api.output.name\n }\n ],\n origins: [\n {\n domainName: gateway.stage.output.invokeUrl.apply(\n (url: string) => new URL(url).hostname\n ),\n originPath: gateway.stage.output.invokeUrl.apply(\n (url: string) => new URL(url).pathname\n ),\n originId: gateway.api.output.name,\n customOriginConfig: {\n httpPort: 80,\n httpsPort: 443,\n originProtocolPolicy: \"https-only\",\n originSslProtocols: [\"TLSv1.2\"]\n }\n }\n ],\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n }\n });\n }\n});\n"],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import { PulumiAppModule } from "@webiny/pulumi";
2
2
  export declare type ApiFileManager = PulumiAppModule<typeof ApiFileManager>;
3
+ interface ApiFileManagerConfig {
4
+ env: Record<string, any>;
5
+ }
3
6
  export declare const ApiFileManager: import("@webiny/pulumi").PulumiAppModuleDefinition<{
4
7
  functions: {
5
8
  transform: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
@@ -7,4 +10,5 @@ export declare const ApiFileManager: import("@webiny/pulumi").PulumiAppModuleDef
7
10
  download: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
8
11
  };
9
12
  bucketNotification: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/s3/bucketNotification").BucketNotification>;
10
- }, void>;
13
+ }, ApiFileManagerConfig>;
14
+ export {};
@@ -1,37 +1,25 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.ApiFileManager = void 0;
11
-
12
9
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
-
14
10
  var _path = _interopRequireDefault(require("path"));
15
-
16
11
  var pulumi = _interopRequireWildcard(require("@pulumi/pulumi"));
17
-
18
12
  var aws = _interopRequireWildcard(require("@pulumi/aws"));
19
-
20
13
  var _awsLayers = require("@webiny/aws-layers");
21
-
22
14
  var _pulumi2 = require("@webiny/pulumi");
23
-
24
15
  var _lambdaUtils = require("../lambdaUtils");
25
-
26
16
  var _common = require("../common");
27
-
28
17
  var _awsUtils = require("../awsUtils");
29
-
30
18
  // @ts-ignore
19
+
31
20
  const ApiFileManager = (0, _pulumi2.createAppModule)({
32
21
  name: "ApiFileManager",
33
-
34
- config(app) {
22
+ config(app, config) {
35
23
  const core = app.getModule(_common.CoreOutput);
36
24
  const accountId = (0, _awsUtils.getAwsAccountId)(app);
37
25
  const policy = createFileManagerLambdaPolicy(app);
@@ -96,7 +84,7 @@ const ApiFileManager = (0, _pulumi2.createAppModule)({
96
84
  variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), {}, {
97
85
  S3_BUCKET: core.fileManagerBucketId,
98
86
  IMAGE_TRANSFORMER_FUNCTION: transform.output.arn
99
- }))
87
+ }, config.env))
100
88
  },
101
89
  vpcConfig: app.getModule(_common.VpcConfig).functionVpcConfig
102
90
  }
@@ -137,10 +125,8 @@ const ApiFileManager = (0, _pulumi2.createAppModule)({
137
125
  bucketNotification
138
126
  };
139
127
  }
140
-
141
128
  });
142
129
  exports.ApiFileManager = ApiFileManager;
143
-
144
130
  function createFileManagerLambdaPolicy(app) {
145
131
  const core = app.getModule(_common.CoreOutput);
146
132
  return app.addResource(aws.iam.Policy, {
@@ -159,6 +145,11 @@ function createFileManagerLambdaPolicy(app) {
159
145
  Effect: "Allow",
160
146
  Action: ["s3:DeleteObject", "s3:PutObject", "s3:GetObject", "s3:ListBucket"],
161
147
  Resource: [pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}`, pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}/*`]
148
+ }, {
149
+ Sid: "PermissionForDynamoDB",
150
+ Effect: "Allow",
151
+ Action: ["dynamodb:GetItem", "dynamodb:Query"],
152
+ Resource: [pulumi.interpolate`${core.primaryDynamodbTableArn}`, pulumi.interpolate`${core.primaryDynamodbTableArn}/*`]
162
153
  }]
163
154
  }
164
155
  }
@@ -1 +1 @@
1
- {"version":3,"names":["ApiFileManager","createAppModule","name","config","app","core","getModule","CoreOutput","accountId","getAwsAccountId","policy","createFileManagerLambdaPolicy","role","createLambdaRole","output","transform","addResource","aws","lambda","Function","handler","timeout","runtime","memorySize","arn","description","code","pulumi","asset","AssetArchive","FileArchive","path","join","paths","workspace","layers","getLayerArn","environment","variables","getCommonLambdaEnvVariables","apply","value","S3_BUCKET","fileManagerBucketId","vpcConfig","VpcConfig","functionVpcConfig","manage","download","IMAGE_TRANSFORMER_FUNCTION","manageS3LambdaPermission","Permission","action","function","principal","sourceArn","interpolate","sourceAccount","opts","dependsOn","bucketNotification","s3","BucketNotification","bucket","lambdaFunctions","lambdaFunctionArn","events","functions","iam","Policy","Version","Statement","Sid","Effect","Action","Resource"],"sources":["ApiFileManager.ts"],"sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// @ts-ignore\nimport { getLayerArn } from \"@webiny/aws-layers\";\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\n\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { CoreOutput, VpcConfig } from \"../common\";\nimport { getAwsAccountId } from \"~/apps/awsUtils\";\n\nexport type ApiFileManager = PulumiAppModule<typeof ApiFileManager>;\n\nexport const ApiFileManager = createAppModule({\n name: \"ApiFileManager\",\n config(app: PulumiApp) {\n const core = app.getModule(CoreOutput);\n const accountId = getAwsAccountId(app);\n\n const policy = createFileManagerLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"fm-lambda-role\",\n policy: policy.output\n });\n\n const transform = app.addResource(aws.lambda.Function, {\n name: \"fm-image-transformer\",\n config: {\n handler: \"handler.handler\",\n timeout: 30,\n runtime: \"nodejs14.x\",\n memorySize: 1600,\n role: role.output.arn,\n description: \"Performs image optimization, resizing, etc.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"fileManager/transform/build\")\n )\n }),\n layers: [getLayerArn(\"sharp\")],\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n S3_BUCKET: core.fileManagerBucketId\n }))\n },\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const manage = app.addResource(aws.lambda.Function, {\n name: \"fm-manage\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n description: \"Triggered when a file is deleted.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"fileManager/manage/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n S3_BUCKET: core.fileManagerBucketId\n }))\n },\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const download = app.addResource(aws.lambda.Function, {\n name: \"fm-download\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n description: \"Serves previously uploaded files.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"fileManager/download/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n S3_BUCKET: core.fileManagerBucketId,\n IMAGE_TRANSFORMER_FUNCTION: transform.output.arn\n }))\n },\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const manageS3LambdaPermission = app.addResource(aws.lambda.Permission, {\n name: \"fm-manage-s3-lambda-permission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: manage.output.arn,\n principal: \"s3.amazonaws.com\",\n sourceArn: pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}`,\n sourceAccount: accountId\n },\n opts: {\n dependsOn: [manage.output]\n }\n });\n\n const bucketNotification = app.addResource(aws.s3.BucketNotification, {\n name: \"bucketNotification\",\n config: {\n bucket: core.fileManagerBucketId,\n lambdaFunctions: [\n {\n lambdaFunctionArn: manage.output.arn,\n events: [\"s3:ObjectRemoved:*\"]\n }\n ]\n },\n opts: {\n dependsOn: [manage.output, manageS3LambdaPermission.output]\n }\n });\n\n const functions = {\n transform,\n manage,\n download\n };\n\n return {\n functions,\n bucketNotification\n };\n }\n});\n\nfunction createFileManagerLambdaPolicy(app: PulumiApp) {\n const core = app.getModule(CoreOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"FileManagerLambdaPolicy\",\n config: {\n description: \"This policy enables access to Lambda and S3\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForLambda\",\n Effect: \"Allow\",\n Action: \"lambda:InvokeFunction\",\n Resource: \"*\"\n },\n {\n Sid: \"PermissionForS3\",\n Effect: \"Allow\",\n Action: [\n \"s3:DeleteObject\",\n \"s3:PutObject\",\n \"s3:GetObject\",\n \"s3:ListBucket\"\n ],\n Resource: [\n pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}`,\n pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}/*`\n ]\n }\n ]\n }\n }\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["ApiFileManager","createAppModule","name","config","app","core","getModule","CoreOutput","accountId","getAwsAccountId","policy","createFileManagerLambdaPolicy","role","createLambdaRole","output","transform","addResource","aws","lambda","Function","handler","timeout","runtime","memorySize","arn","description","code","pulumi","asset","AssetArchive","FileArchive","path","join","paths","workspace","layers","getLayerArn","environment","variables","getCommonLambdaEnvVariables","apply","value","S3_BUCKET","fileManagerBucketId","vpcConfig","VpcConfig","functionVpcConfig","manage","download","IMAGE_TRANSFORMER_FUNCTION","env","manageS3LambdaPermission","Permission","action","function","principal","sourceArn","interpolate","sourceAccount","opts","dependsOn","bucketNotification","s3","BucketNotification","bucket","lambdaFunctions","lambdaFunctionArn","events","functions","iam","Policy","Version","Statement","Sid","Effect","Action","Resource","primaryDynamodbTableArn"],"sources":["ApiFileManager.ts"],"sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\n// @ts-ignore\nimport { getLayerArn } from \"@webiny/aws-layers\";\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\n\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { CoreOutput, VpcConfig } from \"../common\";\nimport { getAwsAccountId } from \"~/apps/awsUtils\";\n\nexport type ApiFileManager = PulumiAppModule<typeof ApiFileManager>;\n\ninterface ApiFileManagerConfig {\n env: Record<string, any>;\n}\n\nexport const ApiFileManager = createAppModule({\n name: \"ApiFileManager\",\n config(app: PulumiApp, config: ApiFileManagerConfig) {\n const core = app.getModule(CoreOutput);\n const accountId = getAwsAccountId(app);\n\n const policy = createFileManagerLambdaPolicy(app);\n const role = createLambdaRole(app, {\n name: \"fm-lambda-role\",\n policy: policy.output\n });\n\n const transform = app.addResource(aws.lambda.Function, {\n name: \"fm-image-transformer\",\n config: {\n handler: \"handler.handler\",\n timeout: 30,\n runtime: \"nodejs14.x\",\n memorySize: 1600,\n role: role.output.arn,\n description: \"Performs image optimization, resizing, etc.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"fileManager/transform/build\")\n )\n }),\n layers: [getLayerArn(\"sharp\")],\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n S3_BUCKET: core.fileManagerBucketId\n }))\n },\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const manage = app.addResource(aws.lambda.Function, {\n name: \"fm-manage\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n description: \"Triggered when a file is deleted.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"fileManager/manage/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n S3_BUCKET: core.fileManagerBucketId\n }))\n },\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const download = app.addResource(aws.lambda.Function, {\n name: \"fm-download\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n description: \"Serves previously uploaded files.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"fileManager/download/build\")\n )\n }),\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n S3_BUCKET: core.fileManagerBucketId,\n IMAGE_TRANSFORMER_FUNCTION: transform.output.arn,\n ...config.env\n }))\n },\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const manageS3LambdaPermission = app.addResource(aws.lambda.Permission, {\n name: \"fm-manage-s3-lambda-permission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: manage.output.arn,\n principal: \"s3.amazonaws.com\",\n sourceArn: pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}`,\n sourceAccount: accountId\n },\n opts: {\n dependsOn: [manage.output]\n }\n });\n\n const bucketNotification = app.addResource(aws.s3.BucketNotification, {\n name: \"bucketNotification\",\n config: {\n bucket: core.fileManagerBucketId,\n lambdaFunctions: [\n {\n lambdaFunctionArn: manage.output.arn,\n events: [\"s3:ObjectRemoved:*\"]\n }\n ]\n },\n opts: {\n dependsOn: [manage.output, manageS3LambdaPermission.output]\n }\n });\n\n const functions = {\n transform,\n manage,\n download\n };\n\n return {\n functions,\n bucketNotification\n };\n }\n});\n\nfunction createFileManagerLambdaPolicy(app: PulumiApp) {\n const core = app.getModule(CoreOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"FileManagerLambdaPolicy\",\n config: {\n description: \"This policy enables access to Lambda and S3\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForLambda\",\n Effect: \"Allow\",\n Action: \"lambda:InvokeFunction\",\n Resource: \"*\"\n },\n {\n Sid: \"PermissionForS3\",\n Effect: \"Allow\",\n Action: [\n \"s3:DeleteObject\",\n \"s3:PutObject\",\n \"s3:GetObject\",\n \"s3:ListBucket\"\n ],\n Resource: [\n pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}`,\n pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}/*`\n ]\n },\n {\n Sid: \"PermissionForDynamoDB\",\n Effect: \"Allow\",\n Action: [\"dynamodb:GetItem\", \"dynamodb:Query\"],\n Resource: [\n pulumi.interpolate`${core.primaryDynamodbTableArn}`,\n pulumi.interpolate`${core.primaryDynamodbTableArn}/*`\n ]\n }\n ]\n }\n }\n });\n}\n"],"mappings":"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"}
@@ -1,19 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.ApiGateway = void 0;
9
-
10
8
  var aws = _interopRequireWildcard(require("@pulumi/aws"));
11
-
12
9
  var _pulumi = require("@webiny/pulumi");
13
-
14
10
  const ApiGateway = (0, _pulumi.createAppModule)({
15
11
  name: "ApiGateway",
16
-
17
12
  config(app, routesConfig) {
18
13
  const api = app.addResource(aws.apigatewayv2.Api, {
19
14
  name: "api-gateway",
@@ -30,27 +25,22 @@ const ApiGateway = (0, _pulumi.createAppModule)({
30
25
  }
31
26
  });
32
27
  const routes = {};
33
-
34
28
  for (const name of Object.keys(routesConfig)) {
35
29
  addRoute(name, routesConfig[name]);
36
30
  }
37
-
38
31
  return {
39
32
  api,
40
33
  stage,
41
34
  routes,
42
35
  addRoute
43
36
  };
44
-
45
37
  function addRoute(name, params) {
46
38
  const route = createRoute(app, api.output, name, params);
47
39
  routes[name] = route;
48
40
  }
49
41
  }
50
-
51
42
  });
52
43
  exports.ApiGateway = ApiGateway;
53
-
54
44
  function createRoute(app, api, name, params) {
55
45
  const integration = app.addResource(aws.apigatewayv2.Integration, {
56
46
  name: name,
@@ -1 +1 @@
1
- {"version":3,"names":["ApiGateway","createAppModule","name","config","app","routesConfig","api","addResource","aws","apigatewayv2","Api","protocolType","description","stage","Stage","apiId","output","id","autoDeploy","routes","Object","keys","addRoute","params","route","createRoute","integration","Integration","integrationType","integrationMethod","method","integrationUri","function","passthroughBehavior","Route","routeKey","path","target","apply","value","permission","lambda","Permission","action","principal","sourceArn","executionArn","arn"],"sources":["ApiGateway.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\n\nexport interface ApiRouteParams {\n path: pulumi.Input<string>;\n method: pulumi.Input<string>;\n function: pulumi.Input<string>;\n}\n\nexport type ApiGateway = PulumiAppModule<typeof ApiGateway>;\n\nexport const ApiGateway = createAppModule({\n name: \"ApiGateway\",\n config(app: PulumiApp, routesConfig: Record<string, ApiRouteParams>) {\n const api = app.addResource(aws.apigatewayv2.Api, {\n name: \"api-gateway\",\n config: {\n protocolType: \"HTTP\",\n description: \"Main API gateway\"\n }\n });\n\n const stage = app.addResource(aws.apigatewayv2.Stage, {\n name: \"default\",\n config: {\n apiId: api.output.id,\n autoDeploy: true\n }\n });\n\n const routes: Record<string, ReturnType<typeof createRoute>> = {};\n\n for (const name of Object.keys(routesConfig)) {\n addRoute(name, routesConfig[name]);\n }\n\n return {\n api,\n stage,\n routes,\n addRoute\n };\n\n function addRoute(name: string, params: ApiRouteParams) {\n const route = createRoute(app, api.output, name, params);\n routes[name] = route;\n }\n }\n});\n\nfunction createRoute(\n app: PulumiApp,\n api: pulumi.Output<aws.apigatewayv2.Api>,\n name: string,\n params: ApiRouteParams\n) {\n const integration = app.addResource(aws.apigatewayv2.Integration, {\n name: name,\n config: {\n description: \"GraphQL API Integration\",\n apiId: api.id,\n integrationType: \"AWS_PROXY\",\n integrationMethod: params.method,\n integrationUri: params.function,\n passthroughBehavior: \"WHEN_NO_MATCH\"\n }\n });\n\n const route = app.addResource(aws.apigatewayv2.Route, {\n name: name,\n config: {\n apiId: api.id,\n routeKey: `${params.method} ${params.path}`,\n target: integration.output.id.apply(value => `integrations/${value}`)\n }\n });\n\n const permission = app.addResource(aws.lambda.Permission, {\n name: `allow-${name}`,\n config: {\n action: \"lambda:InvokeFunction\",\n function: params.function,\n principal: \"apigateway.amazonaws.com\",\n sourceArn: api.executionArn.apply(arn => `${arn}/*/*${params.path}`)\n }\n });\n\n return {\n integration,\n route,\n permission\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["ApiGateway","createAppModule","name","config","app","routesConfig","api","addResource","aws","apigatewayv2","Api","protocolType","description","stage","Stage","apiId","output","id","autoDeploy","routes","Object","keys","addRoute","params","route","createRoute","integration","Integration","integrationType","integrationMethod","method","integrationUri","function","passthroughBehavior","Route","routeKey","path","target","apply","value","permission","lambda","Permission","action","principal","sourceArn","executionArn","arn"],"sources":["ApiGateway.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport { createAppModule, PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\n\nexport interface ApiRouteParams {\n path: pulumi.Input<string>;\n method: pulumi.Input<string>;\n function: pulumi.Input<string>;\n}\n\nexport type ApiGateway = PulumiAppModule<typeof ApiGateway>;\n\nexport const ApiGateway = createAppModule({\n name: \"ApiGateway\",\n config(app: PulumiApp, routesConfig: Record<string, ApiRouteParams>) {\n const api = app.addResource(aws.apigatewayv2.Api, {\n name: \"api-gateway\",\n config: {\n protocolType: \"HTTP\",\n description: \"Main API gateway\"\n }\n });\n\n const stage = app.addResource(aws.apigatewayv2.Stage, {\n name: \"default\",\n config: {\n apiId: api.output.id,\n autoDeploy: true\n }\n });\n\n const routes: Record<string, ReturnType<typeof createRoute>> = {};\n\n for (const name of Object.keys(routesConfig)) {\n addRoute(name, routesConfig[name]);\n }\n\n return {\n api,\n stage,\n routes,\n addRoute\n };\n\n function addRoute(name: string, params: ApiRouteParams) {\n const route = createRoute(app, api.output, name, params);\n routes[name] = route;\n }\n }\n});\n\nfunction createRoute(\n app: PulumiApp,\n api: pulumi.Output<aws.apigatewayv2.Api>,\n name: string,\n params: ApiRouteParams\n) {\n const integration = app.addResource(aws.apigatewayv2.Integration, {\n name: name,\n config: {\n description: \"GraphQL API Integration\",\n apiId: api.id,\n integrationType: \"AWS_PROXY\",\n integrationMethod: params.method,\n integrationUri: params.function,\n passthroughBehavior: \"WHEN_NO_MATCH\"\n }\n });\n\n const route = app.addResource(aws.apigatewayv2.Route, {\n name: name,\n config: {\n apiId: api.id,\n routeKey: `${params.method} ${params.path}`,\n target: integration.output.id.apply(value => `integrations/${value}`)\n }\n });\n\n const permission = app.addResource(aws.lambda.Permission, {\n name: `allow-${name}`,\n config: {\n action: \"lambda:InvokeFunction\",\n function: params.function,\n principal: \"apigateway.amazonaws.com\",\n sourceArn: api.executionArn.apply(arn => `${arn}/*/*${params.path}`)\n }\n });\n\n return {\n integration,\n route,\n permission\n };\n}\n"],"mappings":"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"}