@webiny/pulumi-aws 0.0.0-ee-vpcs.549378cf03

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 (153) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +328 -0
  3. package/apps/admin/createAdminPulumiApp.d.ts +24 -0
  4. package/apps/admin/createAdminPulumiApp.js +21 -0
  5. package/apps/admin/createAdminPulumiApp.js.map +1 -0
  6. package/apps/admin/index.d.ts +1 -0
  7. package/apps/admin/index.js +18 -0
  8. package/apps/admin/index.js.map +1 -0
  9. package/apps/api/ApiApwScheduler.d.ts +20 -0
  10. package/apps/api/ApiApwScheduler.js +246 -0
  11. package/apps/api/ApiApwScheduler.js.map +1 -0
  12. package/apps/api/ApiCloudfront.d.ts +3 -0
  13. package/apps/api/ApiCloudfront.js +101 -0
  14. package/apps/api/ApiCloudfront.js.map +1 -0
  15. package/apps/api/ApiFileManager.d.ts +10 -0
  16. package/apps/api/ApiFileManager.js +166 -0
  17. package/apps/api/ApiFileManager.js.map +1 -0
  18. package/apps/api/ApiGateway.d.ts +18 -0
  19. package/apps/api/ApiGateway.js +88 -0
  20. package/apps/api/ApiGateway.js.map +1 -0
  21. package/apps/api/ApiGraphql.d.ts +26 -0
  22. package/apps/api/ApiGraphql.js +167 -0
  23. package/apps/api/ApiGraphql.js.map +1 -0
  24. package/apps/api/ApiHeadlessCMS.d.ts +13 -0
  25. package/apps/api/ApiHeadlessCMS.js +94 -0
  26. package/apps/api/ApiHeadlessCMS.js.map +1 -0
  27. package/apps/api/ApiOutput.d.ts +15 -0
  28. package/apps/api/ApiOutput.js +43 -0
  29. package/apps/api/ApiOutput.js.map +1 -0
  30. package/apps/api/ApiPageBuilder.d.ts +24 -0
  31. package/apps/api/ApiPageBuilder.js +248 -0
  32. package/apps/api/ApiPageBuilder.js.map +1 -0
  33. package/apps/api/createApiPulumiApp.d.ts +71 -0
  34. package/apps/api/createApiPulumiApp.js +188 -0
  35. package/apps/api/createApiPulumiApp.js.map +1 -0
  36. package/apps/api/index.d.ts +9 -0
  37. package/apps/api/index.js +122 -0
  38. package/apps/api/index.js.map +1 -0
  39. package/apps/awsUtils.d.ts +3 -0
  40. package/apps/awsUtils.js +23 -0
  41. package/apps/awsUtils.js.map +1 -0
  42. package/apps/common/CoreOutput.d.ts +21 -0
  43. package/apps/common/CoreOutput.js +50 -0
  44. package/apps/common/CoreOutput.js.map +1 -0
  45. package/apps/common/VpcConfig.d.ts +8 -0
  46. package/apps/common/VpcConfig.js +37 -0
  47. package/apps/common/VpcConfig.js.map +1 -0
  48. package/apps/common/index.d.ts +2 -0
  49. package/apps/common/index.js +31 -0
  50. package/apps/common/index.js.map +1 -0
  51. package/apps/core/CoreCognito.d.ts +10 -0
  52. package/apps/core/CoreCognito.js +100 -0
  53. package/apps/core/CoreCognito.js.map +1 -0
  54. package/apps/core/CoreDynamo.d.ts +5 -0
  55. package/apps/core/CoreDynamo.js +51 -0
  56. package/apps/core/CoreDynamo.js.map +1 -0
  57. package/apps/core/CoreElasticSearch.d.ts +16 -0
  58. package/apps/core/CoreElasticSearch.js +286 -0
  59. package/apps/core/CoreElasticSearch.js.map +1 -0
  60. package/apps/core/CoreEventBus.d.ts +1 -0
  61. package/apps/core/CoreEventBus.js +25 -0
  62. package/apps/core/CoreEventBus.js.map +1 -0
  63. package/apps/core/CoreFileManager.d.ts +8 -0
  64. package/apps/core/CoreFileManager.js +55 -0
  65. package/apps/core/CoreFileManager.js.map +1 -0
  66. package/apps/core/CoreVpc.d.ts +13 -0
  67. package/apps/core/CoreVpc.js +148 -0
  68. package/apps/core/CoreVpc.js.map +1 -0
  69. package/apps/core/createCorePulumiApp.d.ts +64 -0
  70. package/apps/core/createCorePulumiApp.js +104 -0
  71. package/apps/core/createCorePulumiApp.js.map +1 -0
  72. package/apps/core/index.d.ts +6 -0
  73. package/apps/core/index.js +83 -0
  74. package/apps/core/index.js.map +1 -0
  75. package/apps/createAppBucket.d.ts +13 -0
  76. package/apps/createAppBucket.js +106 -0
  77. package/apps/createAppBucket.js.map +1 -0
  78. package/apps/customDomain.d.ts +9 -0
  79. package/apps/customDomain.js +14 -0
  80. package/apps/customDomain.js.map +1 -0
  81. package/apps/index.d.ts +7 -0
  82. package/apps/index.js +100 -0
  83. package/apps/index.js.map +1 -0
  84. package/apps/lambdaUtils.d.ts +10 -0
  85. package/apps/lambdaUtils.js +82 -0
  86. package/apps/lambdaUtils.js.map +1 -0
  87. package/apps/react/createReactPulumiApp.d.ts +33 -0
  88. package/apps/react/createReactPulumiApp.js +144 -0
  89. package/apps/react/createReactPulumiApp.js.map +1 -0
  90. package/apps/react/index.d.ts +1 -0
  91. package/apps/react/index.js +18 -0
  92. package/apps/react/index.js.map +1 -0
  93. package/apps/tenantRouter.d.ts +3 -0
  94. package/apps/tenantRouter.js +115 -0
  95. package/apps/tenantRouter.js.map +1 -0
  96. package/apps/website/WebsitePrerendering.d.ts +39 -0
  97. package/apps/website/WebsitePrerendering.js +300 -0
  98. package/apps/website/WebsitePrerendering.js.map +1 -0
  99. package/apps/website/createWebsitePulumiApp.d.ts +74 -0
  100. package/apps/website/createWebsitePulumiApp.js +246 -0
  101. package/apps/website/createWebsitePulumiApp.js.map +1 -0
  102. package/apps/website/deliveryViewerRequest.d.ts +2 -0
  103. package/apps/website/deliveryViewerRequest.js +32 -0
  104. package/apps/website/deliveryViewerRequest.js.map +1 -0
  105. package/apps/website/index.d.ts +1 -0
  106. package/apps/website/index.js +18 -0
  107. package/apps/website/index.js.map +1 -0
  108. package/components/tenantRouter/WebsiteTenantRouter.d.ts +11 -0
  109. package/components/tenantRouter/WebsiteTenantRouter.js +98 -0
  110. package/components/tenantRouter/WebsiteTenantRouter.js.map +1 -0
  111. package/components/tenantRouter/functions/origin/request.d.ts +1 -0
  112. package/components/tenantRouter/functions/origin/request.js +129 -0
  113. package/components/tenantRouter/functions/origin/request.js.map +1 -0
  114. package/enterprise/createAdminPulumiApp.d.ts +1 -0
  115. package/enterprise/createAdminPulumiApp.js +25 -0
  116. package/enterprise/createAdminPulumiApp.js.map +1 -0
  117. package/enterprise/createApiPulumiApp.d.ts +61 -0
  118. package/enterprise/createApiPulumiApp.js +68 -0
  119. package/enterprise/createApiPulumiApp.js.map +1 -0
  120. package/enterprise/createCorePulumiApp.d.ts +42 -0
  121. package/enterprise/createCorePulumiApp.js +137 -0
  122. package/enterprise/createCorePulumiApp.js.map +1 -0
  123. package/enterprise/createWebsitePulumiApp.d.ts +56 -0
  124. package/enterprise/createWebsitePulumiApp.js +68 -0
  125. package/enterprise/createWebsitePulumiApp.js.map +1 -0
  126. package/enterprise/index.d.ts +4 -0
  127. package/enterprise/index.js +57 -0
  128. package/enterprise/index.js.map +1 -0
  129. package/index.d.ts +3 -0
  130. package/index.js +44 -0
  131. package/index.js.map +1 -0
  132. package/package.json +53 -0
  133. package/utils/crawlDirectory.d.ts +1 -0
  134. package/utils/crawlDirectory.js +33 -0
  135. package/utils/crawlDirectory.js.map +1 -0
  136. package/utils/getPresignedPost.d.ts +11 -0
  137. package/utils/getPresignedPost.js +46 -0
  138. package/utils/getPresignedPost.js.map +1 -0
  139. package/utils/index.d.ts +3 -0
  140. package/utils/index.js +51 -0
  141. package/utils/index.js.map +1 -0
  142. package/utils/lambdaEnvVariables.d.ts +20 -0
  143. package/utils/lambdaEnvVariables.js +78 -0
  144. package/utils/lambdaEnvVariables.js.map +1 -0
  145. package/utils/storageMigrate.d.ts +0 -0
  146. package/utils/storageMigrate.js +292 -0
  147. package/utils/storageMigrate.js.map +1 -0
  148. package/utils/tagResources.d.ts +5 -0
  149. package/utils/tagResources.js +43 -0
  150. package/utils/tagResources.js.map +1 -0
  151. package/utils/uploadFolderToS3.d.ts +26 -0
  152. package/utils/uploadFolderToS3.js +188 -0
  153. package/utils/uploadFolderToS3.js.map +1 -0
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.ApiApwScheduler = void 0;
11
+
12
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
+
14
+ var _path = _interopRequireDefault(require("path"));
15
+
16
+ var pulumi = _interopRequireWildcard(require("@pulumi/pulumi"));
17
+
18
+ var aws = _interopRequireWildcard(require("@pulumi/aws"));
19
+
20
+ var _pulumi2 = require("@webiny/pulumi");
21
+
22
+ var _common = require("../common");
23
+
24
+ var _lambdaUtils = require("../lambdaUtils");
25
+
26
+ const LAMBDA_NAME_PREFIX = "apw-scheduler";
27
+ const CREATE_RULE_LAMBDA = `${LAMBDA_NAME_PREFIX}-schedule-action-lambda`;
28
+ const EXECUTE_ACTION_LAMBDA = `${LAMBDA_NAME_PREFIX}-execute-action-lambda`;
29
+ const EVENT_RULE_NAME = `${LAMBDA_NAME_PREFIX}-event-rule`;
30
+ const EVENT_RULE_TARGET = `${LAMBDA_NAME_PREFIX}-event-rule-target`;
31
+ const ApiApwScheduler = (0, _pulumi2.createAppModule)({
32
+ name: "ApiApwScheduler",
33
+
34
+ config(app, params) {
35
+ const executeAction = createExecuteActionLambda(app, params);
36
+ const scheduleAction = createScheduleActionLambda(app, executeAction.lambda.output, params); // Create event rule.
37
+
38
+ const eventRule = app.addResource(aws.cloudwatch.EventRule, {
39
+ name: EVENT_RULE_NAME,
40
+ config: {
41
+ description: `Enable us to schedule an action in publishing workflow at a particular datetime`,
42
+ scheduleExpression: "cron(* * * * ? 2000)",
43
+ isEnabled: true
44
+ }
45
+ }); // Add required permission to the target lambda.
46
+
47
+ app.addResource(aws.lambda.Permission, {
48
+ name: "eventTargetPermission",
49
+ config: {
50
+ action: "lambda:InvokeFunction",
51
+ function: scheduleAction.lambda.output.arn,
52
+ principal: "events.amazonaws.com",
53
+ statementId: "allow-rule-invoke-" + EVENT_RULE_NAME
54
+ }
55
+ }); // Add lambda as target to the event rule.
56
+
57
+ const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {
58
+ name: EVENT_RULE_TARGET,
59
+ config: {
60
+ rule: eventRule.output.name,
61
+ arn: scheduleAction.lambda.output.arn
62
+ }
63
+ });
64
+ return {
65
+ executeAction,
66
+ scheduleAction,
67
+ eventRule,
68
+ eventTarget
69
+ };
70
+ }
71
+
72
+ });
73
+ exports.ApiApwScheduler = ApiApwScheduler;
74
+
75
+ function createExecuteActionLambda(app, params) {
76
+ const role = app.addResource(aws.iam.Role, {
77
+ name: `${EXECUTE_ACTION_LAMBDA}-role`,
78
+ config: {
79
+ assumeRolePolicy: {
80
+ Version: "2012-10-17",
81
+ Statement: [{
82
+ Action: "sts:AssumeRole",
83
+ Principal: {
84
+ Service: "lambda.amazonaws.com"
85
+ },
86
+ Effect: "Allow"
87
+ }]
88
+ }
89
+ },
90
+ meta: {
91
+ isLambdaFunctionRole: true
92
+ }
93
+ });
94
+ const policy = createExecuteActionLambdaPolicy(app);
95
+ app.addResource(aws.iam.RolePolicyAttachment, {
96
+ name: `${EXECUTE_ACTION_LAMBDA}-role-policy-attachment`,
97
+ config: {
98
+ role: role.output,
99
+ policyArn: policy.output.arn
100
+ }
101
+ });
102
+ app.addResource(aws.iam.RolePolicyAttachment, {
103
+ name: `${EXECUTE_ACTION_LAMBDA}-AWSLambdaBasicExecutionRole`,
104
+ config: {
105
+ role: role.output,
106
+ policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole
107
+ }
108
+ });
109
+ const lambda = app.addResource(aws.lambda.Function, {
110
+ name: EXECUTE_ACTION_LAMBDA,
111
+ config: {
112
+ role: role.output.arn,
113
+ runtime: "nodejs14.x",
114
+ handler: "handler.handler",
115
+ timeout: 60,
116
+ memorySize: 128,
117
+ description: "Handle execute action workflow in apw scheduler",
118
+ code: new pulumi.asset.AssetArchive({
119
+ ".": new pulumi.asset.FileArchive(_path.default.join(app.paths.workspace, "apw/executeAction/build"))
120
+ }),
121
+ environment: {
122
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), params.env))
123
+ }
124
+ }
125
+ });
126
+ return {
127
+ role,
128
+ policy,
129
+ lambda
130
+ };
131
+ }
132
+
133
+ function createExecuteActionLambdaPolicy(app) {
134
+ const core = app.getModule(_common.CoreOutput);
135
+ return app.addResource(aws.iam.Policy, {
136
+ name: "ApwSchedulerExecuteActionLambdaPolicy",
137
+ config: {
138
+ description: "This policy enables access to cloudwatch event and lambda invocation",
139
+ policy: {
140
+ Version: "2012-10-17",
141
+ Statement: [{
142
+ Sid: "PermissionLambda",
143
+ Effect: "Allow",
144
+ Action: ["lambda:InvokeFunction"],
145
+ Resource: ["*"]
146
+ }, {
147
+ Sid: "PermissionDynamoDB",
148
+ Effect: "Allow",
149
+ Action: ["dynamodb:Query", "dynamodb:GetItem", "dynamodb:DeleteItem"],
150
+ Resource: [pulumi.interpolate`${core.primaryDynamodbTableArn}`, pulumi.interpolate`${core.primaryDynamodbTableArn}/*`]
151
+ }]
152
+ }
153
+ }
154
+ });
155
+ }
156
+
157
+ function createScheduleActionLambda(app, executeLambda, params) {
158
+ const role = app.addResource(aws.iam.Role, {
159
+ name: `${CREATE_RULE_LAMBDA}-role`,
160
+ config: {
161
+ assumeRolePolicy: {
162
+ Version: "2012-10-17",
163
+ Statement: [{
164
+ Action: "sts:AssumeRole",
165
+ Principal: {
166
+ Service: "lambda.amazonaws.com"
167
+ },
168
+ Effect: "Allow"
169
+ }]
170
+ }
171
+ },
172
+ meta: {
173
+ isLambdaFunctionRole: true
174
+ }
175
+ });
176
+ const policy = createScheduleActionLambdaPolicy(app);
177
+ app.addResource(aws.iam.RolePolicyAttachment, {
178
+ name: `${CREATE_RULE_LAMBDA}-role-policy-attachment`,
179
+ config: {
180
+ role: role.output,
181
+ policyArn: policy.output.arn
182
+ }
183
+ });
184
+ app.addResource(aws.iam.RolePolicyAttachment, {
185
+ name: `${CREATE_RULE_LAMBDA}-AWSLambdaBasicExecutionRole`,
186
+ config: {
187
+ role: role.output,
188
+ policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole
189
+ }
190
+ });
191
+ const lambda = app.addResource(aws.lambda.Function, {
192
+ name: CREATE_RULE_LAMBDA,
193
+ config: {
194
+ role: role.output.arn,
195
+ runtime: "nodejs14.x",
196
+ handler: "handler.handler",
197
+ timeout: 60,
198
+ memorySize: 128,
199
+ description: "Handle schedule action workflow in apw scheduler",
200
+ code: new pulumi.asset.AssetArchive({
201
+ ".": new pulumi.asset.FileArchive(_path.default.join(app.paths.workspace, "apw/scheduleAction/build"))
202
+ }),
203
+ environment: {
204
+ 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),
206
+ // RULE_TARGET_ID: this.eventTarget.targetId.apply(id => id)
207
+
208
+ }))
209
+ }
210
+ }
211
+ });
212
+ return {
213
+ role,
214
+ policy,
215
+ lambda
216
+ };
217
+ }
218
+
219
+ function createScheduleActionLambdaPolicy(app) {
220
+ const core = app.getModule(_common.CoreOutput);
221
+ return app.addResource(aws.iam.Policy, {
222
+ name: "ApwSchedulerScheduleActionLambdaPolicy",
223
+ config: {
224
+ description: "This policy enables access to cloudwatch event and lambda invocation",
225
+ policy: {
226
+ Version: "2012-10-17",
227
+ Statement: [{
228
+ Sid: "PermissionLambda",
229
+ Effect: "Allow",
230
+ Action: ["lambda:InvokeFunction"],
231
+ Resource: ["*"]
232
+ }, {
233
+ Sid: "PermissionDynamoDB",
234
+ Effect: "Allow",
235
+ Action: ["dynamodb:PutItem", "dynamodb:Query", "dynamodb:GetItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem"],
236
+ Resource: [pulumi.interpolate`${core.primaryDynamodbTableArn}`, pulumi.interpolate`${core.primaryDynamodbTableArn}/*`]
237
+ }, {
238
+ Sid: "PermissionEvents",
239
+ Effect: "Allow",
240
+ Action: ["events:DeleteRule", "events:PutTargets", "events:PutRule", "events:ListRules", "events:RemoveTargets", "events:ListTargetsByRule"],
241
+ Resource: ["*"]
242
+ }]
243
+ }
244
+ }
245
+ });
246
+ }
@@ -0,0 +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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"}
@@ -0,0 +1,3 @@
1
+ import { PulumiAppModule } from "@webiny/pulumi";
2
+ export declare type ApiCloudfront = PulumiAppModule<typeof ApiCloudfront>;
3
+ export declare const ApiCloudfront: import("@webiny/pulumi").PulumiAppModuleDefinition<import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront/distribution").Distribution>, void>;
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ApiCloudfront = void 0;
9
+
10
+ var aws = _interopRequireWildcard(require("@pulumi/aws"));
11
+
12
+ var _pulumi = require("@webiny/pulumi");
13
+
14
+ var _ApiGateway = require("./ApiGateway");
15
+
16
+ const ApiCloudfront = (0, _pulumi.createAppModule)({
17
+ name: "ApiCloudfront",
18
+
19
+ config(app) {
20
+ const gateway = app.getModule(_ApiGateway.ApiGateway);
21
+ return app.addResource(aws.cloudfront.Distribution, {
22
+ name: "api-cloudfront",
23
+ config: {
24
+ waitForDeployment: false,
25
+ isIpv6Enabled: true,
26
+ enabled: true,
27
+ defaultCacheBehavior: {
28
+ compress: true,
29
+ allowedMethods: ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"],
30
+ cachedMethods: ["GET", "HEAD", "OPTIONS"],
31
+ forwardedValues: {
32
+ cookies: {
33
+ forward: "none"
34
+ },
35
+ headers: ["Accept", "Accept-Language"],
36
+ queryString: true
37
+ },
38
+ // MinTTL <= DefaultTTL <= MaxTTL
39
+ minTtl: 0,
40
+ defaultTtl: 0,
41
+ maxTtl: 86400,
42
+ targetOriginId: gateway.api.output.name,
43
+ viewerProtocolPolicy: "allow-all"
44
+ },
45
+ orderedCacheBehaviors: [{
46
+ compress: true,
47
+ allowedMethods: ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"],
48
+ cachedMethods: ["GET", "HEAD", "OPTIONS"],
49
+ forwardedValues: {
50
+ cookies: {
51
+ forward: "none"
52
+ },
53
+ headers: ["Accept", "Accept-Language"],
54
+ queryString: true
55
+ },
56
+ pathPattern: "/cms*",
57
+ viewerProtocolPolicy: "allow-all",
58
+ targetOriginId: gateway.api.output.name
59
+ }, {
60
+ allowedMethods: ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"],
61
+ cachedMethods: ["GET", "HEAD", "OPTIONS"],
62
+ forwardedValues: {
63
+ cookies: {
64
+ forward: "none"
65
+ },
66
+ headers: ["Accept", "Accept-Language"],
67
+ queryString: true
68
+ },
69
+ // MinTTL <= DefaultTTL <= MaxTTL
70
+ minTtl: 0,
71
+ defaultTtl: 0,
72
+ maxTtl: 2592000,
73
+ pathPattern: "/files/*",
74
+ viewerProtocolPolicy: "allow-all",
75
+ targetOriginId: gateway.api.output.name
76
+ }],
77
+ origins: [{
78
+ domainName: gateway.stage.output.invokeUrl.apply(url => new URL(url).hostname),
79
+ originPath: gateway.stage.output.invokeUrl.apply(url => new URL(url).pathname),
80
+ originId: gateway.api.output.name,
81
+ customOriginConfig: {
82
+ httpPort: 80,
83
+ httpsPort: 443,
84
+ originProtocolPolicy: "https-only",
85
+ originSslProtocols: ["TLSv1.2"]
86
+ }
87
+ }],
88
+ restrictions: {
89
+ geoRestriction: {
90
+ restrictionType: "none"
91
+ }
92
+ },
93
+ viewerCertificate: {
94
+ cloudfrontDefaultCertificate: true
95
+ }
96
+ }
97
+ });
98
+ }
99
+
100
+ });
101
+ exports.ApiCloudfront = ApiCloudfront;
@@ -0,0 +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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"}
@@ -0,0 +1,10 @@
1
+ import { PulumiAppModule } from "@webiny/pulumi";
2
+ export declare type ApiFileManager = PulumiAppModule<typeof ApiFileManager>;
3
+ export declare const ApiFileManager: import("@webiny/pulumi").PulumiAppModuleDefinition<{
4
+ functions: {
5
+ transform: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
6
+ manage: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
7
+ download: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
8
+ };
9
+ bucketNotification: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/s3/bucketNotification").BucketNotification>;
10
+ }, void>;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.ApiFileManager = void 0;
11
+
12
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
+
14
+ var _path = _interopRequireDefault(require("path"));
15
+
16
+ var pulumi = _interopRequireWildcard(require("@pulumi/pulumi"));
17
+
18
+ var aws = _interopRequireWildcard(require("@pulumi/aws"));
19
+
20
+ var _awsLayers = require("@webiny/aws-layers");
21
+
22
+ var _pulumi2 = require("@webiny/pulumi");
23
+
24
+ var _lambdaUtils = require("../lambdaUtils");
25
+
26
+ var _common = require("../common");
27
+
28
+ var _awsUtils = require("../awsUtils");
29
+
30
+ // @ts-ignore
31
+ const ApiFileManager = (0, _pulumi2.createAppModule)({
32
+ name: "ApiFileManager",
33
+
34
+ config(app) {
35
+ const core = app.getModule(_common.CoreOutput);
36
+ const accountId = (0, _awsUtils.getAwsAccountId)(app);
37
+ const policy = createFileManagerLambdaPolicy(app);
38
+ const role = (0, _lambdaUtils.createLambdaRole)(app, {
39
+ name: "fm-lambda-role",
40
+ policy: policy.output
41
+ });
42
+ const transform = app.addResource(aws.lambda.Function, {
43
+ name: "fm-image-transformer",
44
+ config: {
45
+ handler: "handler.handler",
46
+ timeout: 30,
47
+ runtime: "nodejs14.x",
48
+ memorySize: 1600,
49
+ role: role.output.arn,
50
+ description: "Performs image optimization, resizing, etc.",
51
+ code: new pulumi.asset.AssetArchive({
52
+ ".": new pulumi.asset.FileArchive(_path.default.join(app.paths.workspace, "fileManager/transform/build"))
53
+ }),
54
+ layers: [(0, _awsLayers.getLayerArn)("sharp")],
55
+ environment: {
56
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), {}, {
57
+ S3_BUCKET: core.fileManagerBucketId
58
+ }))
59
+ },
60
+ vpcConfig: app.getModule(_common.VpcConfig).functionVpcConfig
61
+ }
62
+ });
63
+ const manage = app.addResource(aws.lambda.Function, {
64
+ name: "fm-manage",
65
+ config: {
66
+ role: role.output.arn,
67
+ runtime: "nodejs14.x",
68
+ handler: "handler.handler",
69
+ timeout: 30,
70
+ memorySize: 512,
71
+ description: "Triggered when a file is deleted.",
72
+ code: new pulumi.asset.AssetArchive({
73
+ ".": new pulumi.asset.FileArchive(_path.default.join(app.paths.workspace, "fileManager/manage/build"))
74
+ }),
75
+ environment: {
76
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), {}, {
77
+ S3_BUCKET: core.fileManagerBucketId
78
+ }))
79
+ },
80
+ vpcConfig: app.getModule(_common.VpcConfig).functionVpcConfig
81
+ }
82
+ });
83
+ const download = app.addResource(aws.lambda.Function, {
84
+ name: "fm-download",
85
+ config: {
86
+ role: role.output.arn,
87
+ runtime: "nodejs14.x",
88
+ handler: "handler.handler",
89
+ timeout: 30,
90
+ memorySize: 512,
91
+ description: "Serves previously uploaded files.",
92
+ code: new pulumi.asset.AssetArchive({
93
+ ".": new pulumi.asset.FileArchive(_path.default.join(app.paths.workspace, "fileManager/download/build"))
94
+ }),
95
+ environment: {
96
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), {}, {
97
+ S3_BUCKET: core.fileManagerBucketId,
98
+ IMAGE_TRANSFORMER_FUNCTION: transform.output.arn
99
+ }))
100
+ },
101
+ vpcConfig: app.getModule(_common.VpcConfig).functionVpcConfig
102
+ }
103
+ });
104
+ const manageS3LambdaPermission = app.addResource(aws.lambda.Permission, {
105
+ name: "fm-manage-s3-lambda-permission",
106
+ config: {
107
+ action: "lambda:InvokeFunction",
108
+ function: manage.output.arn,
109
+ principal: "s3.amazonaws.com",
110
+ sourceArn: pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}`,
111
+ sourceAccount: accountId
112
+ },
113
+ opts: {
114
+ dependsOn: [manage.output]
115
+ }
116
+ });
117
+ const bucketNotification = app.addResource(aws.s3.BucketNotification, {
118
+ name: "bucketNotification",
119
+ config: {
120
+ bucket: core.fileManagerBucketId,
121
+ lambdaFunctions: [{
122
+ lambdaFunctionArn: manage.output.arn,
123
+ events: ["s3:ObjectRemoved:*"]
124
+ }]
125
+ },
126
+ opts: {
127
+ dependsOn: [manage.output, manageS3LambdaPermission.output]
128
+ }
129
+ });
130
+ const functions = {
131
+ transform,
132
+ manage,
133
+ download
134
+ };
135
+ return {
136
+ functions,
137
+ bucketNotification
138
+ };
139
+ }
140
+
141
+ });
142
+ exports.ApiFileManager = ApiFileManager;
143
+
144
+ function createFileManagerLambdaPolicy(app) {
145
+ const core = app.getModule(_common.CoreOutput);
146
+ return app.addResource(aws.iam.Policy, {
147
+ name: "FileManagerLambdaPolicy",
148
+ config: {
149
+ description: "This policy enables access to Lambda and S3",
150
+ policy: {
151
+ Version: "2012-10-17",
152
+ Statement: [{
153
+ Sid: "PermissionForLambda",
154
+ Effect: "Allow",
155
+ Action: "lambda:InvokeFunction",
156
+ Resource: "*"
157
+ }, {
158
+ Sid: "PermissionForS3",
159
+ Effect: "Allow",
160
+ Action: ["s3:DeleteObject", "s3:PutObject", "s3:GetObject", "s3:ListBucket"],
161
+ Resource: [pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}`, pulumi.interpolate`arn:aws:s3:::${core.fileManagerBucketId}/*`]
162
+ }]
163
+ }
164
+ }
165
+ });
166
+ }
@@ -0,0 +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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"}
@@ -0,0 +1,18 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import { PulumiAppModule } from "@webiny/pulumi";
3
+ export interface ApiRouteParams {
4
+ path: pulumi.Input<string>;
5
+ method: pulumi.Input<string>;
6
+ function: pulumi.Input<string>;
7
+ }
8
+ export declare type ApiGateway = PulumiAppModule<typeof ApiGateway>;
9
+ export declare const ApiGateway: import("@webiny/pulumi").PulumiAppModuleDefinition<{
10
+ api: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/api").Api>;
11
+ stage: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/stage").Stage>;
12
+ routes: Record<string, {
13
+ integration: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/integration").Integration>;
14
+ route: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/route").Route>;
15
+ permission: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/permission").Permission>;
16
+ }>;
17
+ addRoute: (name: string, params: ApiRouteParams) => void;
18
+ }, Record<string, ApiRouteParams>>;