@webiny/pulumi-aws 6.0.0-alpha.0 → 6.0.0-alpha.2

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 (191) hide show
  1. package/apps/admin/createAdminPulumiApp.d.ts +3 -2
  2. package/apps/admin/createAdminPulumiApp.js +1 -0
  3. package/apps/admin/createAdminPulumiApp.js.map +1 -1
  4. package/apps/api/ApiApwScheduler.d.ts +1 -1
  5. package/apps/api/ApiApwScheduler.js.map +1 -1
  6. package/apps/api/ApiBackgroundTask.d.ts +1 -1
  7. package/apps/api/ApiBackgroundTask.js.map +1 -1
  8. package/apps/api/ApiCloudfront.d.ts +1 -1
  9. package/apps/api/ApiCloudfront.js.map +1 -1
  10. package/apps/api/ApiFileManager.d.ts +7 -1
  11. package/apps/api/ApiFileManager.js +6 -0
  12. package/apps/api/ApiFileManager.js.map +1 -1
  13. package/apps/api/ApiGateway.d.ts +2 -2
  14. package/apps/api/ApiGateway.js.map +1 -1
  15. package/apps/api/ApiGraphql.d.ts +1 -1
  16. package/apps/api/ApiGraphql.js.map +1 -1
  17. package/apps/api/ApiMigration.d.ts +1 -1
  18. package/apps/api/ApiMigration.js.map +1 -1
  19. package/apps/api/ApiOutput.d.ts +11 -1
  20. package/apps/api/ApiOutput.js +11 -1
  21. package/apps/api/ApiOutput.js.map +1 -1
  22. package/apps/api/ApiPageBuilder.d.ts +1 -1
  23. package/apps/api/ApiPageBuilder.js.map +1 -1
  24. package/apps/api/ApiScheduler.d.ts +8 -0
  25. package/apps/api/ApiScheduler.js +105 -0
  26. package/apps/api/ApiScheduler.js.map +1 -0
  27. package/apps/api/ApiWebsocket.d.ts +1 -1
  28. package/apps/api/ApiWebsocket.js.map +1 -1
  29. package/apps/api/backgroundTask/definition.d.ts +2 -2
  30. package/apps/api/backgroundTask/definition.js.map +1 -1
  31. package/apps/api/backgroundTask/policy.d.ts +2 -2
  32. package/apps/api/backgroundTask/policy.js.map +1 -1
  33. package/apps/api/backgroundTask/role.d.ts +2 -2
  34. package/apps/api/backgroundTask/role.js.map +1 -1
  35. package/apps/api/backgroundTask/types.d.ts +1 -1
  36. package/apps/api/backgroundTask/types.js.map +1 -1
  37. package/apps/api/createApiPulumiApp.d.ts +19 -13
  38. package/apps/api/createApiPulumiApp.js +50 -19
  39. package/apps/api/createApiPulumiApp.js.map +1 -1
  40. package/apps/awsUtils.d.ts +2 -2
  41. package/apps/awsUtils.js.map +1 -1
  42. package/apps/blueGreen/createBlueGreenPulumiApp.d.ts +7 -1
  43. package/apps/blueGreen/createBlueGreenPulumiApp.js +2 -2
  44. package/apps/blueGreen/createBlueGreenPulumiApp.js.map +1 -1
  45. package/apps/blueGreen/domains/attachDomainsToOutput.d.ts +1 -1
  46. package/apps/blueGreen/domains/attachDomainsToOutput.js.map +1 -1
  47. package/apps/blueGreen/types.d.ts +4 -1
  48. package/apps/blueGreen/types.js.map +1 -1
  49. package/apps/common/CoreOutput.d.ts +2 -1
  50. package/apps/common/CoreOutput.js +1 -0
  51. package/apps/common/CoreOutput.js.map +1 -1
  52. package/apps/common/VpcConfig.d.ts +1 -1
  53. package/apps/common/VpcConfig.js.map +1 -1
  54. package/apps/core/CoreCognito.d.ts +1 -1
  55. package/apps/core/CoreCognito.js.map +1 -1
  56. package/apps/core/CoreDynamo.d.ts +1 -1
  57. package/apps/core/CoreDynamo.js.map +1 -1
  58. package/apps/core/CoreElasticSearch.d.ts +1 -1
  59. package/apps/core/CoreElasticSearch.js +7 -1
  60. package/apps/core/CoreElasticSearch.js.map +1 -1
  61. package/apps/core/CoreEventBus.js.map +1 -1
  62. package/apps/core/CoreFileManager.d.ts +1 -1
  63. package/apps/core/CoreFileManager.js.map +1 -1
  64. package/apps/core/CoreOpenSearch.d.ts +1 -1
  65. package/apps/core/CoreOpenSearch.js +7 -1
  66. package/apps/core/CoreOpenSearch.js.map +1 -1
  67. package/apps/core/CoreVpc.d.ts +1 -1
  68. package/apps/core/CoreVpc.js.map +1 -1
  69. package/apps/core/LogDynamo.d.ts +1 -1
  70. package/apps/core/LogDynamo.js.map +1 -1
  71. package/apps/core/WatchCommand.js.map +1 -1
  72. package/apps/core/cognitoIdentityProviders/amazon.d.ts +3 -3
  73. package/apps/core/cognitoIdentityProviders/amazon.js.map +1 -1
  74. package/apps/core/cognitoIdentityProviders/apple.d.ts +3 -3
  75. package/apps/core/cognitoIdentityProviders/apple.js.map +1 -1
  76. package/apps/core/cognitoIdentityProviders/configure.d.ts +3 -3
  77. package/apps/core/cognitoIdentityProviders/configure.js.map +1 -1
  78. package/apps/core/cognitoIdentityProviders/facebook.d.ts +3 -3
  79. package/apps/core/cognitoIdentityProviders/facebook.js.map +1 -1
  80. package/apps/core/cognitoIdentityProviders/getIdpConfig.d.ts +2 -2
  81. package/apps/core/cognitoIdentityProviders/getIdpConfig.js.map +1 -1
  82. package/apps/core/cognitoIdentityProviders/google.d.ts +3 -3
  83. package/apps/core/cognitoIdentityProviders/google.js.map +1 -1
  84. package/apps/core/cognitoIdentityProviders/oidc.d.ts +3 -3
  85. package/apps/core/cognitoIdentityProviders/oidc.js.map +1 -1
  86. package/apps/core/createCorePulumiApp.d.ts +1 -1
  87. package/apps/core/createCorePulumiApp.js +2 -1
  88. package/apps/core/createCorePulumiApp.js.map +1 -1
  89. package/apps/createAppBucket.d.ts +1 -1
  90. package/apps/createAppBucket.js.map +1 -1
  91. package/apps/customDomain.d.ts +3 -3
  92. package/apps/customDomain.js.map +1 -1
  93. package/apps/lambdaUtils.d.ts +3 -2
  94. package/apps/lambdaUtils.js +21 -3
  95. package/apps/lambdaUtils.js.map +1 -1
  96. package/apps/react/createReactPulumiApp.d.ts +2 -2
  97. package/apps/react/createReactPulumiApp.js.map +1 -1
  98. package/apps/syncSystem/SyncSystemDynamo.d.ts +1 -1
  99. package/apps/syncSystem/SyncSystemDynamo.js.map +1 -1
  100. package/apps/syncSystem/SyncSystemDynamoDb.d.ts +3 -0
  101. package/apps/syncSystem/SyncSystemDynamoDb.js +55 -0
  102. package/apps/syncSystem/SyncSystemDynamoDb.js.map +1 -0
  103. package/apps/syncSystem/SyncSystemEventBus.d.ts +6 -0
  104. package/apps/syncSystem/SyncSystemEventBus.js +84 -0
  105. package/apps/syncSystem/SyncSystemEventBus.js.map +1 -0
  106. package/apps/syncSystem/SyncSystemLambda.d.ts +1 -1
  107. package/apps/syncSystem/SyncSystemLambda.js.map +1 -1
  108. package/apps/syncSystem/SyncSystemOutput.d.ts +3 -0
  109. package/apps/syncSystem/SyncSystemOutput.js +26 -0
  110. package/apps/syncSystem/SyncSystemOutput.js.map +1 -0
  111. package/apps/syncSystem/SyncSystemResolverLambda.d.ts +8 -0
  112. package/apps/syncSystem/SyncSystemResolverLambda.js +78 -0
  113. package/apps/syncSystem/SyncSystemResolverLambda.js.map +1 -0
  114. package/apps/syncSystem/SyncSystemSQS.d.ts +3 -4
  115. package/apps/syncSystem/SyncSystemSQS.js +33 -12
  116. package/apps/syncSystem/SyncSystemSQS.js.map +1 -1
  117. package/apps/syncSystem/SyncSystemWorkerLambda.d.ts +7 -0
  118. package/apps/syncSystem/SyncSystemWorkerLambda.js +57 -0
  119. package/apps/syncSystem/SyncSystemWorkerLambda.js.map +1 -0
  120. package/apps/syncSystem/api/addServiceManifest.d.ts +8 -0
  121. package/apps/syncSystem/api/addServiceManifest.js +25 -0
  122. package/apps/syncSystem/api/addServiceManifest.js.map +1 -0
  123. package/apps/syncSystem/api/attachCognitoPermissions.d.ts +14 -0
  124. package/apps/syncSystem/api/attachCognitoPermissions.js +67 -0
  125. package/apps/syncSystem/api/attachCognitoPermissions.js.map +1 -0
  126. package/apps/syncSystem/api/attachDynamoDbPermissions.d.ts +13 -0
  127. package/apps/syncSystem/api/attachDynamoDbPermissions.js +53 -0
  128. package/apps/syncSystem/api/attachDynamoDbPermissions.js.map +1 -0
  129. package/apps/syncSystem/api/attachEventBusPermissions.d.ts +18 -0
  130. package/apps/syncSystem/api/attachEventBusPermissions.js +66 -0
  131. package/apps/syncSystem/api/attachEventBusPermissions.js.map +1 -0
  132. package/apps/syncSystem/api/attachS3Permissions.d.ts +14 -0
  133. package/apps/syncSystem/api/attachS3Permissions.js +59 -0
  134. package/apps/syncSystem/api/attachS3Permissions.js.map +1 -0
  135. package/apps/syncSystem/api/index.d.ts +9 -0
  136. package/apps/syncSystem/api/index.js +65 -0
  137. package/apps/syncSystem/api/index.js.map +1 -0
  138. package/apps/syncSystem/constants.d.ts +1 -0
  139. package/apps/syncSystem/constants.js +9 -0
  140. package/apps/syncSystem/constants.js.map +1 -0
  141. package/apps/syncSystem/createSyncResourceName.d.ts +4 -0
  142. package/apps/syncSystem/createSyncResourceName.js +17 -0
  143. package/apps/syncSystem/createSyncResourceName.js.map +1 -0
  144. package/apps/syncSystem/createSyncSystemPulumiApp.d.ts +19 -10
  145. package/apps/syncSystem/createSyncSystemPulumiApp.js +107 -34
  146. package/apps/syncSystem/createSyncSystemPulumiApp.js.map +1 -1
  147. package/apps/syncSystem/customApp.d.ts +6 -0
  148. package/apps/syncSystem/customApp.js +26 -0
  149. package/apps/syncSystem/customApp.js.map +1 -0
  150. package/apps/syncSystem/getSyncSystemOutput.d.ts +6 -0
  151. package/apps/syncSystem/getSyncSystemOutput.js +28 -0
  152. package/apps/syncSystem/getSyncSystemOutput.js.map +1 -0
  153. package/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.d.ts +7 -0
  154. package/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.js +55 -0
  155. package/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.js.map +1 -0
  156. package/apps/syncSystem/types.d.ts +55 -0
  157. package/apps/syncSystem/types.js +7 -0
  158. package/apps/syncSystem/types.js.map +1 -0
  159. package/apps/tenantRouter.d.ts +1 -1
  160. package/apps/tenantRouter.js.map +1 -1
  161. package/apps/website/WebsitePrerendering.d.ts +1 -1
  162. package/apps/website/WebsitePrerendering.js.map +1 -1
  163. package/apps/website/createWebsitePulumiApp.d.ts +2 -2
  164. package/apps/website/createWebsitePulumiApp.js.map +1 -1
  165. package/enterprise/api/handleGuardDutyEvents.d.ts +1 -1
  166. package/enterprise/api/handleGuardDutyEvents.js.map +1 -1
  167. package/enterprise/createApiPulumiApp.d.ts +13 -2
  168. package/enterprise/createApiPulumiApp.js.map +1 -1
  169. package/enterprise/createCorePulumiApp.d.ts +2 -2
  170. package/enterprise/createCorePulumiApp.js.map +1 -1
  171. package/enterprise/createSyncSystemPulumiApp.d.ts +13 -8
  172. package/enterprise/createSyncSystemPulumiApp.js +1 -1
  173. package/enterprise/createSyncSystemPulumiApp.js.map +1 -1
  174. package/enterprise/createWebsitePulumiApp.d.ts +2 -2
  175. package/enterprise/createWebsitePulumiApp.js.map +1 -1
  176. package/package.json +12 -12
  177. package/utils/addDomainsUrlsOutputs.d.ts +2 -2
  178. package/utils/addDomainsUrlsOutputs.js.map +1 -1
  179. package/utils/addServiceManifestTableItem.d.ts +1 -1
  180. package/utils/addServiceManifestTableItem.js.map +1 -1
  181. package/utils/createAssetArchive.d.ts +2 -0
  182. package/utils/createAssetArchive.js +16 -0
  183. package/utils/createAssetArchive.js.map +1 -0
  184. package/utils/getPresignedPost.d.ts +1 -1
  185. package/utils/getPresignedPost.js.map +1 -1
  186. package/utils/lambdaEnvVariables.d.ts +1 -1
  187. package/utils/lambdaEnvVariables.js.map +1 -1
  188. package/utils/uploadFolderToS3.d.ts +1 -1
  189. package/utils/uploadFolderToS3.js.map +1 -1
  190. package/utils/withServiceManifest.d.ts +2 -2
  191. package/utils/withServiceManifest.js.map +1 -1
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.attachCognitoPermissions = void 0;
8
+ var aws = _interopRequireWildcard(require("@pulumi/aws"));
9
+ var _createSyncResourceName = require("../createSyncResourceName.js");
10
+ const attachCognitoPermissions = params => {
11
+ const {
12
+ app,
13
+ syncSystem,
14
+ core
15
+ } = params;
16
+ /**
17
+ * TODO there must be a way to skip this if Cognito is not used in the Webiny deployment.
18
+ */
19
+ if (!core.cognitoUserPoolArn) {
20
+ return null;
21
+ }
22
+ const {
23
+ resolverLambdaRoleName,
24
+ workerLambdaRoleName
25
+ } = syncSystem;
26
+ const resolverLambdaToS3ResourceName = (0, _createSyncResourceName.createSyncResourceName)(`resolver-lambda-to-cognito`);
27
+ const workerLambdaToS3ResourceName = (0, _createSyncResourceName.createSyncResourceName)(`worker-lambda-to-cognito`);
28
+ const cognitoPolicy = app.addResource(aws.iam.Policy, {
29
+ name: `${resolverLambdaToS3ResourceName}-policy`,
30
+ config: {
31
+ description: "This policy enables access from Sync System Resolver and Worker Lambda to Webiny Cognito.",
32
+ policy: {
33
+ Version: "2012-10-17",
34
+ Statement: [{
35
+ Sid: "PermissionForSyncLambdaToCognito",
36
+ Effect: "Allow",
37
+ Action: ["cognito-idp:*"],
38
+ Resource: core.cognitoUserPoolArn.apply(arn => {
39
+ return [arn, `${arn}/*`];
40
+ })
41
+ }]
42
+ }
43
+ }
44
+ });
45
+ const resolverLambdaS3PolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {
46
+ name: `${resolverLambdaToS3ResourceName}-policy-attachment`,
47
+ config: {
48
+ role: resolverLambdaRoleName,
49
+ policyArn: cognitoPolicy.output.arn
50
+ }
51
+ });
52
+ const workerLambdaS3PolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {
53
+ name: `${workerLambdaToS3ResourceName}-policy-attachment`,
54
+ config: {
55
+ role: workerLambdaRoleName,
56
+ policyArn: cognitoPolicy.output.arn
57
+ }
58
+ });
59
+ return {
60
+ cognitoPolicy,
61
+ workerLambdaS3PolicyAttachment,
62
+ resolverLambdaS3PolicyAttachment
63
+ };
64
+ };
65
+ exports.attachCognitoPermissions = attachCognitoPermissions;
66
+
67
+ //# sourceMappingURL=attachCognitoPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["aws","_interopRequireWildcard","require","_createSyncResourceName","attachCognitoPermissions","params","app","syncSystem","core","cognitoUserPoolArn","resolverLambdaRoleName","workerLambdaRoleName","resolverLambdaToS3ResourceName","createSyncResourceName","workerLambdaToS3ResourceName","cognitoPolicy","addResource","iam","Policy","name","config","description","policy","Version","Statement","Sid","Effect","Action","Resource","apply","arn","resolverLambdaS3PolicyAttachment","RolePolicyAttachment","role","policyArn","output","workerLambdaS3PolicyAttachment","exports"],"sources":["attachCognitoPermissions.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport type { PulumiApp } from \"@webiny/pulumi\";\nimport type { WithServiceManifest } from \"~/utils/withServiceManifest.js\";\nimport type { IGetSyncSystemOutputResult } from \"~/apps/syncSystem/types.js\";\nimport type { CoreOutput } from \"~/apps/index.js\";\nimport { createSyncResourceName } from \"~/apps/syncSystem/createSyncResourceName.js\";\n\nexport interface IAttachCognitoPermissionsParams {\n app: PulumiApp & WithServiceManifest;\n syncSystem: IGetSyncSystemOutputResult;\n core: CoreOutput;\n}\n\nexport const attachCognitoPermissions = (params: IAttachCognitoPermissionsParams) => {\n const { app, syncSystem, core } = params;\n /**\n * TODO there must be a way to skip this if Cognito is not used in the Webiny deployment.\n */\n if (!core.cognitoUserPoolArn) {\n return null;\n }\n\n const { resolverLambdaRoleName, workerLambdaRoleName } = syncSystem;\n\n const resolverLambdaToS3ResourceName = createSyncResourceName(`resolver-lambda-to-cognito`);\n const workerLambdaToS3ResourceName = createSyncResourceName(`worker-lambda-to-cognito`);\n\n const cognitoPolicy = app.addResource(aws.iam.Policy, {\n name: `${resolverLambdaToS3ResourceName}-policy`,\n config: {\n description:\n \"This policy enables access from Sync System Resolver and Worker Lambda to Webiny Cognito.\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForSyncLambdaToCognito\",\n Effect: \"Allow\",\n Action: [\"cognito-idp:*\"],\n Resource: core.cognitoUserPoolArn.apply(arn => {\n return [arn, `${arn}/*`];\n })\n }\n ]\n }\n }\n });\n\n const resolverLambdaS3PolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${resolverLambdaToS3ResourceName}-policy-attachment`,\n config: {\n role: resolverLambdaRoleName,\n policyArn: cognitoPolicy.output.arn\n }\n });\n\n const workerLambdaS3PolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${workerLambdaToS3ResourceName}-policy-attachment`,\n config: {\n role: workerLambdaRoleName,\n policyArn: cognitoPolicy.output.arn\n }\n });\n\n return {\n cognitoPolicy,\n workerLambdaS3PolicyAttachment,\n resolverLambdaS3PolicyAttachment\n };\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AAKA,IAAAC,uBAAA,GAAAD,OAAA;AAQO,MAAME,wBAAwB,GAAIC,MAAuC,IAAK;EACjF,MAAM;IAAEC,GAAG;IAAEC,UAAU;IAAEC;EAAK,CAAC,GAAGH,MAAM;EACxC;AACJ;AACA;EACI,IAAI,CAACG,IAAI,CAACC,kBAAkB,EAAE;IAC1B,OAAO,IAAI;EACf;EAEA,MAAM;IAAEC,sBAAsB;IAAEC;EAAqB,CAAC,GAAGJ,UAAU;EAEnE,MAAMK,8BAA8B,GAAG,IAAAC,8CAAsB,EAAC,4BAA4B,CAAC;EAC3F,MAAMC,4BAA4B,GAAG,IAAAD,8CAAsB,EAAC,0BAA0B,CAAC;EAEvF,MAAME,aAAa,GAAGT,GAAG,CAACU,WAAW,CAAChB,GAAG,CAACiB,GAAG,CAACC,MAAM,EAAE;IAClDC,IAAI,EAAE,GAAGP,8BAA8B,SAAS;IAChDQ,MAAM,EAAE;MACJC,WAAW,EACP,2FAA2F;MAC/FC,MAAM,EAAE;QACJC,OAAO,EAAE,YAAY;QACrBC,SAAS,EAAE,CACP;UACIC,GAAG,EAAE,kCAAkC;UACvCC,MAAM,EAAE,OAAO;UACfC,MAAM,EAAE,CAAC,eAAe,CAAC;UACzBC,QAAQ,EAAEpB,IAAI,CAACC,kBAAkB,CAACoB,KAAK,CAACC,GAAG,IAAI;YAC3C,OAAO,CAACA,GAAG,EAAE,GAAGA,GAAG,IAAI,CAAC;UAC5B,CAAC;QACL,CAAC;MAET;IACJ;EACJ,CAAC,CAAC;EAEF,MAAMC,gCAAgC,GAAGzB,GAAG,CAACU,WAAW,CAAChB,GAAG,CAACiB,GAAG,CAACe,oBAAoB,EAAE;IACnFb,IAAI,EAAE,GAAGP,8BAA8B,oBAAoB;IAC3DQ,MAAM,EAAE;MACJa,IAAI,EAAEvB,sBAAsB;MAC5BwB,SAAS,EAAEnB,aAAa,CAACoB,MAAM,CAACL;IACpC;EACJ,CAAC,CAAC;EAEF,MAAMM,8BAA8B,GAAG9B,GAAG,CAACU,WAAW,CAAChB,GAAG,CAACiB,GAAG,CAACe,oBAAoB,EAAE;IACjFb,IAAI,EAAE,GAAGL,4BAA4B,oBAAoB;IACzDM,MAAM,EAAE;MACJa,IAAI,EAAEtB,oBAAoB;MAC1BuB,SAAS,EAAEnB,aAAa,CAACoB,MAAM,CAACL;IACpC;EACJ,CAAC,CAAC;EAEF,OAAO;IACHf,aAAa;IACbqB,8BAA8B;IAC9BL;EACJ,CAAC;AACL,CAAC;AAACM,OAAA,CAAAjC,wBAAA,GAAAA,wBAAA","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import type { PulumiApp } from "@webiny/pulumi";
2
+ import type { IGetSyncSystemOutputResult } from "../types.js";
3
+ import type { CoreOutput } from "../../common/CoreOutput.js";
4
+ import type { WithServiceManifest } from "../../../utils/withServiceManifest.js";
5
+ export interface IAttachDynamoDbPermissionsParams {
6
+ app: PulumiApp & WithServiceManifest;
7
+ syncSystem: IGetSyncSystemOutputResult;
8
+ core: CoreOutput;
9
+ }
10
+ export declare const attachDynamoDbPermissions: (params: IAttachDynamoDbPermissionsParams) => {
11
+ dynamoDbPolicy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
12
+ lambdaRolePolicyAttachment: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/rolePolicyAttachment").RolePolicyAttachment>;
13
+ };
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.attachDynamoDbPermissions = void 0;
8
+ var aws = _interopRequireWildcard(require("@pulumi/aws"));
9
+ var _createSyncResourceName = require("../createSyncResourceName.js");
10
+ /**
11
+ * We need to attach Sync System Lambda policy to access DynamoDB in the Webiny system.
12
+ */
13
+
14
+ const attachDynamoDbPermissions = params => {
15
+ const {
16
+ app,
17
+ syncSystem,
18
+ core
19
+ } = params;
20
+ const {
21
+ resolverLambdaRoleName
22
+ } = syncSystem;
23
+ const lambdaToDynamoDbResourceName = (0, _createSyncResourceName.createSyncResourceName)(`resolver-lambda-to-dynamodb`);
24
+ const dynamoDbPolicy = app.addResource(aws.iam.Policy, {
25
+ name: `${lambdaToDynamoDbResourceName}-policy`,
26
+ config: {
27
+ description: "This policy enables access from Sync System Lambda to Webiny DynamoDB.",
28
+ policy: {
29
+ Version: "2012-10-17",
30
+ Statement: [{
31
+ Sid: "PermissionForSyncLambdaToDynamoDb",
32
+ Effect: "Allow",
33
+ Action: ["dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", "dynamodb:ConditionCheckItem", "dynamodb:CreateBackup", "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:DeleteBackup", "dynamodb:DeleteItem", "dynamodb:DeleteTable", "dynamodb:DeleteTableReplica", "dynamodb:DescribeBackup", "dynamodb:DescribeContinuousBackups", "dynamodb:DescribeContributorInsights", "dynamodb:DescribeExport", "dynamodb:DescribeKinesisStreamingDestination", "dynamodb:DescribeLimits", "dynamodb:DescribeReservedCapacity", "dynamodb:DescribeReservedCapacityOfferings", "dynamodb:DescribeStream", "dynamodb:DescribeTable", "dynamodb:DescribeTableReplicaAutoScaling", "dynamodb:DescribeTimeToLive", "dynamodb:DisableKinesisStreamingDestination", "dynamodb:EnableKinesisStreamingDestination", "dynamodb:ExportTableToPointInTime", "dynamodb:GetItem", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:ListBackups", "dynamodb:ListContributorInsights", "dynamodb:ListExports", "dynamodb:ListStreams", "dynamodb:ListTables", "dynamodb:ListTagsOfResource", "dynamodb:PartiQLDelete", "dynamodb:PartiQLInsert", "dynamodb:PartiQLSelect", "dynamodb:PartiQLUpdate", "dynamodb:PurchaseReservedCapacityOfferings", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:RestoreTableFromBackup", "dynamodb:RestoreTableToPointInTime", "dynamodb:Scan", "dynamodb:UpdateContinuousBackups", "dynamodb:UpdateContributorInsights", "dynamodb:UpdateItem", "dynamodb:UpdateTable", "dynamodb:UpdateTableReplicaAutoScaling", "dynamodb:UpdateTimeToLive"],
34
+ Resource: [core.primaryDynamodbTableArn.apply(arn => arn), core.primaryDynamodbTableArn.apply(arn => `${arn}/*`)]
35
+ }]
36
+ }
37
+ }
38
+ });
39
+ const lambdaRolePolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {
40
+ name: `${lambdaToDynamoDbResourceName}-role-policy-attachment`,
41
+ config: {
42
+ role: resolverLambdaRoleName,
43
+ policyArn: dynamoDbPolicy.output.arn
44
+ }
45
+ });
46
+ return {
47
+ dynamoDbPolicy,
48
+ lambdaRolePolicyAttachment
49
+ };
50
+ };
51
+ exports.attachDynamoDbPermissions = attachDynamoDbPermissions;
52
+
53
+ //# sourceMappingURL=attachDynamoDbPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["aws","_interopRequireWildcard","require","_createSyncResourceName","attachDynamoDbPermissions","params","app","syncSystem","core","resolverLambdaRoleName","lambdaToDynamoDbResourceName","createSyncResourceName","dynamoDbPolicy","addResource","iam","Policy","name","config","description","policy","Version","Statement","Sid","Effect","Action","Resource","primaryDynamodbTableArn","apply","arn","lambdaRolePolicyAttachment","RolePolicyAttachment","role","policyArn","output","exports"],"sources":["attachDynamoDbPermissions.ts"],"sourcesContent":["/**\n * We need to attach Sync System Lambda policy to access DynamoDB in the Webiny system.\n */\nimport * as aws from \"@pulumi/aws\";\nimport type { PulumiApp } from \"@webiny/pulumi\";\nimport type { IGetSyncSystemOutputResult } from \"~/apps/syncSystem/types.js\";\nimport { createSyncResourceName } from \"~/apps/syncSystem/createSyncResourceName.js\";\nimport type { CoreOutput } from \"~/apps/common/CoreOutput.js\";\nimport type { WithServiceManifest } from \"~/utils/withServiceManifest.js\";\n\nexport interface IAttachDynamoDbPermissionsParams {\n app: PulumiApp & WithServiceManifest;\n syncSystem: IGetSyncSystemOutputResult;\n core: CoreOutput;\n}\n\nexport const attachDynamoDbPermissions = (params: IAttachDynamoDbPermissionsParams) => {\n const { app, syncSystem, core } = params;\n\n const { resolverLambdaRoleName } = syncSystem;\n\n const lambdaToDynamoDbResourceName = createSyncResourceName(`resolver-lambda-to-dynamodb`);\n\n const dynamoDbPolicy = app.addResource(aws.iam.Policy, {\n name: `${lambdaToDynamoDbResourceName}-policy`,\n config: {\n description: \"This policy enables access from Sync System Lambda to Webiny DynamoDB.\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForSyncLambdaToDynamoDb\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:BatchGetItem\",\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:ConditionCheckItem\",\n \"dynamodb:CreateBackup\",\n \"dynamodb:CreateTable\",\n \"dynamodb:CreateTableReplica\",\n \"dynamodb:DeleteBackup\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:DeleteTable\",\n \"dynamodb:DeleteTableReplica\",\n \"dynamodb:DescribeBackup\",\n \"dynamodb:DescribeContinuousBackups\",\n \"dynamodb:DescribeContributorInsights\",\n \"dynamodb:DescribeExport\",\n \"dynamodb:DescribeKinesisStreamingDestination\",\n \"dynamodb:DescribeLimits\",\n \"dynamodb:DescribeReservedCapacity\",\n \"dynamodb:DescribeReservedCapacityOfferings\",\n \"dynamodb:DescribeStream\",\n \"dynamodb:DescribeTable\",\n \"dynamodb:DescribeTableReplicaAutoScaling\",\n \"dynamodb:DescribeTimeToLive\",\n \"dynamodb:DisableKinesisStreamingDestination\",\n \"dynamodb:EnableKinesisStreamingDestination\",\n \"dynamodb:ExportTableToPointInTime\",\n \"dynamodb:GetItem\",\n \"dynamodb:GetRecords\",\n \"dynamodb:GetShardIterator\",\n \"dynamodb:ListBackups\",\n \"dynamodb:ListContributorInsights\",\n \"dynamodb:ListExports\",\n \"dynamodb:ListStreams\",\n \"dynamodb:ListTables\",\n \"dynamodb:ListTagsOfResource\",\n \"dynamodb:PartiQLDelete\",\n \"dynamodb:PartiQLInsert\",\n \"dynamodb:PartiQLSelect\",\n \"dynamodb:PartiQLUpdate\",\n \"dynamodb:PurchaseReservedCapacityOfferings\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:RestoreTableFromBackup\",\n \"dynamodb:RestoreTableToPointInTime\",\n \"dynamodb:Scan\",\n \"dynamodb:UpdateContinuousBackups\",\n \"dynamodb:UpdateContributorInsights\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:UpdateTable\",\n \"dynamodb:UpdateTableReplicaAutoScaling\",\n \"dynamodb:UpdateTimeToLive\"\n ],\n Resource: [\n core.primaryDynamodbTableArn.apply(arn => arn),\n core.primaryDynamodbTableArn.apply(arn => `${arn}/*`)\n ]\n }\n ]\n }\n }\n });\n\n const lambdaRolePolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${lambdaToDynamoDbResourceName}-role-policy-attachment`,\n config: {\n role: resolverLambdaRoleName,\n policyArn: dynamoDbPolicy.output.arn\n }\n });\n\n return {\n dynamoDbPolicy,\n lambdaRolePolicyAttachment\n };\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AAGA,IAAAC,uBAAA,GAAAD,OAAA;AANA;AACA;AACA;;AAcO,MAAME,yBAAyB,GAAIC,MAAwC,IAAK;EACnF,MAAM;IAAEC,GAAG;IAAEC,UAAU;IAAEC;EAAK,CAAC,GAAGH,MAAM;EAExC,MAAM;IAAEI;EAAuB,CAAC,GAAGF,UAAU;EAE7C,MAAMG,4BAA4B,GAAG,IAAAC,8CAAsB,EAAC,6BAA6B,CAAC;EAE1F,MAAMC,cAAc,GAAGN,GAAG,CAACO,WAAW,CAACb,GAAG,CAACc,GAAG,CAACC,MAAM,EAAE;IACnDC,IAAI,EAAE,GAAGN,4BAA4B,SAAS;IAC9CO,MAAM,EAAE;MACJC,WAAW,EAAE,wEAAwE;MACrFC,MAAM,EAAE;QACJC,OAAO,EAAE,YAAY;QACrBC,SAAS,EAAE,CACP;UACIC,GAAG,EAAE,mCAAmC;UACxCC,MAAM,EAAE,OAAO;UACfC,MAAM,EAAE,CACJ,uBAAuB,EACvB,yBAAyB,EACzB,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,EAC7B,yBAAyB,EACzB,oCAAoC,EACpC,sCAAsC,EACtC,yBAAyB,EACzB,8CAA8C,EAC9C,yBAAyB,EACzB,mCAAmC,EACnC,4CAA4C,EAC5C,yBAAyB,EACzB,wBAAwB,EACxB,0CAA0C,EAC1C,6BAA6B,EAC7B,6CAA6C,EAC7C,4CAA4C,EAC5C,mCAAmC,EACnC,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EACtB,kCAAkC,EAClC,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC7B,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,4CAA4C,EAC5C,kBAAkB,EAClB,gBAAgB,EAChB,iCAAiC,EACjC,oCAAoC,EACpC,eAAe,EACf,kCAAkC,EAClC,oCAAoC,EACpC,qBAAqB,EACrB,sBAAsB,EACtB,wCAAwC,EACxC,2BAA2B,CAC9B;UACDC,QAAQ,EAAE,CACNjB,IAAI,CAACkB,uBAAuB,CAACC,KAAK,CAACC,GAAG,IAAIA,GAAG,CAAC,EAC9CpB,IAAI,CAACkB,uBAAuB,CAACC,KAAK,CAACC,GAAG,IAAI,GAAGA,GAAG,IAAI,CAAC;QAE7D,CAAC;MAET;IACJ;EACJ,CAAC,CAAC;EAEF,MAAMC,0BAA0B,GAAGvB,GAAG,CAACO,WAAW,CAACb,GAAG,CAACc,GAAG,CAACgB,oBAAoB,EAAE;IAC7Ed,IAAI,EAAE,GAAGN,4BAA4B,yBAAyB;IAC9DO,MAAM,EAAE;MACJc,IAAI,EAAEtB,sBAAsB;MAC5BuB,SAAS,EAAEpB,cAAc,CAACqB,MAAM,CAACL;IACrC;EACJ,CAAC,CAAC;EAEF,OAAO;IACHhB,cAAc;IACdiB;EACJ,CAAC;AACL,CAAC;AAACK,OAAA,CAAA9B,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ import type { PulumiApp } from "@webiny/pulumi/types";
2
+ import type { IGetSyncSystemOutputResult } from "../types";
3
+ import type { WithServiceManifest } from "../../../utils/withServiceManifest.js";
4
+ export interface IAttachEventBusPermissionsParam {
5
+ app: PulumiApp & WithServiceManifest;
6
+ syncSystem: IGetSyncSystemOutputResult;
7
+ }
8
+ /**
9
+ * We need to attach the policy to:
10
+ * * GraphQL Lambda Role
11
+ * * File Manager Manage Lambda Role
12
+ * TODO determine if any other are required
13
+ */
14
+ export declare const attachEventBusPermissions: (params: IAttachEventBusPermissionsParam) => {
15
+ eventBridgePolicy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
16
+ graphQlPolicyAttachment: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/rolePolicyAttachment").RolePolicyAttachment>;
17
+ fileManagerManagePolicyAttachment: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/rolePolicyAttachment").RolePolicyAttachment>;
18
+ };
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.attachEventBusPermissions = void 0;
8
+ var aws = _interopRequireWildcard(require("@pulumi/aws"));
9
+ var _createSyncResourceName = require("../createSyncResourceName");
10
+ var _ApiGraphql = require("../../api/ApiGraphql.js");
11
+ var _ApiFileManager = require("../../api/ApiFileManager.js");
12
+ /**
13
+ * We need to attach the policy to:
14
+ * * GraphQL Lambda Role
15
+ * * File Manager Manage Lambda Role
16
+ * TODO determine if any other are required
17
+ */
18
+ const attachEventBusPermissions = params => {
19
+ const {
20
+ app,
21
+ syncSystem
22
+ } = params;
23
+ const {
24
+ eventBusArn
25
+ } = syncSystem;
26
+ const graphql = app.getModule(_ApiGraphql.ApiGraphql);
27
+ const fileManager = app.getModule(_ApiFileManager.ApiFileManager);
28
+ const lambdaToEventBridgeResourceName = (0, _createSyncResourceName.createSyncResourceName)(`lambda-to-event-bridge`);
29
+ const eventBridgePolicy = app.addResource(aws.iam.Policy, {
30
+ name: `${lambdaToEventBridgeResourceName}-policy`,
31
+ config: {
32
+ description: "This policy enables access from Webiny Lambdas to Sync System EventBridge.",
33
+ policy: {
34
+ Version: "2012-10-17",
35
+ Statement: [{
36
+ Sid: "PermissionForSyncLambdaToEventBridge",
37
+ Effect: "Allow",
38
+ Action: "events:PutEvents",
39
+ Resource: [eventBusArn]
40
+ }]
41
+ }
42
+ }
43
+ });
44
+ const graphQlPolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {
45
+ name: `${lambdaToEventBridgeResourceName}-graphql-role-policy-attachment`,
46
+ config: {
47
+ role: graphql.role.output.name,
48
+ policyArn: eventBridgePolicy.output.arn
49
+ }
50
+ });
51
+ const fileManagerManagePolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {
52
+ name: `${lambdaToEventBridgeResourceName}-fm-role-policy-attachment`,
53
+ config: {
54
+ role: fileManager.roles.manage.output.name,
55
+ policyArn: eventBridgePolicy.output.arn
56
+ }
57
+ });
58
+ return {
59
+ eventBridgePolicy,
60
+ graphQlPolicyAttachment,
61
+ fileManagerManagePolicyAttachment
62
+ };
63
+ };
64
+ exports.attachEventBusPermissions = attachEventBusPermissions;
65
+
66
+ //# sourceMappingURL=attachEventBusPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["aws","_interopRequireWildcard","require","_createSyncResourceName","_ApiGraphql","_ApiFileManager","attachEventBusPermissions","params","app","syncSystem","eventBusArn","graphql","getModule","ApiGraphql","fileManager","ApiFileManager","lambdaToEventBridgeResourceName","createSyncResourceName","eventBridgePolicy","addResource","iam","Policy","name","config","description","policy","Version","Statement","Sid","Effect","Action","Resource","graphQlPolicyAttachment","RolePolicyAttachment","role","output","policyArn","arn","fileManagerManagePolicyAttachment","roles","manage","exports"],"sources":["attachEventBusPermissions.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport type { PulumiApp } from \"@webiny/pulumi/types\";\nimport type { IGetSyncSystemOutputResult } from \"../types\";\nimport { createSyncResourceName } from \"../createSyncResourceName\";\nimport { ApiGraphql } from \"~/apps/api/ApiGraphql.js\";\nimport { ApiFileManager } from \"~/apps/api/ApiFileManager.js\";\nimport type { WithServiceManifest } from \"~/utils/withServiceManifest.js\";\n\nexport interface IAttachEventBusPermissionsParam {\n app: PulumiApp & WithServiceManifest;\n syncSystem: IGetSyncSystemOutputResult;\n}\n\n/**\n * We need to attach the policy to:\n * * GraphQL Lambda Role\n * * File Manager Manage Lambda Role\n * TODO determine if any other are required\n */\nexport const attachEventBusPermissions = (params: IAttachEventBusPermissionsParam) => {\n const { app, syncSystem } = params;\n\n const { eventBusArn } = syncSystem;\n\n const graphql = app.getModule(ApiGraphql);\n const fileManager = app.getModule(ApiFileManager);\n\n const lambdaToEventBridgeResourceName = createSyncResourceName(`lambda-to-event-bridge`);\n const eventBridgePolicy = app.addResource(aws.iam.Policy, {\n name: `${lambdaToEventBridgeResourceName}-policy`,\n config: {\n description:\n \"This policy enables access from Webiny Lambdas to Sync System EventBridge.\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForSyncLambdaToEventBridge\",\n Effect: \"Allow\",\n Action: \"events:PutEvents\",\n Resource: [eventBusArn]\n }\n ]\n }\n }\n });\n\n const graphQlPolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${lambdaToEventBridgeResourceName}-graphql-role-policy-attachment`,\n config: {\n role: graphql.role.output.name,\n policyArn: eventBridgePolicy.output.arn\n }\n });\n const fileManagerManagePolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${lambdaToEventBridgeResourceName}-fm-role-policy-attachment`,\n config: {\n role: fileManager.roles.manage.output.name,\n policyArn: eventBridgePolicy.output.arn\n }\n });\n\n return {\n eventBridgePolicy,\n graphQlPolicyAttachment,\n fileManagerManagePolicyAttachment\n };\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AAGA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMI,yBAAyB,GAAIC,MAAuC,IAAK;EAClF,MAAM;IAAEC,GAAG;IAAEC;EAAW,CAAC,GAAGF,MAAM;EAElC,MAAM;IAAEG;EAAY,CAAC,GAAGD,UAAU;EAElC,MAAME,OAAO,GAAGH,GAAG,CAACI,SAAS,CAACC,sBAAU,CAAC;EACzC,MAAMC,WAAW,GAAGN,GAAG,CAACI,SAAS,CAACG,8BAAc,CAAC;EAEjD,MAAMC,+BAA+B,GAAG,IAAAC,8CAAsB,EAAC,wBAAwB,CAAC;EACxF,MAAMC,iBAAiB,GAAGV,GAAG,CAACW,WAAW,CAACnB,GAAG,CAACoB,GAAG,CAACC,MAAM,EAAE;IACtDC,IAAI,EAAE,GAAGN,+BAA+B,SAAS;IACjDO,MAAM,EAAE;MACJC,WAAW,EACP,4EAA4E;MAChFC,MAAM,EAAE;QACJC,OAAO,EAAE,YAAY;QACrBC,SAAS,EAAE,CACP;UACIC,GAAG,EAAE,sCAAsC;UAC3CC,MAAM,EAAE,OAAO;UACfC,MAAM,EAAE,kBAAkB;UAC1BC,QAAQ,EAAE,CAACrB,WAAW;QAC1B,CAAC;MAET;IACJ;EACJ,CAAC,CAAC;EAEF,MAAMsB,uBAAuB,GAAGxB,GAAG,CAACW,WAAW,CAACnB,GAAG,CAACoB,GAAG,CAACa,oBAAoB,EAAE;IAC1EX,IAAI,EAAE,GAAGN,+BAA+B,iCAAiC;IACzEO,MAAM,EAAE;MACJW,IAAI,EAAEvB,OAAO,CAACuB,IAAI,CAACC,MAAM,CAACb,IAAI;MAC9Bc,SAAS,EAAElB,iBAAiB,CAACiB,MAAM,CAACE;IACxC;EACJ,CAAC,CAAC;EACF,MAAMC,iCAAiC,GAAG9B,GAAG,CAACW,WAAW,CAACnB,GAAG,CAACoB,GAAG,CAACa,oBAAoB,EAAE;IACpFX,IAAI,EAAE,GAAGN,+BAA+B,4BAA4B;IACpEO,MAAM,EAAE;MACJW,IAAI,EAAEpB,WAAW,CAACyB,KAAK,CAACC,MAAM,CAACL,MAAM,CAACb,IAAI;MAC1Cc,SAAS,EAAElB,iBAAiB,CAACiB,MAAM,CAACE;IACxC;EACJ,CAAC,CAAC;EAEF,OAAO;IACHnB,iBAAiB;IACjBc,uBAAuB;IACvBM;EACJ,CAAC;AACL,CAAC;AAACG,OAAA,CAAAnC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ import type { PulumiApp } from "@webiny/pulumi";
2
+ import type { IGetSyncSystemOutputResult } from "../types.js";
3
+ import type { CoreOutput } from "../../common/CoreOutput.js";
4
+ import type { WithServiceManifest } from "../../../utils/withServiceManifest.js";
5
+ export interface IAttachS3PermissionsParams {
6
+ app: PulumiApp & WithServiceManifest;
7
+ syncSystem: IGetSyncSystemOutputResult;
8
+ core: CoreOutput;
9
+ }
10
+ export declare const attachS3Permissions: (params: IAttachS3PermissionsParams) => {
11
+ s3Policy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
12
+ workerLambdaS3PolicyAttachment: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/rolePolicyAttachment").RolePolicyAttachment>;
13
+ resolverLambdaS3PolicyAttachment: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/rolePolicyAttachment").RolePolicyAttachment>;
14
+ };
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.attachS3Permissions = void 0;
8
+ var aws = _interopRequireWildcard(require("@pulumi/aws"));
9
+ var _createSyncResourceName = require("../createSyncResourceName.js");
10
+ const attachS3Permissions = params => {
11
+ const {
12
+ app,
13
+ syncSystem,
14
+ core
15
+ } = params;
16
+ const {
17
+ resolverLambdaRoleName,
18
+ workerLambdaRoleName
19
+ } = syncSystem;
20
+ const resolverLambdaToS3ResourceName = (0, _createSyncResourceName.createSyncResourceName)(`resolver-lambda-to-s3-fm`);
21
+ const workerLambdaToS3ResourceName = (0, _createSyncResourceName.createSyncResourceName)(`worker-lambda-to-s3-fm`);
22
+ const s3Policy = app.addResource(aws.iam.Policy, {
23
+ name: `${resolverLambdaToS3ResourceName}-policy`,
24
+ config: {
25
+ description: "This policy enables access from Sync System Resolver and Worker Lambda to Webiny S3.",
26
+ policy: {
27
+ Version: "2012-10-17",
28
+ Statement: [{
29
+ Sid: "PermissionForSyncLambdaToS3",
30
+ Effect: "Allow",
31
+ Action: ["s3:DeleteObject", "s3:PutObject", "s3:GetObject", "s3:ListBucket"],
32
+ Resource: [core.fileManagerBucketArn.apply(arn => arn), core.fileManagerBucketArn.apply(arn => `${arn}/*`)]
33
+ }]
34
+ }
35
+ }
36
+ });
37
+ const resolverLambdaS3PolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {
38
+ name: `${resolverLambdaToS3ResourceName}-policy-attachment`,
39
+ config: {
40
+ role: resolverLambdaRoleName,
41
+ policyArn: s3Policy.output.arn
42
+ }
43
+ });
44
+ const workerLambdaS3PolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {
45
+ name: `${workerLambdaToS3ResourceName}-policy-attachment`,
46
+ config: {
47
+ role: workerLambdaRoleName,
48
+ policyArn: s3Policy.output.arn
49
+ }
50
+ });
51
+ return {
52
+ s3Policy,
53
+ workerLambdaS3PolicyAttachment,
54
+ resolverLambdaS3PolicyAttachment
55
+ };
56
+ };
57
+ exports.attachS3Permissions = attachS3Permissions;
58
+
59
+ //# sourceMappingURL=attachS3Permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["aws","_interopRequireWildcard","require","_createSyncResourceName","attachS3Permissions","params","app","syncSystem","core","resolverLambdaRoleName","workerLambdaRoleName","resolverLambdaToS3ResourceName","createSyncResourceName","workerLambdaToS3ResourceName","s3Policy","addResource","iam","Policy","name","config","description","policy","Version","Statement","Sid","Effect","Action","Resource","fileManagerBucketArn","apply","arn","resolverLambdaS3PolicyAttachment","RolePolicyAttachment","role","policyArn","output","workerLambdaS3PolicyAttachment","exports"],"sources":["attachS3Permissions.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport type { PulumiApp } from \"@webiny/pulumi\";\nimport type { IGetSyncSystemOutputResult } from \"~/apps/syncSystem/types.js\";\nimport type { CoreOutput } from \"~/apps/common/CoreOutput.js\";\nimport { createSyncResourceName } from \"~/apps/syncSystem/createSyncResourceName.js\";\nimport type { WithServiceManifest } from \"~/utils/withServiceManifest.js\";\n\nexport interface IAttachS3PermissionsParams {\n app: PulumiApp & WithServiceManifest;\n syncSystem: IGetSyncSystemOutputResult;\n core: CoreOutput;\n}\n\nexport const attachS3Permissions = (params: IAttachS3PermissionsParams) => {\n const { app, syncSystem, core } = params;\n\n const { resolverLambdaRoleName, workerLambdaRoleName } = syncSystem;\n\n const resolverLambdaToS3ResourceName = createSyncResourceName(`resolver-lambda-to-s3-fm`);\n const workerLambdaToS3ResourceName = createSyncResourceName(`worker-lambda-to-s3-fm`);\n\n const s3Policy = app.addResource(aws.iam.Policy, {\n name: `${resolverLambdaToS3ResourceName}-policy`,\n config: {\n description:\n \"This policy enables access from Sync System Resolver and Worker Lambda to Webiny S3.\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForSyncLambdaToS3\",\n Effect: \"Allow\",\n Action: [\n \"s3:DeleteObject\",\n \"s3:PutObject\",\n \"s3:GetObject\",\n \"s3:ListBucket\"\n ],\n Resource: [\n core.fileManagerBucketArn.apply(arn => arn),\n core.fileManagerBucketArn.apply(arn => `${arn}/*`)\n ]\n }\n ]\n }\n }\n });\n\n const resolverLambdaS3PolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${resolverLambdaToS3ResourceName}-policy-attachment`,\n config: {\n role: resolverLambdaRoleName,\n policyArn: s3Policy.output.arn\n }\n });\n\n const workerLambdaS3PolicyAttachment = app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${workerLambdaToS3ResourceName}-policy-attachment`,\n config: {\n role: workerLambdaRoleName,\n policyArn: s3Policy.output.arn\n }\n });\n\n return {\n s3Policy,\n workerLambdaS3PolicyAttachment,\n resolverLambdaS3PolicyAttachment\n };\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AAIA,IAAAC,uBAAA,GAAAD,OAAA;AASO,MAAME,mBAAmB,GAAIC,MAAkC,IAAK;EACvE,MAAM;IAAEC,GAAG;IAAEC,UAAU;IAAEC;EAAK,CAAC,GAAGH,MAAM;EAExC,MAAM;IAAEI,sBAAsB;IAAEC;EAAqB,CAAC,GAAGH,UAAU;EAEnE,MAAMI,8BAA8B,GAAG,IAAAC,8CAAsB,EAAC,0BAA0B,CAAC;EACzF,MAAMC,4BAA4B,GAAG,IAAAD,8CAAsB,EAAC,wBAAwB,CAAC;EAErF,MAAME,QAAQ,GAAGR,GAAG,CAACS,WAAW,CAACf,GAAG,CAACgB,GAAG,CAACC,MAAM,EAAE;IAC7CC,IAAI,EAAE,GAAGP,8BAA8B,SAAS;IAChDQ,MAAM,EAAE;MACJC,WAAW,EACP,sFAAsF;MAC1FC,MAAM,EAAE;QACJC,OAAO,EAAE,YAAY;QACrBC,SAAS,EAAE,CACP;UACIC,GAAG,EAAE,6BAA6B;UAClCC,MAAM,EAAE,OAAO;UACfC,MAAM,EAAE,CACJ,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,CAClB;UACDC,QAAQ,EAAE,CACNnB,IAAI,CAACoB,oBAAoB,CAACC,KAAK,CAACC,GAAG,IAAIA,GAAG,CAAC,EAC3CtB,IAAI,CAACoB,oBAAoB,CAACC,KAAK,CAACC,GAAG,IAAI,GAAGA,GAAG,IAAI,CAAC;QAE1D,CAAC;MAET;IACJ;EACJ,CAAC,CAAC;EAEF,MAAMC,gCAAgC,GAAGzB,GAAG,CAACS,WAAW,CAACf,GAAG,CAACgB,GAAG,CAACgB,oBAAoB,EAAE;IACnFd,IAAI,EAAE,GAAGP,8BAA8B,oBAAoB;IAC3DQ,MAAM,EAAE;MACJc,IAAI,EAAExB,sBAAsB;MAC5ByB,SAAS,EAAEpB,QAAQ,CAACqB,MAAM,CAACL;IAC/B;EACJ,CAAC,CAAC;EAEF,MAAMM,8BAA8B,GAAG9B,GAAG,CAACS,WAAW,CAACf,GAAG,CAACgB,GAAG,CAACgB,oBAAoB,EAAE;IACjFd,IAAI,EAAE,GAAGL,4BAA4B,oBAAoB;IACzDM,MAAM,EAAE;MACJc,IAAI,EAAEvB,oBAAoB;MAC1BwB,SAAS,EAAEpB,QAAQ,CAACqB,MAAM,CAACL;IAC/B;EACJ,CAAC,CAAC;EAEF,OAAO;IACHhB,QAAQ;IACRsB,8BAA8B;IAC9BL;EACJ,CAAC;AACL,CAAC;AAACM,OAAA,CAAAjC,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import type { PulumiApp } from "@webiny/pulumi/types";
2
+ import type { CoreOutput } from "../../common/CoreOutput.js";
3
+ import type { WithServiceManifest } from "../../../utils/withServiceManifest.js";
4
+ export interface IAttachSyncSystemParams {
5
+ app: PulumiApp & WithServiceManifest;
6
+ env: string;
7
+ core: CoreOutput;
8
+ }
9
+ export declare const attachSyncSystem: (params: IAttachSyncSystemParams) => void;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.attachSyncSystem = void 0;
7
+ var _getSyncSystemOutput = require("../getSyncSystemOutput.js");
8
+ var _attachEventBusPermissions = require("./attachEventBusPermissions.js");
9
+ var _attachDynamoDbPermissions = require("./attachDynamoDbPermissions.js");
10
+ var _attachS3Permissions = require("./attachS3Permissions.js");
11
+ var _addServiceManifest = require("./addServiceManifest.js");
12
+ var _attachCognitoPermissions = require("./attachCognitoPermissions.js");
13
+ const attachSyncSystem = params => {
14
+ const {
15
+ app,
16
+ core,
17
+ env
18
+ } = params;
19
+ const syncSystem = (0, _getSyncSystemOutput.getSyncSystemOutput)({
20
+ env
21
+ });
22
+ /**
23
+ * Possibly no sync system deployed - no need to do anything at that point.
24
+ * At this point, if sync system was deployed, and it is not anymore, all resources after this check will disappear.
25
+ */
26
+ if (!syncSystem) {
27
+ console.log(`No Sync System deployed in env "${env}". Skipping...`);
28
+ return;
29
+ }
30
+ /**
31
+ * Permissions for Webiny system to access Sync System resources.
32
+ */
33
+ (0, _attachEventBusPermissions.attachEventBusPermissions)({
34
+ app,
35
+ syncSystem
36
+ });
37
+ /**
38
+ * Permissions for Sync System to access Webiny system resources.
39
+ */
40
+ (0, _attachCognitoPermissions.attachCognitoPermissions)({
41
+ app,
42
+ syncSystem,
43
+ core
44
+ });
45
+ (0, _attachDynamoDbPermissions.attachDynamoDbPermissions)({
46
+ app,
47
+ syncSystem,
48
+ core
49
+ });
50
+ (0, _attachS3Permissions.attachS3Permissions)({
51
+ app,
52
+ syncSystem,
53
+ core
54
+ });
55
+ /**
56
+ * Add the Service Manifest item to the Webiny system.
57
+ */
58
+ (0, _addServiceManifest.addServiceManifest)({
59
+ app,
60
+ syncSystem
61
+ });
62
+ };
63
+ exports.attachSyncSystem = attachSyncSystem;
64
+
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_getSyncSystemOutput","require","_attachEventBusPermissions","_attachDynamoDbPermissions","_attachS3Permissions","_addServiceManifest","_attachCognitoPermissions","attachSyncSystem","params","app","core","env","syncSystem","getSyncSystemOutput","console","log","attachEventBusPermissions","attachCognitoPermissions","attachDynamoDbPermissions","attachS3Permissions","addServiceManifest","exports"],"sources":["index.ts"],"sourcesContent":["import { getSyncSystemOutput } from \"~/apps/syncSystem/getSyncSystemOutput.js\";\nimport { attachEventBusPermissions } from \"./attachEventBusPermissions.js\";\nimport { attachDynamoDbPermissions } from \"~/apps/syncSystem/api/attachDynamoDbPermissions.js\";\nimport { attachS3Permissions } from \"~/apps/syncSystem/api/attachS3Permissions.js\";\nimport { addServiceManifest } from \"~/apps/syncSystem/api/addServiceManifest.js\";\nimport type { PulumiApp } from \"@webiny/pulumi/types\";\nimport type { CoreOutput } from \"~/apps/common/CoreOutput.js\";\nimport type { WithServiceManifest } from \"~/utils/withServiceManifest.js\";\nimport { attachCognitoPermissions } from \"~/apps/syncSystem/api/attachCognitoPermissions.js\";\n\nexport interface IAttachSyncSystemParams {\n app: PulumiApp & WithServiceManifest;\n env: string;\n core: CoreOutput;\n}\n\nexport const attachSyncSystem = (params: IAttachSyncSystemParams) => {\n const { app, core, env } = params;\n\n const syncSystem = getSyncSystemOutput({\n env\n });\n /**\n * Possibly no sync system deployed - no need to do anything at that point.\n * At this point, if sync system was deployed, and it is not anymore, all resources after this check will disappear.\n */\n if (!syncSystem) {\n console.log(`No Sync System deployed in env \"${env}\". Skipping...`);\n return;\n }\n /**\n * Permissions for Webiny system to access Sync System resources.\n */\n attachEventBusPermissions({\n app,\n syncSystem\n });\n /**\n * Permissions for Sync System to access Webiny system resources.\n */\n attachCognitoPermissions({\n app,\n syncSystem,\n core\n });\n attachDynamoDbPermissions({\n app,\n syncSystem,\n core\n });\n attachS3Permissions({\n app,\n syncSystem,\n core\n });\n /**\n * Add the Service Manifest item to the Webiny system.\n */\n addServiceManifest({\n app,\n syncSystem\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA;AACA,IAAAE,0BAAA,GAAAF,OAAA;AACA,IAAAG,oBAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AAIA,IAAAK,yBAAA,GAAAL,OAAA;AAQO,MAAMM,gBAAgB,GAAIC,MAA+B,IAAK;EACjE,MAAM;IAAEC,GAAG;IAAEC,IAAI;IAAEC;EAAI,CAAC,GAAGH,MAAM;EAEjC,MAAMI,UAAU,GAAG,IAAAC,wCAAmB,EAAC;IACnCF;EACJ,CAAC,CAAC;EACF;AACJ;AACA;AACA;EACI,IAAI,CAACC,UAAU,EAAE;IACbE,OAAO,CAACC,GAAG,CAAC,mCAAmCJ,GAAG,gBAAgB,CAAC;IACnE;EACJ;EACA;AACJ;AACA;EACI,IAAAK,oDAAyB,EAAC;IACtBP,GAAG;IACHG;EACJ,CAAC,CAAC;EACF;AACJ;AACA;EACI,IAAAK,kDAAwB,EAAC;IACrBR,GAAG;IACHG,UAAU;IACVF;EACJ,CAAC,CAAC;EACF,IAAAQ,oDAAyB,EAAC;IACtBT,GAAG;IACHG,UAAU;IACVF;EACJ,CAAC,CAAC;EACF,IAAAS,wCAAmB,EAAC;IAChBV,GAAG;IACHG,UAAU;IACVF;EACJ,CAAC,CAAC;EACF;AACJ;AACA;EACI,IAAAU,sCAAkB,EAAC;IACfX,GAAG;IACHG;EACJ,CAAC,CAAC;AACN,CAAC;AAACS,OAAA,CAAAd,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const APPS_SYNC_SYSTEM_PATH = "apps/sync";
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.APPS_SYNC_SYSTEM_PATH = void 0;
7
+ const APPS_SYNC_SYSTEM_PATH = exports.APPS_SYNC_SYSTEM_PATH = "apps/sync";
8
+
9
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["APPS_SYNC_SYSTEM_PATH","exports"],"sources":["constants.ts"],"sourcesContent":["export const APPS_SYNC_SYSTEM_PATH = \"apps/sync\";\n"],"mappings":";;;;;;AAAO,MAAMA,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAG,WAAW","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Need to have standardized resource names.
3
+ */
4
+ export declare const createSyncResourceName: (name: string) => string;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createSyncResourceName = void 0;
8
+ var _kebabCase = _interopRequireDefault(require("lodash/kebabCase"));
9
+ /**
10
+ * Need to have standardized resource names.
11
+ */
12
+ const createSyncResourceName = name => {
13
+ return `sync-system-${(0, _kebabCase.default)(name)}`;
14
+ };
15
+ exports.createSyncResourceName = createSyncResourceName;
16
+
17
+ //# sourceMappingURL=createSyncResourceName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_kebabCase","_interopRequireDefault","require","createSyncResourceName","name","kebabCase","exports"],"sources":["createSyncResourceName.ts"],"sourcesContent":["import kebabCase from \"lodash/kebabCase\";\n\n/**\n * Need to have standardized resource names.\n */\nexport const createSyncResourceName = (name: string) => {\n return `sync-system-${kebabCase(name)}`;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA;AACA;AACA;AACO,MAAMC,sBAAsB,GAAIC,IAAY,IAAK;EACpD,OAAO,eAAe,IAAAC,kBAAS,EAACD,IAAI,CAAC,EAAE;AAC3C,CAAC;AAACE,OAAA,CAAAH,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -1,4 +1,5 @@
1
- import { PulumiAppParam } from "@webiny/pulumi";
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import type { PulumiAppParam } from "@webiny/pulumi";
2
3
  export type SyncSystemPulumiApp = ReturnType<typeof createSyncSystemPulumiApp>;
