@webiny/project-aws 6.3.0 → 6.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/_templates/appTemplates/admin/src/index.tsx +0 -3
  2. package/abstractions/ApiGqlClient.js +2 -1
  3. package/abstractions/ApiGqlClient.js.map +1 -1
  4. package/abstractions/InvokeLambdaFunction.js +2 -1
  5. package/abstractions/InvokeLambdaFunction.js.map +1 -1
  6. package/abstractions/features/pulumi/AdminPulumi.js +2 -1
  7. package/abstractions/features/pulumi/AdminPulumi.js.map +1 -1
  8. package/abstractions/features/pulumi/ApiPulumi.js +2 -1
  9. package/abstractions/features/pulumi/ApiPulumi.js.map +1 -1
  10. package/abstractions/features/pulumi/CorePulumi.js +2 -1
  11. package/abstractions/features/pulumi/CorePulumi.js.map +1 -1
  12. package/abstractions/features/pulumi/index.js +0 -2
  13. package/abstractions/index.js +0 -2
  14. package/abstractions/services/AdminStackOutputService.js +2 -1
  15. package/abstractions/services/AdminStackOutputService.js.map +1 -1
  16. package/abstractions/services/ApiStackOutputService.js +2 -1
  17. package/abstractions/services/ApiStackOutputService.js.map +1 -1
  18. package/abstractions/services/CoreStackOutputService.js +2 -1
  19. package/abstractions/services/CoreStackOutputService.js.map +1 -1
  20. package/admin.js +5 -4
  21. package/admin.js.map +1 -1
  22. package/api.js +13 -12
  23. package/api.js.map +1 -1
  24. package/apps/createAdminApp.js +11 -12
  25. package/apps/createAdminApp.js.map +1 -1
  26. package/apps/createAdminAppConfig.js +12 -18
  27. package/apps/createAdminAppConfig.js.map +1 -1
  28. package/apps/createApiApp.js +17 -22
  29. package/apps/createApiApp.js.map +1 -1
  30. package/apps/createBlueGreenApp.js +13 -16
  31. package/apps/createBlueGreenApp.js.map +1 -1
  32. package/apps/createCoreApp.js +12 -13
  33. package/apps/createCoreApp.js.map +1 -1
  34. package/apps/createReactAppConfig.d.ts +0 -7
  35. package/apps/createReactAppConfig.js +56 -69
  36. package/apps/createReactAppConfig.js.map +1 -1
  37. package/apps/createSyncSystemApp.js +8 -7
  38. package/apps/createSyncSystemApp.js.map +1 -1
  39. package/apps/index.js +0 -2
  40. package/cli.js +3 -2
  41. package/cli.js.map +1 -1
  42. package/exports/extensions.js +0 -2
  43. package/exports/infra/admin.js +0 -2
  44. package/exports/infra/api.js +0 -2
  45. package/exports/infra/core.js +0 -2
  46. package/exports/infra.js +1 -3
  47. package/extensions/ApiLambdaFunction.js +45 -56
  48. package/extensions/ApiLambdaFunction.js.map +1 -1
  49. package/extensions/ApiRoute.js +90 -104
  50. package/extensions/ApiRoute.js.map +1 -1
  51. package/extensions/AwsDefaultRegion.js +17 -16
  52. package/extensions/AwsDefaultRegion.js.map +1 -1
  53. package/extensions/Cms/ModelFieldCompression.js +16 -15
  54. package/extensions/Cms/ModelFieldCompression.js.map +1 -1
  55. package/extensions/Encryption.js +30 -29
  56. package/extensions/Encryption.js.map +1 -1
  57. package/extensions/Mailer/Smtp.js +15 -14
  58. package/extensions/Mailer/Smtp.js.map +1 -1
  59. package/extensions/Mailer/Smtp.test.js +117 -131
  60. package/extensions/Mailer/Smtp.test.js.map +1 -1
  61. package/extensions/Mailer/SmtpParamsSchema.js +11 -14
  62. package/extensions/Mailer/SmtpParamsSchema.js.map +1 -1
  63. package/extensions/OpenSearch/EnsureOsServiceRoleBeforeCoreDeploy.js +25 -30
  64. package/extensions/OpenSearch/EnsureOsServiceRoleBeforeCoreDeploy.js.map +1 -1
  65. package/extensions/OpenSearch/EnsureOsWasDeployed.js +14 -24
  66. package/extensions/OpenSearch/EnsureOsWasDeployed.js.map +1 -1
  67. package/extensions/OpenSearch/InjectDdbEsLambdaFnHandler.js +25 -21
  68. package/extensions/OpenSearch/InjectDdbEsLambdaFnHandler.js.map +1 -1
  69. package/extensions/OpenSearch/ReplaceApiLambdaFnHandlers.js +26 -22
  70. package/extensions/OpenSearch/ReplaceApiLambdaFnHandlers.js.map +1 -1
  71. package/extensions/OpenSearch.js +30 -31
  72. package/extensions/OpenSearch.js.map +1 -1
  73. package/extensions/ProjectAws/AdminStackOutputService.js +0 -2
  74. package/extensions/ProjectAws/ApiStackOutputService.js +0 -2
  75. package/extensions/ProjectAws/AutoInstall/AutoInstallAfterApiDeploy.js +65 -74
  76. package/extensions/ProjectAws/AutoInstall/AutoInstallAfterApiDeploy.js.map +1 -1
  77. package/extensions/ProjectAws/AutoInstall.js +15 -14
  78. package/extensions/ProjectAws/AutoInstall.js.map +1 -1
  79. package/extensions/ProjectAws/BlueGreenDeployments/EnsureVariantBeforeDeploy.js +15 -19
  80. package/extensions/ProjectAws/BlueGreenDeployments/EnsureVariantBeforeDeploy.js.map +1 -1
  81. package/extensions/ProjectAws/BlueGreenDeployments/PrintDeploymentInfoAfterDeploy.js +56 -45
  82. package/extensions/ProjectAws/BlueGreenDeployments/PrintDeploymentInfoAfterDeploy.js.map +1 -1
  83. package/extensions/ProjectAws/BlueGreenDeployments/SetPrimaryVariantCliCommand.js +57 -55
  84. package/extensions/ProjectAws/BlueGreenDeployments/SetPrimaryVariantCliCommand.js.map +1 -1
  85. package/extensions/ProjectAws/BuildAppWorkspace.js +49 -54
  86. package/extensions/ProjectAws/BuildAppWorkspace.js.map +1 -1
  87. package/extensions/ProjectAws/CoreStackOutputService.js +0 -2
  88. package/extensions/ProjectAws/EnsureAwsCredentialsBeforeDeploy.js +26 -30
  89. package/extensions/ProjectAws/EnsureAwsCredentialsBeforeDeploy.js.map +1 -1
  90. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVars.js +25 -38
  91. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVars.js.map +1 -1
  92. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeBuild.js +22 -17
  93. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeBuild.js.map +1 -1
  94. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeWatch.js +22 -17
  95. package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeWatch.js.map +1 -1
  96. package/extensions/ProjectAws/SetDatabaseSetupOutput.js +20 -21
  97. package/extensions/ProjectAws/SetDatabaseSetupOutput.js.map +1 -1
  98. package/extensions/ProjectAws/UploadAdminAppToS3.js +53 -58
  99. package/extensions/ProjectAws/UploadAdminAppToS3.js.map +1 -1
  100. package/extensions/ProjectAws/definitions.js +13 -6
  101. package/extensions/ProjectAws/definitions.js.map +1 -1
  102. package/extensions/ProjectAws.js +44 -45
  103. package/extensions/ProjectAws.js.map +1 -1
  104. package/extensions/RegisterRoutesPulumi.js +24 -29
  105. package/extensions/RegisterRoutesPulumi.js.map +1 -1
  106. package/extensions/definitions.js +10 -3
  107. package/extensions/definitions.js.map +1 -1
  108. package/extensions/index.js +0 -2
  109. package/features/ApiGqlClient.js +46 -51
  110. package/features/ApiGqlClient.js.map +1 -1
  111. package/features/InvokeLambdaFunction.js +30 -32
  112. package/features/InvokeLambdaFunction.js.map +1 -1
  113. package/features/index.js +0 -2
  114. package/index.js +0 -2
  115. package/infra.js +57 -59
  116. package/infra.js.map +1 -1
  117. package/package.json +14 -14
  118. package/project.js +7 -6
  119. package/project.js.map +1 -1
  120. package/pulumi/apps/admin/createAdminPulumiApp.js +36 -44
  121. package/pulumi/apps/admin/createAdminPulumiApp.js.map +1 -1
  122. package/pulumi/apps/admin/index.js +0 -2
  123. package/pulumi/apps/api/ApiBackgroundTask.js +153 -137
  124. package/pulumi/apps/api/ApiBackgroundTask.js.map +1 -1
  125. package/pulumi/apps/api/ApiCloudfront.js +188 -130
  126. package/pulumi/apps/api/ApiCloudfront.js.map +1 -1
  127. package/pulumi/apps/api/ApiFileManager.js +34 -33
  128. package/pulumi/apps/api/ApiFileManager.js.map +1 -1
  129. package/pulumi/apps/api/ApiGateway.js +67 -74
  130. package/pulumi/apps/api/ApiGateway.js.map +1 -1
  131. package/pulumi/apps/api/ApiGraphql.js +223 -152
  132. package/pulumi/apps/api/ApiGraphql.js.map +1 -1
  133. package/pulumi/apps/api/ApiOutput.js +29 -30
  134. package/pulumi/apps/api/ApiOutput.js.map +1 -1
  135. package/pulumi/apps/api/ApiScheduler.js +94 -92
  136. package/pulumi/apps/api/ApiScheduler.js.map +1 -1
  137. package/pulumi/apps/api/ApiWebsocket.js +141 -133
  138. package/pulumi/apps/api/ApiWebsocket.js.map +1 -1
  139. package/pulumi/apps/api/backgroundTask/definition.js +122 -144
  140. package/pulumi/apps/api/backgroundTask/definition.js.map +1 -1
  141. package/pulumi/apps/api/backgroundTask/policy.js +37 -23
  142. package/pulumi/apps/api/backgroundTask/policy.js.map +1 -1
  143. package/pulumi/apps/api/backgroundTask/role.js +29 -29
  144. package/pulumi/apps/api/backgroundTask/role.js.map +1 -1
  145. package/pulumi/apps/api/backgroundTask/types.js +9 -11
  146. package/pulumi/apps/api/backgroundTask/types.js.map +1 -1
  147. package/pulumi/apps/api/createApiPulumiApp.js +206 -274
  148. package/pulumi/apps/api/createApiPulumiApp.js.map +1 -1
  149. package/pulumi/apps/api/handleGuardDutyEvents.js +54 -51
  150. package/pulumi/apps/api/handleGuardDutyEvents.js.map +1 -1
  151. package/pulumi/apps/api/index.js +0 -2
  152. package/pulumi/apps/awsUtils.js +21 -24
  153. package/pulumi/apps/awsUtils.js.map +1 -1
  154. package/pulumi/apps/blueGreen/BlueGreenRouterApiGateway.js +37 -40
  155. package/pulumi/apps/blueGreen/BlueGreenRouterApiGateway.js.map +1 -1
  156. package/pulumi/apps/blueGreen/BlueGreenRouterCloudFront.js +83 -91
  157. package/pulumi/apps/blueGreen/BlueGreenRouterCloudFront.js.map +1 -1
  158. package/pulumi/apps/blueGreen/BlueGreenRouterCloudFrontStore.js +17 -16
  159. package/pulumi/apps/blueGreen/BlueGreenRouterCloudFrontStore.js.map +1 -1
  160. package/pulumi/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js +13 -12
  161. package/pulumi/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js.map +1 -1
  162. package/pulumi/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js +9 -14
  163. package/pulumi/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js.map +1 -1
  164. package/pulumi/apps/blueGreen/cloudfront/createOriginId.js +5 -7
  165. package/pulumi/apps/blueGreen/cloudfront/createOriginId.js.map +1 -1
  166. package/pulumi/apps/blueGreen/constants.js +15 -3
  167. package/pulumi/apps/blueGreen/constants.js.map +1 -1
  168. package/pulumi/apps/blueGreen/createBlueGreenPulumiApp.js +77 -103
  169. package/pulumi/apps/blueGreen/createBlueGreenPulumiApp.js.map +1 -1
  170. package/pulumi/apps/blueGreen/domains/attachDomainsToOutput.js +20 -26
  171. package/pulumi/apps/blueGreen/domains/attachDomainsToOutput.js.map +1 -1
  172. package/pulumi/apps/blueGreen/domains/convertApplicationDomains.js +17 -20
  173. package/pulumi/apps/blueGreen/domains/convertApplicationDomains.js.map +1 -1
  174. package/pulumi/apps/blueGreen/domains/getApplicationDomains.js +51 -61
  175. package/pulumi/apps/blueGreen/domains/getApplicationDomains.js.map +1 -1
  176. package/pulumi/apps/blueGreen/domains/resolveDomains.js +24 -38
  177. package/pulumi/apps/blueGreen/domains/resolveDomains.js.map +1 -1
  178. package/pulumi/apps/blueGreen/functions/buildHandlerFunction.js +7 -14
  179. package/pulumi/apps/blueGreen/functions/buildHandlerFunction.js.map +1 -1
  180. package/pulumi/apps/blueGreen/functions/handler.js +1 -57
  181. package/pulumi/apps/blueGreen/functions/handler.js.map +1 -1
  182. package/pulumi/apps/blueGreen/types.js +0 -3
  183. package/pulumi/apps/blueGreen/validation/validateDeployments.js +19 -24
  184. package/pulumi/apps/blueGreen/validation/validateDeployments.js.map +1 -1
  185. package/pulumi/apps/common/CoreOutput.js +34 -37
  186. package/pulumi/apps/common/CoreOutput.js.map +1 -1
  187. package/pulumi/apps/common/VpcConfig.js +20 -20
  188. package/pulumi/apps/common/VpcConfig.js.map +1 -1
  189. package/pulumi/apps/common/index.js +0 -2
  190. package/pulumi/apps/core/CoreAuditLogsDynamo.js +245 -182
  191. package/pulumi/apps/core/CoreAuditLogsDynamo.js.map +1 -1
  192. package/pulumi/apps/core/CoreCognito.js +117 -106
  193. package/pulumi/apps/core/CoreCognito.js.map +1 -1
  194. package/pulumi/apps/core/CoreDynamo.js +91 -70
  195. package/pulumi/apps/core/CoreDynamo.js.map +1 -1
  196. package/pulumi/apps/core/CoreEventBus.js +10 -9
  197. package/pulumi/apps/core/CoreEventBus.js.map +1 -1
  198. package/pulumi/apps/core/CoreFileManager.js +76 -68
  199. package/pulumi/apps/core/CoreFileManager.js.map +1 -1
  200. package/pulumi/apps/core/CoreOpenSearch.js +281 -305
  201. package/pulumi/apps/core/CoreOpenSearch.js.map +1 -1
  202. package/pulumi/apps/core/CoreVpc.js +155 -156
  203. package/pulumi/apps/core/CoreVpc.js.map +1 -1
  204. package/pulumi/apps/core/WatchCommand.js +94 -96
  205. package/pulumi/apps/core/WatchCommand.js.map +1 -1
  206. package/pulumi/apps/core/cognitoIdentityProviders/amazon.js +16 -22
  207. package/pulumi/apps/core/cognitoIdentityProviders/amazon.js.map +1 -1
  208. package/pulumi/apps/core/cognitoIdentityProviders/apple.js +16 -17
  209. package/pulumi/apps/core/cognitoIdentityProviders/apple.js.map +1 -1
  210. package/pulumi/apps/core/cognitoIdentityProviders/configure.js +44 -50
  211. package/pulumi/apps/core/cognitoIdentityProviders/configure.js.map +1 -1
  212. package/pulumi/apps/core/cognitoIdentityProviders/facebook.js +16 -17
  213. package/pulumi/apps/core/cognitoIdentityProviders/facebook.js.map +1 -1
  214. package/pulumi/apps/core/cognitoIdentityProviders/getIdpConfig.js +7 -8
  215. package/pulumi/apps/core/cognitoIdentityProviders/getIdpConfig.js.map +1 -1
  216. package/pulumi/apps/core/cognitoIdentityProviders/google.js +16 -17
  217. package/pulumi/apps/core/cognitoIdentityProviders/google.js.map +1 -1
  218. package/pulumi/apps/core/cognitoIdentityProviders/index.js +0 -2
  219. package/pulumi/apps/core/cognitoIdentityProviders/oidc.js +17 -18
  220. package/pulumi/apps/core/cognitoIdentityProviders/oidc.js.map +1 -1
  221. package/pulumi/apps/core/configureS3BucketMalwareProtection.js +251 -188
  222. package/pulumi/apps/core/configureS3BucketMalwareProtection.js.map +1 -1
  223. package/pulumi/apps/core/createCorePulumiApp.js +212 -280
  224. package/pulumi/apps/core/createCorePulumiApp.js.map +1 -1
  225. package/pulumi/apps/core/index.js +0 -2
  226. package/pulumi/apps/core/webinyWatchCommand/handler.js +45 -32
  227. package/pulumi/apps/core/webinyWatchCommand/handler.js.map +1 -1
  228. package/pulumi/apps/createAppBucket.js +157 -146
  229. package/pulumi/apps/createAppBucket.js.map +1 -1
  230. package/pulumi/apps/customDomain.js +7 -6
  231. package/pulumi/apps/customDomain.js.map +1 -1
  232. package/pulumi/apps/extensions/getAwsTagsFromExtension.js +8 -7
  233. package/pulumi/apps/extensions/getAwsTagsFromExtension.js.map +1 -1
  234. package/pulumi/apps/extensions/getBgDeploymentsConfigFromExtension.js +6 -7
  235. package/pulumi/apps/extensions/getBgDeploymentsConfigFromExtension.js.map +1 -1
  236. package/pulumi/apps/extensions/getOsConfigFromExtension.js +17 -41
  237. package/pulumi/apps/extensions/getOsConfigFromExtension.js.map +1 -1
  238. package/pulumi/apps/extensions/getVpcConfigFromExtension.js +13 -25
  239. package/pulumi/apps/extensions/getVpcConfigFromExtension.js.map +1 -1
  240. package/pulumi/apps/index.js +0 -3
  241. package/pulumi/apps/lambdaUtils.js +57 -61
  242. package/pulumi/apps/lambdaUtils.js.map +1 -1
  243. package/pulumi/apps/react/createReactPulumiApp.js +108 -129
  244. package/pulumi/apps/react/createReactPulumiApp.js.map +1 -1
  245. package/pulumi/apps/react/index.js +0 -2
  246. package/pulumi/apps/syncSystem/SyncSystemDynamo.js +77 -62
  247. package/pulumi/apps/syncSystem/SyncSystemDynamo.js.map +1 -1
  248. package/pulumi/apps/syncSystem/SyncSystemDynamoDb.js +74 -57
  249. package/pulumi/apps/syncSystem/SyncSystemDynamoDb.js.map +1 -1
  250. package/pulumi/apps/syncSystem/SyncSystemEventBus.js +77 -71
  251. package/pulumi/apps/syncSystem/SyncSystemEventBus.js.map +1 -1
  252. package/pulumi/apps/syncSystem/SyncSystemLambda.js +154 -86
  253. package/pulumi/apps/syncSystem/SyncSystemLambda.js.map +1 -1
  254. package/pulumi/apps/syncSystem/SyncSystemOutput.js +14 -13
  255. package/pulumi/apps/syncSystem/SyncSystemOutput.js.map +1 -1
  256. package/pulumi/apps/syncSystem/SyncSystemResolverLambda.js +56 -60
  257. package/pulumi/apps/syncSystem/SyncSystemResolverLambda.js.map +1 -1
  258. package/pulumi/apps/syncSystem/SyncSystemSQS.js +25 -49
  259. package/pulumi/apps/syncSystem/SyncSystemSQS.js.map +1 -1
  260. package/pulumi/apps/syncSystem/SyncSystemWorkerLambda.js +44 -43
  261. package/pulumi/apps/syncSystem/SyncSystemWorkerLambda.js.map +1 -1
  262. package/pulumi/apps/syncSystem/addTableItems.js +35 -45
  263. package/pulumi/apps/syncSystem/addTableItems.js.map +1 -1
  264. package/pulumi/apps/syncSystem/api/addServiceManifest.js +12 -14
  265. package/pulumi/apps/syncSystem/api/addServiceManifest.js.map +1 -1
  266. package/pulumi/apps/syncSystem/api/attachCognitoPermissions.js +49 -55
  267. package/pulumi/apps/syncSystem/api/attachCognitoPermissions.js.map +1 -1
  268. package/pulumi/apps/syncSystem/api/attachDynamoDbPermissions.js +88 -40
  269. package/pulumi/apps/syncSystem/api/attachDynamoDbPermissions.js.map +1 -1
  270. package/pulumi/apps/syncSystem/api/attachEventBusPermissions.js +37 -43
  271. package/pulumi/apps/syncSystem/api/attachEventBusPermissions.js.map +1 -1
  272. package/pulumi/apps/syncSystem/api/attachS3Permissions.js +51 -47
  273. package/pulumi/apps/syncSystem/api/attachS3Permissions.js.map +1 -1
  274. package/pulumi/apps/syncSystem/api/index.js +28 -46
  275. package/pulumi/apps/syncSystem/api/index.js.map +1 -1
  276. package/pulumi/apps/syncSystem/constants.js +2 -1
  277. package/pulumi/apps/syncSystem/constants.js.map +1 -1
  278. package/pulumi/apps/syncSystem/createSyncResourceName.js +2 -7
  279. package/pulumi/apps/syncSystem/createSyncResourceName.js.map +1 -1
  280. package/pulumi/apps/syncSystem/createSyncSystemPulumiApp.js +101 -166
  281. package/pulumi/apps/syncSystem/createSyncSystemPulumiApp.js.map +1 -1
  282. package/pulumi/apps/syncSystem/customApp.js +12 -16
  283. package/pulumi/apps/syncSystem/customApp.js.map +1 -1
  284. package/pulumi/apps/syncSystem/getSyncSystemOutput.js +5 -6
  285. package/pulumi/apps/syncSystem/getSyncSystemOutput.js.map +1 -1
  286. package/pulumi/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.js +108 -42
  287. package/pulumi/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.js.map +1 -1
  288. package/pulumi/apps/syncSystem/types.js +0 -3
  289. package/pulumi/constants.js +2 -1
  290. package/pulumi/constants.js.map +1 -1
  291. package/pulumi/env/awsRegion.js +3 -2
  292. package/pulumi/env/awsRegion.js.map +1 -1
  293. package/pulumi/env/base.js +11 -27
  294. package/pulumi/env/base.js.map +1 -1
  295. package/pulumi/env/env.js +3 -2
  296. package/pulumi/env/env.js.map +1 -1
  297. package/pulumi/env/projectName.js +3 -2
  298. package/pulumi/env/projectName.js.map +1 -1
  299. package/pulumi/env/variant.js +4 -3
  300. package/pulumi/env/variant.js.map +1 -1
  301. package/pulumi/extensions/AdminCustomDomains.js +15 -11
  302. package/pulumi/extensions/AdminCustomDomains.js.map +1 -1
  303. package/pulumi/extensions/AdminPulumi.js +16 -19
  304. package/pulumi/extensions/AdminPulumi.js.map +1 -1
  305. package/pulumi/extensions/ApiCustomDomains.js +15 -11
  306. package/pulumi/extensions/ApiCustomDomains.js.map +1 -1
  307. package/pulumi/extensions/ApiPulumi.js +16 -19
  308. package/pulumi/extensions/ApiPulumi.js.map +1 -1
  309. package/pulumi/extensions/AwsTags.js +11 -10
  310. package/pulumi/extensions/AwsTags.js.map +1 -1
  311. package/pulumi/extensions/BlueGreenDeployments.js +29 -26
  312. package/pulumi/extensions/BlueGreenDeployments.js.map +1 -1
  313. package/pulumi/extensions/CorePulumi.js +16 -19
  314. package/pulumi/extensions/CorePulumi.js.map +1 -1
  315. package/pulumi/extensions/OpenSearch.js +16 -15
  316. package/pulumi/extensions/OpenSearch.js.map +1 -1
  317. package/pulumi/extensions/Vpc.js +21 -20
  318. package/pulumi/extensions/Vpc.js.map +1 -1
  319. package/pulumi/extensions/index.js +12 -10
  320. package/pulumi/extensions/index.js.map +1 -1
  321. package/pulumi/features/AdminPulumi/AdminPulumi.js +18 -14
  322. package/pulumi/features/AdminPulumi/AdminPulumi.js.map +1 -1
  323. package/pulumi/features/AdminPulumi/index.js +0 -2
  324. package/pulumi/features/ApiPulumi/ApiPulumi.js +18 -14
  325. package/pulumi/features/ApiPulumi/ApiPulumi.js.map +1 -1
  326. package/pulumi/features/ApiPulumi/index.js +0 -2
  327. package/pulumi/features/CorePulumi/CorePulumi.js +18 -14
  328. package/pulumi/features/CorePulumi/CorePulumi.js.map +1 -1
  329. package/pulumi/features/CorePulumi/index.js +0 -2
  330. package/pulumi/features/index.js +0 -2
  331. package/pulumi/index.js +0 -2
  332. package/pulumi/types.js +0 -3
  333. package/pulumi/utils/addDomainsUrlsOutputs.js +20 -37
  334. package/pulumi/utils/addDomainsUrlsOutputs.js.map +1 -1
  335. package/pulumi/utils/addServiceManifestTableItem.js +12 -15
  336. package/pulumi/utils/addServiceManifestTableItem.js.map +1 -1
  337. package/pulumi/utils/crawlDirectory.js +10 -15
  338. package/pulumi/utils/crawlDirectory.js.map +1 -1
  339. package/pulumi/utils/createAssetArchive.js +5 -6
  340. package/pulumi/utils/createAssetArchive.js.map +1 -1
  341. package/pulumi/utils/dynamodb.js +26 -27
  342. package/pulumi/utils/dynamodb.js.map +1 -1
  343. package/pulumi/utils/getPresignedPost.js +27 -30
  344. package/pulumi/utils/getPresignedPost.js.map +1 -1
  345. package/pulumi/utils/index.js +1 -3
  346. package/pulumi/utils/lambdaEnvVariables.js +42 -54
  347. package/pulumi/utils/lambdaEnvVariables.js.map +1 -1
  348. package/pulumi/utils/tagResources.js +248 -28
  349. package/pulumi/utils/tagResources.js.map +1 -1
  350. package/pulumi/utils/uploadFolderToS3.js +101 -131
  351. package/pulumi/utils/uploadFolderToS3.js.map +1 -1
  352. package/pulumi/utils/withServiceManifest.js +28 -37
  353. package/pulumi/utils/withServiceManifest.js.map +1 -1
  354. package/services/AdminStackOutputService.js +14 -11
  355. package/services/AdminStackOutputService.js.map +1 -1
  356. package/services/ApiStackOutputService.js +14 -11
  357. package/services/ApiStackOutputService.js.map +1 -1
  358. package/services/CoreStackOutputService.js +14 -11
  359. package/services/CoreStackOutputService.js.map +1 -1
  360. package/utils/getTemplatesFolderPath.js +8 -10
  361. package/utils/getTemplatesFolderPath.js.map +1 -1
  362. package/utils/index.js +0 -2
  363. package/abstractions/features/pulumi/index.js.map +0 -1
  364. package/abstractions/index.js.map +0 -1
  365. package/apps/index.js.map +0 -1
  366. package/exports/extensions.js.map +0 -1
  367. package/exports/infra/admin.js.map +0 -1
  368. package/exports/infra/api.js.map +0 -1
  369. package/exports/infra/core.js.map +0 -1
  370. package/exports/infra.js.map +0 -1
  371. package/extensions/ProjectAws/AdminStackOutputService.js.map +0 -1
  372. package/extensions/ProjectAws/ApiStackOutputService.js.map +0 -1
  373. package/extensions/ProjectAws/CoreStackOutputService.js.map +0 -1
  374. package/extensions/index.js.map +0 -1
  375. package/features/index.js.map +0 -1
  376. package/index.js.map +0 -1
  377. package/pulumi/apps/admin/index.js.map +0 -1
  378. package/pulumi/apps/api/index.js.map +0 -1
  379. package/pulumi/apps/blueGreen/types.js.map +0 -1
  380. package/pulumi/apps/common/index.js.map +0 -1
  381. package/pulumi/apps/core/cognitoIdentityProviders/index.js.map +0 -1
  382. package/pulumi/apps/core/index.js.map +0 -1
  383. package/pulumi/apps/index.js.map +0 -1
  384. package/pulumi/apps/react/index.js.map +0 -1
  385. package/pulumi/apps/syncSystem/types.js.map +0 -1
  386. package/pulumi/features/AdminPulumi/index.js.map +0 -1
  387. package/pulumi/features/ApiPulumi/index.js.map +0 -1
  388. package/pulumi/features/CorePulumi/index.js.map +0 -1
  389. package/pulumi/features/index.js.map +0 -1
  390. package/pulumi/index.js.map +0 -1
  391. package/pulumi/types.js.map +0 -1
  392. package/pulumi/utils/index.js.map +0 -1
  393. package/utils/index.js.map +0 -1