3
4
  export interface ElasticsearchConfig {
4
5
  domainName: string;
@@ -47,17 +48,25 @@ export interface CreateSyncSystemPulumiAppParams {
47
48
  */
48
49
  productionEnvironments?: PulumiAppParam<string[]>;
49
50
  }
50
- export declare function createSyncSystemPulumiApp(projectAppParams?: CreateSyncSystemPulumiAppParams): import("@webiny/pulumi").PulumiApp<{
51
+ export declare function createSyncSystemPulumiApp(projectAppParams: CreateSyncSystemPulumiAppParams): import("@webiny/pulumi").PulumiApp<{
52
+ sqs: pulumi.Output<import("@pulumi/aws/sqs/queue.js").Queue>;
53
+ dynamoDb: pulumi.Output<import("@pulumi/aws/dynamodb/table.js").Table>;
54
+ eventBus: pulumi.Output<import("@pulumi/aws/cloudwatch/eventBus.js").EventBus>;
55
+ eventBusRule: pulumi.Output<import("@pulumi/aws/cloudwatch/eventRule.js").EventRule>;
56
+ eventBusTarget: pulumi.Output<import("@pulumi/aws/cloudwatch/eventTarget.js").EventTarget>;
57
+ eventBusPolicy: pulumi.Output<import("@pulumi/aws/sqs/queuePolicy.js").QueuePolicy>;
51
58
  /**
52
- * Sync System resources.
59
+ * Worker Lambda - used to resolve actions triggered by the resolver Lambda.
53
60
  */
54
- dynamodbTable: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/dynamodb/table").Table>;
55
- dynamodbTableArn: import("@pulumi/pulumi").Output<string>;
56
- dynamodbTableName: import("@pulumi/pulumi").Output<string>;
57
- dynamodbTableHashKey: import("@pulumi/pulumi").Output<string>;
58
- dynamodbTableRangeKey: import("@pulumi/pulumi").Output<string | undefined>;
59
- sqs: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/sqs/queue").Queue>;
60
- sqsArn: import("@pulumi/pulumi").Output<string>;
61
+ workerLambda: pulumi.Output<import("@pulumi/aws/lambda/function.js").Function>;
62
+ workerLambdaRole: pulumi.Output<import("@pulumi/aws/iam/role.js").Role>;
63
+ /**
64
+ * Resolver Lambda - gets hit by SQS and resolves the data.
65
+ */
66
+ resolverLambda: pulumi.Output<import("@pulumi/aws/lambda/function.js").Function>;
67
+ resolverLambdaRole: pulumi.Output<import("@pulumi/aws/iam/role.js").Role>;
68
+ resolverLambdaPolicy: pulumi.Output<import("@pulumi/aws/iam/policy.js").Policy>;
69
+ resolverLambdaEventSourceMapping: pulumi.Output<import("@pulumi/aws/lambda/eventSourceMapping.js").EventSourceMapping>;
61
70
  /**
62
71
  * Systems we are connecting together.
63
72
  */