@@ -1,326 +1,302 @@
1
- /**
2
- * Important documents to read:
3
- *
4
- * https://docs.aws.amazon.com/opensearch-service/latest/developerguide/limits.html#network-limits
5
- */
6
1
  import path from "path";
7
- import * as pulumi from "@pulumi/pulumi";
8
- import * as aws from "@pulumi/aws";
9
- import * as random from "@pulumi/random";
10
2
  import { createAppModule } from "@webiny/pulumi";
11
3
  import { getAwsAccountId } from "../awsUtils.js";
12
4
  import { CoreVpc } from "./CoreVpc.js";
13
5
  import { LAMBDA_RUNTIME } from "../../constants.js";
6
+ import * as __rspack_external__pulumi_pulumi_d0276039 from "@pulumi/pulumi";
7
+ import * as __rspack_external__pulumi_aws_e7af83c1 from "@pulumi/aws";
8
+ import * as __rspack_external__pulumi_random_ec318632 from "@pulumi/random";
14
9
  function getDevClusterConfig() {
15
- return {
16
- instanceType: "t3.small.search"
17
- };
10
+ return {
11
+ instanceType: "t3.small.search"
12
+ };
18
13
  }
19
14
  function getProdClusterConfig() {
20
- return {
21
- // For production deployments, we create 3 instances and configure multi-AZ across 3 zones.
22
- instanceType: "t3.medium.search",
23
- instanceCount: 3,
24
- zoneAwarenessEnabled: true,
25
- zoneAwarenessConfig: {
26
- availabilityZoneCount: 3
27
- }
28
- };
15
+ return {
16
+ instanceType: "t3.medium.search",
17
+ instanceCount: 3,
18
+ zoneAwarenessEnabled: true,
19
+ zoneAwarenessConfig: {
20
+ availabilityZoneCount: 3
21
+ }
22
+ };
29
23
  }
30
24
  const OS_ENGINE_VERSION = "OpenSearch_3.3";
31
- export const OpenSearch = createAppModule({
32
- name: "OpenSearch",
33
- config(app, params) {
34
- const isProduction = app.env.isProduction;
35
- const vpc = app.getModule(CoreVpc, {
36
- optional: true
37
- });
38
- let domain = null;
39
- let domainPolicy;
40
- let domainEndpoint;
41
- let domainArn;
42
- const providedEndpoint = process.env.OPENSEARCH_ENDPOINT;
43
- const providedDomainName = process.env.AWS_OS_DOMAIN_NAME;
44
- if (providedEndpoint && !providedDomainName) {
45
- throw new Error("OPENSEARCH_ENDPOINT was provided but AWS_OS_DOMAIN_NAME is missing. " + "A domain name is required to look up the domain ARN when using a custom endpoint.");
46
- }
47
- if (providedDomainName) {
48
- // Look up the existing domain by name to obtain its ARN and (if no explicit endpoint is
49
- // provided) its endpoint. This covers both the ephemeral-environment pattern and the
50
- // case where an external endpoint is supplied alongside a domain name.
51
- // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments
52
- domain = app.addRemoteResource(providedDomainName, () => {
53
- return aws.opensearch.getDomain({
54
- domainName: providedDomainName
55
- }, {
56
- async: true
25
+ const OpenSearch = createAppModule({
26
+ name: "OpenSearch",
27
+ config (app, params) {
28
+ const isProduction = app.env.isProduction;
29
+ const vpc = app.getModule(CoreVpc, {
30
+ optional: true
57
31
  });
58
- });
59
- domainArn = domain.output.arn;
60
- // Prefer an explicitly provided endpoint; fall back to the one reported by AWS.
61
- domainEndpoint = providedEndpoint ?? domain.output.endpoint;
62
- } else {
63
- const randomId = new random.RandomId("osDomainRandomId", {
64
- byteLength: 8
65
- });
66
- const domainLogicalName = "webiny-js";
67
-
68
- /**
69
- * The physical domain name must remain stable across re-deploys. Changing it causes
70
- * Pulumi to delete and recreate the cluster, which is a destructive operation.
71
- *
72
- * To avoid this, we read the domain name that was stored in the previous deploy's
73
- * stack output (via `sdk.getAppStackOutput`) and reuse it unchanged. Only on the
74
- * very first deploy, when there is no previous output, do we generate a new name
75
- * (with the resource name prefix applied for consistent naming going forward).
76
- *
77
- * NOTE: `params.namePrefix` may be "" when upgrading from old code that never stored
78
- * the domain name in the stack output. In that case the caller passes "" explicitly so
79
- * the fallback formula reproduces the legacy name (`webiny-js-<hex>`) rather than
80
- * prepending the SDK default prefix and triggering an unintended cluster replacement.
81
- * See `createCorePulumiApp.ts` → `isUpgradeFromOldCode` for details.
82
- */
83
- const domainPhysicalName = randomId.hex.apply(hex => params.prevDomainName ?? `${params.namePrefix}${domainLogicalName}-${hex.slice(-7)}`);
84
- domain = app.addResource(aws.opensearch.Domain, {
85
- name: domainLogicalName,
86
- config: {
87
- domainName: domainPhysicalName,
88
- engineVersion: OS_ENGINE_VERSION,
89
- clusterConfig: isProduction ? getProdClusterConfig() : getDevClusterConfig(),
90
- vpcOptions: vpc ? {
91
- subnetIds: vpc.subnets.private.map(s => s.output.id),
92
- securityGroupIds: [vpc.vpc.output.defaultSecurityGroupId]
93
- } : undefined,
94
- ebsOptions: {
95
- ebsEnabled: true,
96
- volumeSize: 10,
97
- volumeType: "gp2"
98
- },
99
- advancedOptions: {
100
- "rest.action.multi.allow_explicit_index": "true"
101
- },
102
- snapshotOptions: {
103
- automatedSnapshotStartHour: 23
104
- }
105
- },
106
- opts: {
107
- protect: params.protect
108
- }
109
- });
110
- domainEndpoint = domain.output.endpoint;
111
- domainArn = domain.output.arn;
112
-
113
- /**
114
- * Domain policy defines who can access your OpenSearch Domain.
115
- * For details on OpenSearch security, read the official documentation:
116
- * https://docs.aws.amazon.com/openSearch-service/latest/developerguide/security.html
117
- */
118
- const accountId = getAwsAccountId(app);
119
- domainPolicy = app.addResource(aws.opensearch.DomainPolicy, {
120
- name: `${domainLogicalName}-policy`,
121
- config: {
122
- domainName: domain.output.domainName,
123
- accessPolicies: pulumi.all([accountId, domainArn]).apply(([accountId, domainArn]) => {
124
- return JSON.stringify({
125
- Version: "2012-10-17",
126
- Statement: [
127
- /**
128
- * Allow requests signed with current account
129
- */
130
- {
131
- Effect: "Allow",
132
- Principal: {
133
- AWS: accountId
32
+ let domain = null;
33
+ let domainPolicy;
34
+ let domainEndpoint;
35
+ let domainArn;
36
+ const providedEndpoint = process.env.OPENSEARCH_ENDPOINT;
37
+ const providedDomainName = process.env.AWS_OS_DOMAIN_NAME;
38
+ if (providedEndpoint && !providedDomainName) throw new Error("OPENSEARCH_ENDPOINT was provided but AWS_OS_DOMAIN_NAME is missing. A domain name is required to look up the domain ARN when using a custom endpoint.");
39
+ if (providedDomainName) {
40
+ domain = app.addRemoteResource(providedDomainName, ()=>__rspack_external__pulumi_aws_e7af83c1.opensearch.getDomain({
41
+ domainName: providedDomainName
42
+ }, {
43
+ async: true
44
+ }));
45
+ domainArn = domain.output.arn;
46
+ domainEndpoint = providedEndpoint ?? domain.output.endpoint;
47
+ } else {
48
+ const randomId = new __rspack_external__pulumi_random_ec318632.RandomId("osDomainRandomId", {
49
+ byteLength: 8
50
+ });
51
+ const domainLogicalName = "webiny-js";
52
+ const domainPhysicalName = randomId.hex.apply((hex)=>params.prevDomainName ?? `${params.namePrefix}${domainLogicalName}-${hex.slice(-7)}`);
53
+ domain = app.addResource(__rspack_external__pulumi_aws_e7af83c1.opensearch.Domain, {
54
+ name: domainLogicalName,
55
+ config: {
56
+ domainName: domainPhysicalName,
57
+ engineVersion: OS_ENGINE_VERSION,
58
+ clusterConfig: isProduction ? getProdClusterConfig() : getDevClusterConfig(),
59
+ vpcOptions: vpc ? {
60
+ subnetIds: vpc.subnets.private.map((s)=>s.output.id),
61
+ securityGroupIds: [
62
+ vpc.vpc.output.defaultSecurityGroupId
63
+ ]
64
+ } : void 0,
65
+ ebsOptions: {
66
+ ebsEnabled: true,
67
+ volumeSize: 10,
68
+ volumeType: "gp2"
69
+ },
70
+ advancedOptions: {
71
+ "rest.action.multi.allow_explicit_index": "true"
72
+ },
73
+ snapshotOptions: {
74
+ automatedSnapshotStartHour: 23
75
+ }
134
76
  },
135
- Action: "es:*",
136
- Resource: `${domainArn}/*`
137
- }]
77
+ opts: {
78
+ protect: params.protect
79
+ }
80
+ });
81
+ domainEndpoint = domain.output.endpoint;
82
+ domainArn = domain.output.arn;
83
+ const accountId = getAwsAccountId(app);
84
+ domainPolicy = app.addResource(__rspack_external__pulumi_aws_e7af83c1.opensearch.DomainPolicy, {
85
+ name: `${domainLogicalName}-policy`,
86
+ config: {
87
+ domainName: domain.output.domainName,
88
+ accessPolicies: __rspack_external__pulumi_pulumi_d0276039.all([
89
+ accountId,
90
+ domainArn
91
+ ]).apply(([accountId, domainArn])=>JSON.stringify({
92
+ Version: "2012-10-17",
93
+ Statement: [
94
+ {
95
+ Effect: "Allow",
96
+ Principal: {
97
+ AWS: accountId
98
+ },
99
+ Action: "es:*",
100
+ Resource: `${domainArn}/*`
101
+ }
102
+ ]
103
+ }))
104
+ },
105
+ opts: {
106
+ protect: params.protect
107
+ }
138
108
  });
139
- })
140
- },
141
- opts: {
142
- protect: params.protect
143
- }
144
- });
145
- }
146
-
147
- /**
148
- * Create a table for OpenSearch records. All ES records are stored in this table to dramatically improve
149
- * performance and stability on write operations (especially massive data imports). This table also serves as a backup and
150
- * a single source of truth for your OpenSearch domain. Streaming is enabled on this table, and it will
151
- * allow asynchronous synchronization of data with OpenSearch domain.
152
- */
153
- const table = app.addResource(aws.dynamodb.Table, {
154
- name: "webiny-es",
155
- config: {
156
- attributes: [{
157
- name: "PK",
158
- type: "S"
159
- }, {
160
- name: "SK",
161
- type: "S"
162
- }, {
163
- name: "GSI_TENANT",
164
- type: "S"
165
- }],
166
- streamEnabled: true,
167
- streamViewType: "NEW_AND_OLD_IMAGES",
168
- billingMode: "PAY_PER_REQUEST",
169
- hashKey: "PK",
170
- rangeKey: "SK",
171
- globalSecondaryIndexes: [{
172
- name: "GSI_TENANT",
173
- keySchemas: [{
174
- attributeName: "GSI_TENANT",
175
- keyType: "HASH"
176
- }],
177
- projectionType: "KEYS_ONLY"
178
- }],
179
- ttl: {
180
- attributeName: "expiresAt",
181
- enabled: true
182
109
  }
183
- },
184
- opts: {
185
- protect: params.protect
186
- }
187
- });
188
- const roleName = "dynamo-to-elastic-lambda-role";
189
- const role = app.addResource(aws.iam.Role, {
190
- name: roleName,
191
- config: {
192
- assumeRolePolicy: {
193
- Version: "2012-10-17",
194
- Statement: [{
195
- Action: "sts:AssumeRole",
196
- Principal: {
197
- Service: "lambda.amazonaws.com"
110
+ const table = app.addResource(__rspack_external__pulumi_aws_e7af83c1.dynamodb.Table, {
111
+ name: "webiny-es",
112
+ config: {
113
+ attributes: [
114
+ {
115
+ name: "PK",
116
+ type: "S"
117
+ },
118
+ {
119
+ name: "SK",
120
+ type: "S"
121
+ },
122
+ {
123
+ name: "GSI_TENANT",
124
+ type: "S"
125
+ }
126
+ ],
127
+ streamEnabled: true,
128
+ streamViewType: "NEW_AND_OLD_IMAGES",
129
+ billingMode: "PAY_PER_REQUEST",
130
+ hashKey: "PK",
131
+ rangeKey: "SK",
132
+ globalSecondaryIndexes: [
133
+ {
134
+ name: "GSI_TENANT",
135
+ keySchemas: [
136
+ {
137
+ attributeName: "GSI_TENANT",
138
+ keyType: "HASH"
139
+ }
140
+ ],
141
+ projectionType: "KEYS_ONLY"
142
+ }
143
+ ],
144
+ ttl: {
145
+ attributeName: "expiresAt",
146
+ enabled: true
147
+ }
198
148
  },
199
- Effect: "Allow"
200
- }]
201
- }
202
- },
203
- meta: {
204
- isLambdaFunctionRole: true
205
- }
206
- });
207
- const policy = getDynamoDbToElasticLambdaPolicy(app, domainArn);
208
- app.addResource(aws.iam.RolePolicyAttachment, {
209
- name: `${roleName}-DynamoDbToElasticLambdaPolicy`,
210
- config: {
211
- role: role.output,
212
- policyArn: policy.output.arn
213
- }
214
- });
215
-
216
- // Only use `AWSLambdaVPCAccessExecutionRole` policy if VPC feature is enabled.
217
- if (vpc) {
218
- app.addResource(aws.iam.RolePolicyAttachment, {
219
- name: `${roleName}-AWSLambdaVPCAccessExecutionRole`,
220
- config: {
221
- role: role.output,
222
- policyArn: aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole
223
- }
224
- });
225
- } else {
226
- app.addResource(aws.iam.RolePolicyAttachment, {
227
- name: `${roleName}-AWSLambdaBasicExecutionRole`,
228
- config: {
229
- role: role.output,
230
- policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole
231
- }
232
- });
149
+ opts: {
150
+ protect: params.protect
151
+ }
152
+ });
153
+ const roleName = "dynamo-to-elastic-lambda-role";
154
+ const role = app.addResource(__rspack_external__pulumi_aws_e7af83c1.iam.Role, {
155
+ name: roleName,
156
+ config: {
157
+ assumeRolePolicy: {
158
+ Version: "2012-10-17",
159
+ Statement: [
160
+ {
161
+ Action: "sts:AssumeRole",
162
+ Principal: {
163
+ Service: "lambda.amazonaws.com"
164
+ },
165
+ Effect: "Allow"
166
+ }
167
+ ]
168
+ }
169
+ },
170
+ meta: {
171
+ isLambdaFunctionRole: true
172
+ }
173
+ });
174
+ const policy = getDynamoDbToElasticLambdaPolicy(app, domainArn);
175
+ app.addResource(__rspack_external__pulumi_aws_e7af83c1.iam.RolePolicyAttachment, {
176
+ name: `${roleName}-DynamoDbToElasticLambdaPolicy`,
177
+ config: {
178
+ role: role.output,
179
+ policyArn: policy.output.arn
180
+ }
181
+ });
182
+ if (vpc) app.addResource(__rspack_external__pulumi_aws_e7af83c1.iam.RolePolicyAttachment, {
183
+ name: `${roleName}-AWSLambdaVPCAccessExecutionRole`,
184
+ config: {
185
+ role: role.output,
186
+ policyArn: __rspack_external__pulumi_aws_e7af83c1.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole
187
+ }
188
+ });
189
+ else app.addResource(__rspack_external__pulumi_aws_e7af83c1.iam.RolePolicyAttachment, {
190
+ name: `${roleName}-AWSLambdaBasicExecutionRole`,
191
+ config: {
192
+ role: role.output,
193
+ policyArn: __rspack_external__pulumi_aws_e7af83c1.iam.ManagedPolicy.AWSLambdaBasicExecutionRole
194
+ }
195
+ });
196
+ app.addResource(__rspack_external__pulumi_aws_e7af83c1.iam.RolePolicyAttachment, {
197
+ name: `${roleName}-AWSLambdaDynamoDBExecutionRole`,
198
+ config: {
199
+ role: role.output,
200
+ policyArn: __rspack_external__pulumi_aws_e7af83c1.iam.ManagedPolicy.AWSLambdaDynamoDBExecutionRole
201
+ }
202
+ });
203
+ const lambda = app.addResource(__rspack_external__pulumi_aws_e7af83c1.lambda.Function, {
204
+ name: "dynamo-to-elastic",
205
+ config: {
206
+ role: role.output.arn,
207
+ runtime: LAMBDA_RUNTIME,
208
+ handler: "handler.handler",
209
+ timeout: 900,
210
+ memorySize: 1024,
211
+ environment: {
212
+ variables: {
213
+ DEBUG: String(process.env.DEBUG),
214
+ OPENSEARCH_ENDPOINT: domainEndpoint,
215
+ OPENSEARCH_USERNAME: process.env.OPENSEARCH_USERNAME ?? "",
216
+ OPENSEARCH_PASSWORD: process.env.OPENSEARCH_PASSWORD ?? ""
217
+ }
218
+ },
219
+ description: "Process DynamoDB Stream.",
220
+ code: new __rspack_external__pulumi_pulumi_d0276039.asset.AssetArchive({
221
+ ".": new __rspack_external__pulumi_pulumi_d0276039.asset.FileArchive(path.join(app.paths.workspace, "dynamoToElastic/build"))
222
+ }),
223
+ vpcConfig: vpc ? {
224
+ subnetIds: vpc.subnets.private.map((s)=>s.output.id),
225
+ securityGroupIds: [
226
+ vpc.vpc.output.defaultSecurityGroupId
227
+ ]
228
+ } : void 0,
229
+ loggingConfig: {
230
+ logFormat: "JSON"
231
+ }
232
+ }
233
+ });
234
+ const eventSourceMapping = app.addResource(__rspack_external__pulumi_aws_e7af83c1.lambda.EventSourceMapping, {
235
+ name: "dynamo-to-elastic",
236
+ config: {
237
+ eventSourceArn: table.output.streamArn,
238
+ functionName: lambda.output.arn,
239
+ startingPosition: "LATEST",
240
+ maximumRetryAttempts: 3,
241
+ batchSize: 50,
242
+ maximumBatchingWindowInSeconds: 1
243
+ }
244
+ });
245
+ app.addOutputs({
246
+ opensearchDomainArn: domainArn,
247
+ opensearchDomainEndpoint: domainEndpoint,
248
+ opensearchDomainName: domain.output.domainName,
249
+ opensearchDynamodbTableArn: table.output.arn,
250
+ opensearchDynamodbTableName: table.output.name
251
+ });
252
+ return {
253
+ domain,
254
+ domainPolicy,
255
+ table,
256
+ dynamoToElastic: {
257
+ role,
258
+ policy,
259
+ lambda,
260
+ eventSourceMapping
261
+ }
262
+ };
233
263
  }
234
- app.addResource(aws.iam.RolePolicyAttachment, {
235
- name: `${roleName}-AWSLambdaDynamoDBExecutionRole`,
236
- config: {
237
- role: role.output,
238
- policyArn: aws.iam.ManagedPolicy.AWSLambdaDynamoDBExecutionRole
239
- }
240
- });
241
-
242
- /**
243
- * This Lambda will process the stream events from DynamoDB table that contains OpenSearch items.
244
- * OpenSearch can't take large amount of individual writes in a short period of time, so this way
245
- * we store data for OpenSearch in a DynamoDB table, and asynchronously insert it into OpenSearch
246
- * using batching.
247
- */
248
- const lambda = app.addResource(aws.lambda.Function, {
249
- name: "dynamo-to-elastic",
250
- config: {
251
- role: role.output.arn,
252
- runtime: LAMBDA_RUNTIME,
253
- handler: "handler.handler",
254
- timeout: 900,
255
- memorySize: 1024,
256
- environment: {
257
- variables: {
258
- DEBUG: String(process.env.DEBUG),
259
- OPENSEARCH_ENDPOINT: domainEndpoint,
260
- OPENSEARCH_USERNAME: process.env.OPENSEARCH_USERNAME ?? "",
261
- OPENSEARCH_PASSWORD: process.env.OPENSEARCH_PASSWORD ?? ""
262
- }
263
- },
264
- description: "Process DynamoDB Stream.",
265
- code: new pulumi.asset.AssetArchive({
266
- ".": new pulumi.asset.FileArchive(path.join(app.paths.workspace, "dynamoToElastic/build"))
267
- }),
268
- vpcConfig: vpc ? {
269
- subnetIds: vpc.subnets.private.map(s => s.output.id),
270
- securityGroupIds: [vpc.vpc.output.defaultSecurityGroupId]
271
- } : undefined,
272
- loggingConfig: {
273
- logFormat: "JSON"
274
- }
275
- }
276
- });
277
- const eventSourceMapping = app.addResource(aws.lambda.EventSourceMapping, {
278
- name: "dynamo-to-elastic",
279
- config: {
280
- eventSourceArn: table.output.streamArn,
281
- functionName: lambda.output.arn,
282
- startingPosition: "LATEST",
283
- maximumRetryAttempts: 3,
284
- batchSize: 50,
285
- maximumBatchingWindowInSeconds: 1
286
- }
287
- });
288
- app.addOutputs({
289
- opensearchDomainArn: domainArn,
290
- opensearchDomainEndpoint: domainEndpoint,
291
- opensearchDomainName: domain.output.domainName,
292
- opensearchDynamodbTableArn: table.output.arn,
293
- opensearchDynamodbTableName: table.output.name
294
- });
295
- return {
296
- domain,
297
- domainPolicy,
298
- table,
299
- dynamoToElastic: {
300
- role,
301
- policy,
302
- lambda,
303
- eventSourceMapping
304
- }
305
- };
306
- }
307
264
  });
308
265
  function getDynamoDbToElasticLambdaPolicy(app, domainArn) {
309
- return app.addResource(aws.iam.Policy, {
310
- name: "DynamoDbToElasticLambdaPolicy-updated",
311
- config: {
312
- description: "This policy enables access to ES and Dynamodb streams",
313
- policy: {
314
- Version: "2012-10-17",
315
- Statement: [{
316
- Sid: "PermissionForES",
317
- Effect: "Allow",
318
- Action: ["es:ESHttpGet", "es:ESHttpDelete", "es:ESHttpPatch", "es:ESHttpPost", "es:ESHttpPut", "dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:Query", "dynamodb:UpdateItem"],
319
- Resource: [pulumi.interpolate`${domainArn}`, pulumi.interpolate`${domainArn}/*`]
320
- }]
321
- }
322
- }
323
- });
266
+ return app.addResource(__rspack_external__pulumi_aws_e7af83c1.iam.Policy, {
267
+ name: "DynamoDbToElasticLambdaPolicy-updated",
268
+ config: {
269
+ description: "This policy enables access to ES and Dynamodb streams",
270
+ policy: {
271
+ Version: "2012-10-17",
272
+ Statement: [
273
+ {
274
+ Sid: "PermissionForES",
275
+ Effect: "Allow",
276
+ Action: [
277
+ "es:ESHttpGet",
278
+ "es:ESHttpDelete",
279
+ "es:ESHttpPatch",
280
+ "es:ESHttpPost",
281
+ "es:ESHttpPut",
282
+ "dynamodb:BatchGetItem",
283
+ "dynamodb:BatchWriteItem",
284
+ "dynamodb:PutItem",
285
+ "dynamodb:GetItem",
286
+ "dynamodb:DeleteItem",
287
+ "dynamodb:Query",
288
+ "dynamodb:UpdateItem"
289
+ ],
290
+ Resource: [
291
+ __rspack_external__pulumi_pulumi_d0276039.interpolate`${domainArn}`,
292
+ __rspack_external__pulumi_pulumi_d0276039.interpolate`${domainArn}/*`
293
+ ]
294
+ }
295
+ ]
296
+ }
297
+ }
298
+ });
324
299
  }
300
+ export { OpenSearch };
325
301
 
326
302
  //# sourceMappingURL=CoreOpenSearch.js.map