@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.
- package/_templates/appTemplates/admin/src/index.tsx +0 -3
- package/abstractions/ApiGqlClient.js +2 -1
- package/abstractions/ApiGqlClient.js.map +1 -1
- package/abstractions/InvokeLambdaFunction.js +2 -1
- package/abstractions/InvokeLambdaFunction.js.map +1 -1
- package/abstractions/features/pulumi/AdminPulumi.js +2 -1
- package/abstractions/features/pulumi/AdminPulumi.js.map +1 -1
- package/abstractions/features/pulumi/ApiPulumi.js +2 -1
- package/abstractions/features/pulumi/ApiPulumi.js.map +1 -1
- package/abstractions/features/pulumi/CorePulumi.js +2 -1
- package/abstractions/features/pulumi/CorePulumi.js.map +1 -1
- package/abstractions/features/pulumi/index.js +0 -2
- package/abstractions/index.js +0 -2
- package/abstractions/services/AdminStackOutputService.js +2 -1
- package/abstractions/services/AdminStackOutputService.js.map +1 -1
- package/abstractions/services/ApiStackOutputService.js +2 -1
- package/abstractions/services/ApiStackOutputService.js.map +1 -1
- package/abstractions/services/CoreStackOutputService.js +2 -1
- package/abstractions/services/CoreStackOutputService.js.map +1 -1
- package/admin.js +5 -4
- package/admin.js.map +1 -1
- package/api.js +13 -12
- package/api.js.map +1 -1
- package/apps/createAdminApp.js +11 -12
- package/apps/createAdminApp.js.map +1 -1
- package/apps/createAdminAppConfig.js +12 -18
- package/apps/createAdminAppConfig.js.map +1 -1
- package/apps/createApiApp.js +17 -22
- package/apps/createApiApp.js.map +1 -1
- package/apps/createBlueGreenApp.js +13 -16
- package/apps/createBlueGreenApp.js.map +1 -1
- package/apps/createCoreApp.js +12 -13
- package/apps/createCoreApp.js.map +1 -1
- package/apps/createReactAppConfig.d.ts +0 -7
- package/apps/createReactAppConfig.js +56 -69
- package/apps/createReactAppConfig.js.map +1 -1
- package/apps/createSyncSystemApp.js +8 -7
- package/apps/createSyncSystemApp.js.map +1 -1
- package/apps/index.js +0 -2
- package/cli.js +3 -2
- package/cli.js.map +1 -1
- package/exports/extensions.js +0 -2
- package/exports/infra/admin.js +0 -2
- package/exports/infra/api.js +0 -2
- package/exports/infra/core.js +0 -2
- package/exports/infra.js +1 -3
- package/extensions/ApiLambdaFunction.js +45 -56
- package/extensions/ApiLambdaFunction.js.map +1 -1
- package/extensions/ApiRoute.js +90 -104
- package/extensions/ApiRoute.js.map +1 -1
- package/extensions/AwsDefaultRegion.js +17 -16
- package/extensions/AwsDefaultRegion.js.map +1 -1
- package/extensions/Cms/ModelFieldCompression.js +16 -15
- package/extensions/Cms/ModelFieldCompression.js.map +1 -1
- package/extensions/Encryption.js +30 -29
- package/extensions/Encryption.js.map +1 -1
- package/extensions/Mailer/Smtp.js +15 -14
- package/extensions/Mailer/Smtp.js.map +1 -1
- package/extensions/Mailer/Smtp.test.js +117 -131
- package/extensions/Mailer/Smtp.test.js.map +1 -1
- package/extensions/Mailer/SmtpParamsSchema.js +11 -14
- package/extensions/Mailer/SmtpParamsSchema.js.map +1 -1
- package/extensions/OpenSearch/EnsureOsServiceRoleBeforeCoreDeploy.js +25 -30
- package/extensions/OpenSearch/EnsureOsServiceRoleBeforeCoreDeploy.js.map +1 -1
- package/extensions/OpenSearch/EnsureOsWasDeployed.js +14 -24
- package/extensions/OpenSearch/EnsureOsWasDeployed.js.map +1 -1
- package/extensions/OpenSearch/InjectDdbEsLambdaFnHandler.js +25 -21
- package/extensions/OpenSearch/InjectDdbEsLambdaFnHandler.js.map +1 -1
- package/extensions/OpenSearch/ReplaceApiLambdaFnHandlers.js +26 -22
- package/extensions/OpenSearch/ReplaceApiLambdaFnHandlers.js.map +1 -1
- package/extensions/OpenSearch.js +30 -31
- package/extensions/OpenSearch.js.map +1 -1
- package/extensions/ProjectAws/AdminStackOutputService.js +0 -2
- package/extensions/ProjectAws/ApiStackOutputService.js +0 -2
- package/extensions/ProjectAws/AutoInstall/AutoInstallAfterApiDeploy.js +65 -74
- package/extensions/ProjectAws/AutoInstall/AutoInstallAfterApiDeploy.js.map +1 -1
- package/extensions/ProjectAws/AutoInstall.js +15 -14
- package/extensions/ProjectAws/AutoInstall.js.map +1 -1
- package/extensions/ProjectAws/BlueGreenDeployments/EnsureVariantBeforeDeploy.js +15 -19
- package/extensions/ProjectAws/BlueGreenDeployments/EnsureVariantBeforeDeploy.js.map +1 -1
- package/extensions/ProjectAws/BlueGreenDeployments/PrintDeploymentInfoAfterDeploy.js +56 -45
- package/extensions/ProjectAws/BlueGreenDeployments/PrintDeploymentInfoAfterDeploy.js.map +1 -1
- package/extensions/ProjectAws/BlueGreenDeployments/SetPrimaryVariantCliCommand.js +57 -55
- package/extensions/ProjectAws/BlueGreenDeployments/SetPrimaryVariantCliCommand.js.map +1 -1
- package/extensions/ProjectAws/BuildAppWorkspace.js +49 -54
- package/extensions/ProjectAws/BuildAppWorkspace.js.map +1 -1
- package/extensions/ProjectAws/CoreStackOutputService.js +0 -2
- package/extensions/ProjectAws/EnsureAwsCredentialsBeforeDeploy.js +26 -30
- package/extensions/ProjectAws/EnsureAwsCredentialsBeforeDeploy.js.map +1 -1
- package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVars.js +25 -38
- package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVars.js.map +1 -1
- package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeBuild.js +22 -17
- package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeBuild.js.map +1 -1
- package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeWatch.js +22 -17
- package/extensions/ProjectAws/SetAdminEnvVars/SetAdminEnvVarsBeforeWatch.js.map +1 -1
- package/extensions/ProjectAws/SetDatabaseSetupOutput.js +20 -21
- package/extensions/ProjectAws/SetDatabaseSetupOutput.js.map +1 -1
- package/extensions/ProjectAws/UploadAdminAppToS3.js +53 -58
- package/extensions/ProjectAws/UploadAdminAppToS3.js.map +1 -1
- package/extensions/ProjectAws/definitions.js +13 -6
- package/extensions/ProjectAws/definitions.js.map +1 -1
- package/extensions/ProjectAws.js +44 -45
- package/extensions/ProjectAws.js.map +1 -1
- package/extensions/RegisterRoutesPulumi.js +24 -29
- package/extensions/RegisterRoutesPulumi.js.map +1 -1
- package/extensions/definitions.js +10 -3
- package/extensions/definitions.js.map +1 -1
- package/extensions/index.js +0 -2
- package/features/ApiGqlClient.js +46 -51
- package/features/ApiGqlClient.js.map +1 -1
- package/features/InvokeLambdaFunction.js +30 -32
- package/features/InvokeLambdaFunction.js.map +1 -1
- package/features/index.js +0 -2
- package/index.js +0 -2
- package/infra.js +57 -59
- package/infra.js.map +1 -1
- package/package.json +14 -14
- package/project.js +7 -6
- package/project.js.map +1 -1
- package/pulumi/apps/admin/createAdminPulumiApp.js +36 -44
- package/pulumi/apps/admin/createAdminPulumiApp.js.map +1 -1
- package/pulumi/apps/admin/index.js +0 -2
- package/pulumi/apps/api/ApiBackgroundTask.js +153 -137
- package/pulumi/apps/api/ApiBackgroundTask.js.map +1 -1
- package/pulumi/apps/api/ApiCloudfront.js +188 -130
- package/pulumi/apps/api/ApiCloudfront.js.map +1 -1
- package/pulumi/apps/api/ApiFileManager.js +34 -33
- package/pulumi/apps/api/ApiFileManager.js.map +1 -1
- package/pulumi/apps/api/ApiGateway.js +67 -74
- package/pulumi/apps/api/ApiGateway.js.map +1 -1
- package/pulumi/apps/api/ApiGraphql.js +223 -152
- package/pulumi/apps/api/ApiGraphql.js.map +1 -1
- package/pulumi/apps/api/ApiOutput.js +29 -30
- package/pulumi/apps/api/ApiOutput.js.map +1 -1
- package/pulumi/apps/api/ApiScheduler.js +94 -92
- package/pulumi/apps/api/ApiScheduler.js.map +1 -1
- package/pulumi/apps/api/ApiWebsocket.js +141 -133
- package/pulumi/apps/api/ApiWebsocket.js.map +1 -1
- package/pulumi/apps/api/backgroundTask/definition.js +122 -144
- package/pulumi/apps/api/backgroundTask/definition.js.map +1 -1
- package/pulumi/apps/api/backgroundTask/policy.js +37 -23
- package/pulumi/apps/api/backgroundTask/policy.js.map +1 -1
- package/pulumi/apps/api/backgroundTask/role.js +29 -29
- package/pulumi/apps/api/backgroundTask/role.js.map +1 -1
- package/pulumi/apps/api/backgroundTask/types.js +9 -11
- package/pulumi/apps/api/backgroundTask/types.js.map +1 -1
- package/pulumi/apps/api/createApiPulumiApp.js +206 -274
- package/pulumi/apps/api/createApiPulumiApp.js.map +1 -1
- package/pulumi/apps/api/handleGuardDutyEvents.js +54 -51
- package/pulumi/apps/api/handleGuardDutyEvents.js.map +1 -1
- package/pulumi/apps/api/index.js +0 -2
- package/pulumi/apps/awsUtils.js +21 -24
- package/pulumi/apps/awsUtils.js.map +1 -1
- package/pulumi/apps/blueGreen/BlueGreenRouterApiGateway.js +37 -40
- package/pulumi/apps/blueGreen/BlueGreenRouterApiGateway.js.map +1 -1
- package/pulumi/apps/blueGreen/BlueGreenRouterCloudFront.js +83 -91
- package/pulumi/apps/blueGreen/BlueGreenRouterCloudFront.js.map +1 -1
- package/pulumi/apps/blueGreen/BlueGreenRouterCloudFrontStore.js +17 -16
- package/pulumi/apps/blueGreen/BlueGreenRouterCloudFrontStore.js.map +1 -1
- package/pulumi/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js +13 -12
- package/pulumi/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js.map +1 -1
- package/pulumi/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js +9 -14
- package/pulumi/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js.map +1 -1
- package/pulumi/apps/blueGreen/cloudfront/createOriginId.js +5 -7
- package/pulumi/apps/blueGreen/cloudfront/createOriginId.js.map +1 -1
- package/pulumi/apps/blueGreen/constants.js +15 -3
- package/pulumi/apps/blueGreen/constants.js.map +1 -1
- package/pulumi/apps/blueGreen/createBlueGreenPulumiApp.js +77 -103
- package/pulumi/apps/blueGreen/createBlueGreenPulumiApp.js.map +1 -1
- package/pulumi/apps/blueGreen/domains/attachDomainsToOutput.js +20 -26
- package/pulumi/apps/blueGreen/domains/attachDomainsToOutput.js.map +1 -1
- package/pulumi/apps/blueGreen/domains/convertApplicationDomains.js +17 -20
- package/pulumi/apps/blueGreen/domains/convertApplicationDomains.js.map +1 -1
- package/pulumi/apps/blueGreen/domains/getApplicationDomains.js +51 -61
- package/pulumi/apps/blueGreen/domains/getApplicationDomains.js.map +1 -1
- package/pulumi/apps/blueGreen/domains/resolveDomains.js +24 -38
- package/pulumi/apps/blueGreen/domains/resolveDomains.js.map +1 -1
- package/pulumi/apps/blueGreen/functions/buildHandlerFunction.js +7 -14
- package/pulumi/apps/blueGreen/functions/buildHandlerFunction.js.map +1 -1
- package/pulumi/apps/blueGreen/functions/handler.js +1 -57
- package/pulumi/apps/blueGreen/functions/handler.js.map +1 -1
- package/pulumi/apps/blueGreen/types.js +0 -3
- package/pulumi/apps/blueGreen/validation/validateDeployments.js +19 -24
- package/pulumi/apps/blueGreen/validation/validateDeployments.js.map +1 -1
- package/pulumi/apps/common/CoreOutput.js +34 -37
- package/pulumi/apps/common/CoreOutput.js.map +1 -1
- package/pulumi/apps/common/VpcConfig.js +20 -20
- package/pulumi/apps/common/VpcConfig.js.map +1 -1
- package/pulumi/apps/common/index.js +0 -2
- package/pulumi/apps/core/CoreAuditLogsDynamo.js +245 -182
- package/pulumi/apps/core/CoreAuditLogsDynamo.js.map +1 -1
- package/pulumi/apps/core/CoreCognito.js +117 -106
- package/pulumi/apps/core/CoreCognito.js.map +1 -1
- package/pulumi/apps/core/CoreDynamo.js +91 -70
- package/pulumi/apps/core/CoreDynamo.js.map +1 -1
- package/pulumi/apps/core/CoreEventBus.js +10 -9
- package/pulumi/apps/core/CoreEventBus.js.map +1 -1
- package/pulumi/apps/core/CoreFileManager.js +76 -68
- package/pulumi/apps/core/CoreFileManager.js.map +1 -1
- package/pulumi/apps/core/CoreOpenSearch.js +281 -305
- package/pulumi/apps/core/CoreOpenSearch.js.map +1 -1
- package/pulumi/apps/core/CoreVpc.js +155 -156
- package/pulumi/apps/core/CoreVpc.js.map +1 -1
- package/pulumi/apps/core/WatchCommand.js +94 -96
- package/pulumi/apps/core/WatchCommand.js.map +1 -1
- package/pulumi/apps/core/cognitoIdentityProviders/amazon.js +16 -22
- package/pulumi/apps/core/cognitoIdentityProviders/amazon.js.map +1 -1
- package/pulumi/apps/core/cognitoIdentityProviders/apple.js +16 -17
- package/pulumi/apps/core/cognitoIdentityProviders/apple.js.map +1 -1
- package/pulumi/apps/core/cognitoIdentityProviders/configure.js +44 -50
- package/pulumi/apps/core/cognitoIdentityProviders/configure.js.map +1 -1
- package/pulumi/apps/core/cognitoIdentityProviders/facebook.js +16 -17
- package/pulumi/apps/core/cognitoIdentityProviders/facebook.js.map +1 -1
- package/pulumi/apps/core/cognitoIdentityProviders/getIdpConfig.js +7 -8
- package/pulumi/apps/core/cognitoIdentityProviders/getIdpConfig.js.map +1 -1
- package/pulumi/apps/core/cognitoIdentityProviders/google.js +16 -17
- package/pulumi/apps/core/cognitoIdentityProviders/google.js.map +1 -1
- package/pulumi/apps/core/cognitoIdentityProviders/index.js +0 -2
- package/pulumi/apps/core/cognitoIdentityProviders/oidc.js +17 -18
- package/pulumi/apps/core/cognitoIdentityProviders/oidc.js.map +1 -1
- package/pulumi/apps/core/configureS3BucketMalwareProtection.js +251 -188
- package/pulumi/apps/core/configureS3BucketMalwareProtection.js.map +1 -1
- package/pulumi/apps/core/createCorePulumiApp.js +212 -280
- package/pulumi/apps/core/createCorePulumiApp.js.map +1 -1
- package/pulumi/apps/core/index.js +0 -2
- package/pulumi/apps/core/webinyWatchCommand/handler.js +45 -32
- package/pulumi/apps/core/webinyWatchCommand/handler.js.map +1 -1
- package/pulumi/apps/createAppBucket.js +157 -146
- package/pulumi/apps/createAppBucket.js.map +1 -1
- package/pulumi/apps/customDomain.js +7 -6
- package/pulumi/apps/customDomain.js.map +1 -1
- package/pulumi/apps/extensions/getAwsTagsFromExtension.js +8 -7
- package/pulumi/apps/extensions/getAwsTagsFromExtension.js.map +1 -1
- package/pulumi/apps/extensions/getBgDeploymentsConfigFromExtension.js +6 -7
- package/pulumi/apps/extensions/getBgDeploymentsConfigFromExtension.js.map +1 -1
- package/pulumi/apps/extensions/getOsConfigFromExtension.js +17 -41
- package/pulumi/apps/extensions/getOsConfigFromExtension.js.map +1 -1
- package/pulumi/apps/extensions/getVpcConfigFromExtension.js +13 -25
- package/pulumi/apps/extensions/getVpcConfigFromExtension.js.map +1 -1
- package/pulumi/apps/index.js +0 -3
- package/pulumi/apps/lambdaUtils.js +57 -61
- package/pulumi/apps/lambdaUtils.js.map +1 -1
- package/pulumi/apps/react/createReactPulumiApp.js +108 -129
- package/pulumi/apps/react/createReactPulumiApp.js.map +1 -1
- package/pulumi/apps/react/index.js +0 -2
- package/pulumi/apps/syncSystem/SyncSystemDynamo.js +77 -62
- package/pulumi/apps/syncSystem/SyncSystemDynamo.js.map +1 -1
- package/pulumi/apps/syncSystem/SyncSystemDynamoDb.js +74 -57
- package/pulumi/apps/syncSystem/SyncSystemDynamoDb.js.map +1 -1
- package/pulumi/apps/syncSystem/SyncSystemEventBus.js +77 -71
- package/pulumi/apps/syncSystem/SyncSystemEventBus.js.map +1 -1
- package/pulumi/apps/syncSystem/SyncSystemLambda.js +154 -86
- package/pulumi/apps/syncSystem/SyncSystemLambda.js.map +1 -1
- package/pulumi/apps/syncSystem/SyncSystemOutput.js +14 -13
- package/pulumi/apps/syncSystem/SyncSystemOutput.js.map +1 -1
- package/pulumi/apps/syncSystem/SyncSystemResolverLambda.js +56 -60
- package/pulumi/apps/syncSystem/SyncSystemResolverLambda.js.map +1 -1
- package/pulumi/apps/syncSystem/SyncSystemSQS.js +25 -49
- package/pulumi/apps/syncSystem/SyncSystemSQS.js.map +1 -1
- package/pulumi/apps/syncSystem/SyncSystemWorkerLambda.js +44 -43
- package/pulumi/apps/syncSystem/SyncSystemWorkerLambda.js.map +1 -1
- package/pulumi/apps/syncSystem/addTableItems.js +35 -45
- package/pulumi/apps/syncSystem/addTableItems.js.map +1 -1
- package/pulumi/apps/syncSystem/api/addServiceManifest.js +12 -14
- package/pulumi/apps/syncSystem/api/addServiceManifest.js.map +1 -1
- package/pulumi/apps/syncSystem/api/attachCognitoPermissions.js +49 -55
- package/pulumi/apps/syncSystem/api/attachCognitoPermissions.js.map +1 -1
- package/pulumi/apps/syncSystem/api/attachDynamoDbPermissions.js +88 -40
- package/pulumi/apps/syncSystem/api/attachDynamoDbPermissions.js.map +1 -1
- package/pulumi/apps/syncSystem/api/attachEventBusPermissions.js +37 -43
- package/pulumi/apps/syncSystem/api/attachEventBusPermissions.js.map +1 -1
- package/pulumi/apps/syncSystem/api/attachS3Permissions.js +51 -47
- package/pulumi/apps/syncSystem/api/attachS3Permissions.js.map +1 -1
- package/pulumi/apps/syncSystem/api/index.js +28 -46
- package/pulumi/apps/syncSystem/api/index.js.map +1 -1
- package/pulumi/apps/syncSystem/constants.js +2 -1
- package/pulumi/apps/syncSystem/constants.js.map +1 -1
- package/pulumi/apps/syncSystem/createSyncResourceName.js +2 -7
- package/pulumi/apps/syncSystem/createSyncResourceName.js.map +1 -1
- package/pulumi/apps/syncSystem/createSyncSystemPulumiApp.js +101 -166
- package/pulumi/apps/syncSystem/createSyncSystemPulumiApp.js.map +1 -1
- package/pulumi/apps/syncSystem/customApp.js +12 -16
- package/pulumi/apps/syncSystem/customApp.js.map +1 -1
- package/pulumi/apps/syncSystem/getSyncSystemOutput.js +5 -6
- package/pulumi/apps/syncSystem/getSyncSystemOutput.js.map +1 -1
- package/pulumi/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.js +108 -42
- package/pulumi/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.js.map +1 -1
- package/pulumi/apps/syncSystem/types.js +0 -3
- package/pulumi/constants.js +2 -1
- package/pulumi/constants.js.map +1 -1
- package/pulumi/env/awsRegion.js +3 -2
- package/pulumi/env/awsRegion.js.map +1 -1
- package/pulumi/env/base.js +11 -27
- package/pulumi/env/base.js.map +1 -1
- package/pulumi/env/env.js +3 -2
- package/pulumi/env/env.js.map +1 -1
- package/pulumi/env/projectName.js +3 -2
- package/pulumi/env/projectName.js.map +1 -1
- package/pulumi/env/variant.js +4 -3
- package/pulumi/env/variant.js.map +1 -1
- package/pulumi/extensions/AdminCustomDomains.js +15 -11
- package/pulumi/extensions/AdminCustomDomains.js.map +1 -1
- package/pulumi/extensions/AdminPulumi.js +16 -19
- package/pulumi/extensions/AdminPulumi.js.map +1 -1
- package/pulumi/extensions/ApiCustomDomains.js +15 -11
- package/pulumi/extensions/ApiCustomDomains.js.map +1 -1
- package/pulumi/extensions/ApiPulumi.js +16 -19
- package/pulumi/extensions/ApiPulumi.js.map +1 -1
- package/pulumi/extensions/AwsTags.js +11 -10
- package/pulumi/extensions/AwsTags.js.map +1 -1
- package/pulumi/extensions/BlueGreenDeployments.js +29 -26
- package/pulumi/extensions/BlueGreenDeployments.js.map +1 -1
- package/pulumi/extensions/CorePulumi.js +16 -19
- package/pulumi/extensions/CorePulumi.js.map +1 -1
- package/pulumi/extensions/OpenSearch.js +16 -15
- package/pulumi/extensions/OpenSearch.js.map +1 -1
- package/pulumi/extensions/Vpc.js +21 -20
- package/pulumi/extensions/Vpc.js.map +1 -1
- package/pulumi/extensions/index.js +12 -10
- package/pulumi/extensions/index.js.map +1 -1
- package/pulumi/features/AdminPulumi/AdminPulumi.js +18 -14
- package/pulumi/features/AdminPulumi/AdminPulumi.js.map +1 -1
- package/pulumi/features/AdminPulumi/index.js +0 -2
- package/pulumi/features/ApiPulumi/ApiPulumi.js +18 -14
- package/pulumi/features/ApiPulumi/ApiPulumi.js.map +1 -1
- package/pulumi/features/ApiPulumi/index.js +0 -2
- package/pulumi/features/CorePulumi/CorePulumi.js +18 -14
- package/pulumi/features/CorePulumi/CorePulumi.js.map +1 -1
- package/pulumi/features/CorePulumi/index.js +0 -2
- package/pulumi/features/index.js +0 -2
- package/pulumi/index.js +0 -2
- package/pulumi/types.js +0 -3
- package/pulumi/utils/addDomainsUrlsOutputs.js +20 -37
- package/pulumi/utils/addDomainsUrlsOutputs.js.map +1 -1
- package/pulumi/utils/addServiceManifestTableItem.js +12 -15
- package/pulumi/utils/addServiceManifestTableItem.js.map +1 -1
- package/pulumi/utils/crawlDirectory.js +10 -15
- package/pulumi/utils/crawlDirectory.js.map +1 -1
- package/pulumi/utils/createAssetArchive.js +5 -6
- package/pulumi/utils/createAssetArchive.js.map +1 -1
- package/pulumi/utils/dynamodb.js +26 -27
- package/pulumi/utils/dynamodb.js.map +1 -1
- package/pulumi/utils/getPresignedPost.js +27 -30
- package/pulumi/utils/getPresignedPost.js.map +1 -1
- package/pulumi/utils/index.js +1 -3
- package/pulumi/utils/lambdaEnvVariables.js +42 -54
- package/pulumi/utils/lambdaEnvVariables.js.map +1 -1
- package/pulumi/utils/tagResources.js +248 -28
- package/pulumi/utils/tagResources.js.map +1 -1
- package/pulumi/utils/uploadFolderToS3.js +101 -131
- package/pulumi/utils/uploadFolderToS3.js.map +1 -1
- package/pulumi/utils/withServiceManifest.js +28 -37
- package/pulumi/utils/withServiceManifest.js.map +1 -1
- package/services/AdminStackOutputService.js +14 -11
- package/services/AdminStackOutputService.js.map +1 -1
- package/services/ApiStackOutputService.js +14 -11
- package/services/ApiStackOutputService.js.map +1 -1
- package/services/CoreStackOutputService.js +14 -11
- package/services/CoreStackOutputService.js.map +1 -1
- package/utils/getTemplatesFolderPath.js +8 -10
- package/utils/getTemplatesFolderPath.js.map +1 -1
- package/utils/index.js +0 -2
- package/abstractions/features/pulumi/index.js.map +0 -1
- package/abstractions/index.js.map +0 -1
- package/apps/index.js.map +0 -1
- package/exports/extensions.js.map +0 -1
- package/exports/infra/admin.js.map +0 -1
- package/exports/infra/api.js.map +0 -1
- package/exports/infra/core.js.map +0 -1
- package/exports/infra.js.map +0 -1
- package/extensions/ProjectAws/AdminStackOutputService.js.map +0 -1
- package/extensions/ProjectAws/ApiStackOutputService.js.map +0 -1
- package/extensions/ProjectAws/CoreStackOutputService.js.map +0 -1
- package/extensions/index.js.map +0 -1
- package/features/index.js.map +0 -1
- package/index.js.map +0 -1
- package/pulumi/apps/admin/index.js.map +0 -1
- package/pulumi/apps/api/index.js.map +0 -1
- package/pulumi/apps/blueGreen/types.js.map +0 -1
- package/pulumi/apps/common/index.js.map +0 -1
- package/pulumi/apps/core/cognitoIdentityProviders/index.js.map +0 -1
- package/pulumi/apps/core/index.js.map +0 -1
- package/pulumi/apps/index.js.map +0 -1
- package/pulumi/apps/react/index.js.map +0 -1
- package/pulumi/apps/syncSystem/types.js.map +0 -1
- package/pulumi/features/AdminPulumi/index.js.map +0 -1
- package/pulumi/features/ApiPulumi/index.js.map +0 -1
- package/pulumi/features/CorePulumi/index.js.map +0 -1
- package/pulumi/features/index.js.map +0 -1
- package/pulumi/index.js.map +0 -1
- package/pulumi/types.js.map +0 -1
- package/pulumi/utils/index.js.map +0 -1
- package/utils/index.js.map +0 -1
|
@@ -3,38 +3,33 @@ import { GracefulError } from "@webiny/project";
|
|
|
3
3
|
import { IAM } from "@webiny/aws-sdk/client-iam/index.js";
|
|
4
4
|
const NO_SUCH_ENTITY_IAM_ERROR = "NoSuchEntity";
|
|
5
5
|
class EnsureOsServiceRoleBeforeCoreDeployImpl {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
await iam.createServiceLinkedRole({
|
|
26
|
-
AWSServiceName: "opensearchservice.amazonaws.com"
|
|
27
|
-
});
|
|
28
|
-
// Created successfully, proceed silently
|
|
29
|
-
} catch (err) {
|
|
30
|
-
throw GracefulError.from(new Error("Failed to create Amazon OpenSearch service role."), ["Could not create the required %s service role:", "%s", "", "Your options:", "• Ensure your AWS account has the necessary IAM permissions to create service-linked roles.", "• Manually create the service role using the AWS console or CLI.", "• Contact your AWS administrator for assistance."].join("\n"), "AWSServiceRoleForAmazonOpenSearchService", err.message);
|
|
31
|
-
}
|
|
6
|
+
constructor(uiService){
|
|
7
|
+
this.uiService = uiService;
|
|
8
|
+
}
|
|
9
|
+
async execute() {
|
|
10
|
+
const iam = new IAM();
|
|
11
|
+
try {
|
|
12
|
+
await iam.getRole({
|
|
13
|
+
RoleName: "AWSServiceRoleForAmazonOpenSearchService"
|
|
14
|
+
});
|
|
15
|
+
} catch (err) {
|
|
16
|
+
if (err.Error?.Code !== NO_SUCH_ENTITY_IAM_ERROR) throw GracefulError.from(new Error("Failed to retrieve Amazon OpenSearch service role."), "An unexpected error occurred while checking for the %s service role:\n%s\n\nPlease check your AWS IAM permissions and try again.", "AWSServiceRoleForAmazonOpenSearchService", err.message);
|
|
17
|
+
try {
|
|
18
|
+
await iam.createServiceLinkedRole({
|
|
19
|
+
AWSServiceName: "opensearchservice.amazonaws.com"
|
|
20
|
+
});
|
|
21
|
+
} catch (err) {
|
|
22
|
+
throw GracefulError.from(new Error("Failed to create Amazon OpenSearch service role."), "Could not create the required %s service role:\n%s\n\nYour options:\n• Ensure your AWS account has the necessary IAM permissions to create service-linked roles.\n• Manually create the service role using the AWS console or CLI.\n• Contact your AWS administrator for assistance.", "AWSServiceRoleForAmazonOpenSearchService", err.message);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
32
25
|
}
|
|
33
|
-
}
|
|
34
26
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
const EnsureOsServiceRoleBeforeCoreDeploy = CoreBeforeDeploy.createImplementation({
|
|
28
|
+
implementation: EnsureOsServiceRoleBeforeCoreDeployImpl,
|
|
29
|
+
dependencies: [
|
|
30
|
+
UiService
|
|
31
|
+
]
|
|
38
32
|
});
|
|
33
|
+
export { EnsureOsServiceRoleBeforeCoreDeploy };
|
|
39
34
|
|
|
40
35
|
//# sourceMappingURL=EnsureOsServiceRoleBeforeCoreDeploy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"extensions/OpenSearch/EnsureOsServiceRoleBeforeCoreDeploy.js","sources":["../../../src/extensions/OpenSearch/EnsureOsServiceRoleBeforeCoreDeploy.ts"],"sourcesContent":["import { CoreBeforeDeploy, UiService } from \"@webiny/project/abstractions/index.js\";\nimport { GracefulError } from \"@webiny/project\";\nimport { IAM } from \"@webiny/aws-sdk/client-iam/index.js\";\n\nconst NO_SUCH_ENTITY_IAM_ERROR = \"NoSuchEntity\";\n\nclass EnsureOsServiceRoleBeforeCoreDeployImpl implements CoreBeforeDeploy.Interface {\n constructor(private uiService: UiService.Interface) {}\n\n async execute() {\n const iam = new IAM();\n try {\n await iam.getRole({ RoleName: \"AWSServiceRoleForAmazonOpenSearchService\" });\n // Role exists, proceed silently\n } catch (err) {\n // We've seen cases where the `iam.getRole` call fails because of an issue\n // other than not being able to retrieve the service role.\n if (err.Error?.Code !== NO_SUCH_ENTITY_IAM_ERROR) {\n throw GracefulError.from(\n new Error(\"Failed to retrieve Amazon OpenSearch service role.\"),\n [\n \"An unexpected error occurred while checking for the %s service role:\",\n \"%s\",\n \"\",\n \"Please check your AWS IAM permissions and try again.\"\n ].join(\"\\n\"),\n \"AWSServiceRoleForAmazonOpenSearchService\",\n err.message\n );\n }\n\n // Role doesn't exist, try to create it\n try {\n await iam.createServiceLinkedRole({\n AWSServiceName: \"opensearchservice.amazonaws.com\"\n });\n // Created successfully, proceed silently\n } catch (err) {\n throw GracefulError.from(\n new Error(\"Failed to create Amazon OpenSearch service role.\"),\n [\n \"Could not create the required %s service role:\",\n \"%s\",\n \"\",\n \"Your options:\",\n \"• Ensure your AWS account has the necessary IAM permissions to create service-linked roles.\",\n \"• Manually create the service role using the AWS console or CLI.\",\n \"• Contact your AWS administrator for assistance.\"\n ].join(\"\\n\"),\n \"AWSServiceRoleForAmazonOpenSearchService\",\n err.message\n );\n }\n }\n }\n}\n\nexport const EnsureOsServiceRoleBeforeCoreDeploy = CoreBeforeDeploy.createImplementation({\n implementation: EnsureOsServiceRoleBeforeCoreDeployImpl,\n dependencies: [UiService]\n});\n"],"names":["NO_SUCH_ENTITY_IAM_ERROR","EnsureOsServiceRoleBeforeCoreDeployImpl","uiService","iam","IAM","err","GracefulError","Error","EnsureOsServiceRoleBeforeCoreDeploy","CoreBeforeDeploy","UiService"],"mappings":";;;AAIA,MAAMA,2BAA2B;AAEjC,MAAMC;IACF,YAAoBC,SAA8B,CAAE;aAAhCA,SAAS,GAATA;IAAiC;IAErD,MAAM,UAAU;QACZ,MAAMC,MAAM,IAAIC;QAChB,IAAI;YACA,MAAMD,IAAI,OAAO,CAAC;gBAAE,UAAU;YAA2C;QAE7E,EAAE,OAAOE,KAAK;YAGV,IAAIA,IAAI,KAAK,EAAE,SAASL,0BACpB,MAAMM,cAAc,IAAI,CACpB,IAAIC,MAAM,uDACV,oIAMA,4CACAF,IAAI,OAAO;YAKnB,IAAI;gBACA,MAAMF,IAAI,uBAAuB,CAAC;oBAC9B,gBAAgB;gBACpB;YAEJ,EAAE,OAAOE,KAAK;gBACV,MAAMC,cAAc,IAAI,CACpB,IAAIC,MAAM,qDACV,wRASA,4CACAF,IAAI,OAAO;YAEnB;QACJ;IACJ;AACJ;AAEO,MAAMG,sCAAsCC,iBAAiB,oBAAoB,CAAC;IACrF,gBAAgBR;IAChB,cAAc;QAACS;KAAU;AAC7B"}
|
|
@@ -2,33 +2,23 @@ import { CoreBeforeDeploy } from "@webiny/project/abstractions/index.js";
|
|
|
2
2
|
import { GracefulError } from "@webiny/project";
|
|
3
3
|
import { CoreStackOutputService } from "../../abstractions/index.js";
|
|
4
4
|
class EnsureOsWasDeployedImpl {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
async execute() {
|
|
9
|
-
// Get the stack output from the core application
|
|
10
|
-
// CoreStackOutputService automatically uses env/variant/region from ProjectSdkParamsService
|
|
11
|
-
const output = await this.coreStackOutputService.execute();
|
|
12
|
-
|
|
13
|
-
// If there's no output, Core hasn't been deployed yet, so we can proceed.
|
|
14
|
-
if (!output?.databaseSetup) {
|
|
15
|
-
return;
|
|
5
|
+
constructor(coreStackOutputService){
|
|
6
|
+
this.coreStackOutputService = coreStackOutputService;
|
|
16
7
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
8
|
+
async execute() {
|
|
9
|
+
const output = await this.coreStackOutputService.execute();
|
|
10
|
+
if (!output?.databaseSetup) return;
|
|
11
|
+
const hasDatabaseSetup = "ddb+os" === output.databaseSetup;
|
|
12
|
+
if (hasDatabaseSetup) return;
|
|
13
|
+
throw GracefulError.from(new Error("Cannot deploy with OpenSearch enabled. The Core application was previously deployed with a different database setup."), "Once a deployment method is chosen (%s or %s), you cannot switch between them.\n\nYour options:\n• If you want to use %s, you need to destroy and redeploy the entire project from scratch.\n• If you want to continue without %s, disable it in your %s config file.\n\nLearn more: https://webiny.link/deploy-diff-db-setup", "DynamoDB-only", "DynamoDB+OpenSearch", "OpenSearch", "OpenSearch", "webiny.config.tsx");
|
|
23
14
|
}
|
|
24
|
-
|
|
25
|
-
// Core was previously deployed without OpenSearch or with a different setup
|
|
26
|
-
throw GracefulError.from(new Error("Cannot deploy with OpenSearch enabled. The Core application was previously deployed with a different database setup."), ["Once a deployment method is chosen (%s or %s), you cannot switch between them.", "", "Your options:", "• If you want to use %s, you need to destroy and redeploy the entire project from scratch.", "• If you want to continue without %s, disable it in your %s config file.", "", "Learn more: https://webiny.link/deploy-diff-db-setup"].join("\n"), "DynamoDB-only", "DynamoDB+OpenSearch", "OpenSearch", "OpenSearch", "webiny.config.tsx");
|
|
27
|
-
}
|
|
28
15
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
16
|
+
const EnsureOsWasDeployed = CoreBeforeDeploy.createImplementation({
|
|
17
|
+
implementation: EnsureOsWasDeployedImpl,
|
|
18
|
+
dependencies: [
|
|
19
|
+
CoreStackOutputService
|
|
20
|
+
]
|
|
32
21
|
});
|
|
22
|
+
export { EnsureOsWasDeployed };
|
|
33
23
|
|
|
34
24
|
//# sourceMappingURL=EnsureOsWasDeployed.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"extensions/OpenSearch/EnsureOsWasDeployed.js","sources":["../../../src/extensions/OpenSearch/EnsureOsWasDeployed.ts"],"sourcesContent":["import { CoreBeforeDeploy } from \"@webiny/project/abstractions/index.js\";\nimport { GracefulError } from \"@webiny/project\";\nimport { CoreStackOutputService } from \"../../abstractions/index.js\";\n\nclass EnsureOsWasDeployedImpl implements CoreBeforeDeploy.Interface {\n constructor(private coreStackOutputService: CoreStackOutputService.Interface) {}\n\n async execute() {\n // Get the stack output from the core application\n // CoreStackOutputService automatically uses env/variant/region from ProjectSdkParamsService\n const output = await this.coreStackOutputService.execute();\n\n // If there's no output, Core hasn't been deployed yet, so we can proceed.\n if (!output?.databaseSetup) {\n return;\n }\n\n // Check if `databaseSetup` matches 'ddb+os'\n // If it matches, Core was deployed with OpenSearch and we can proceed.\n const hasDatabaseSetup = output.databaseSetup === \"ddb+os\";\n if (hasDatabaseSetup) {\n return;\n }\n\n // Core was previously deployed without OpenSearch or with a different setup\n throw GracefulError.from(\n new Error(\n \"Cannot deploy with OpenSearch enabled. The Core application was previously deployed with a different database setup.\"\n ),\n [\n \"Once a deployment method is chosen (%s or %s), you cannot switch between them.\",\n \"\",\n \"Your options:\",\n \"• If you want to use %s, you need to destroy and redeploy the entire project from scratch.\",\n \"• If you want to continue without %s, disable it in your %s config file.\",\n \"\",\n \"Learn more: https://webiny.link/deploy-diff-db-setup\"\n ].join(\"\\n\"),\n \"DynamoDB-only\",\n \"DynamoDB+OpenSearch\",\n \"OpenSearch\",\n \"OpenSearch\",\n \"webiny.config.tsx\"\n );\n }\n}\n\nexport const EnsureOsWasDeployed = CoreBeforeDeploy.createImplementation({\n implementation: EnsureOsWasDeployedImpl,\n dependencies: [CoreStackOutputService]\n});\n"],"names":["EnsureOsWasDeployedImpl","coreStackOutputService","output","hasDatabaseSetup","GracefulError","Error","EnsureOsWasDeployed","CoreBeforeDeploy","CoreStackOutputService"],"mappings":";;;AAIA,MAAMA;IACF,YAAoBC,sBAAwD,CAAE;aAA1DA,sBAAsB,GAAtBA;IAA2D;IAE/E,MAAM,UAAU;QAGZ,MAAMC,SAAS,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO;QAGxD,IAAI,CAACA,QAAQ,eACT;QAKJ,MAAMC,mBAAmBD,AAAyB,aAAzBA,OAAO,aAAa;QAC7C,IAAIC,kBACA;QAIJ,MAAMC,cAAc,IAAI,CACpB,IAAIC,MACA,yHAEJ,iUASA,iBACA,uBACA,cACA,cACA;IAER;AACJ;AAEO,MAAMC,sBAAsBC,iBAAiB,oBAAoB,CAAC;IACrE,gBAAgBP;IAChB,cAAc;QAACQ;KAAuB;AAC1C"}
|
|
@@ -3,29 +3,33 @@ import fs from "fs";
|
|
|
3
3
|
import { BuildAppWorkspaceService, GetApp, LoggerService } from "@webiny/project/abstractions/index.js";
|
|
4
4
|
import { getTemplatesFolderPath } from "../../utils/index.js";
|
|
5
5
|
class InjectDdbEsLambdaFnHandlerDecorator {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
6
|
+
constructor(getApp, logger, decoratee){
|
|
7
|
+
this.getApp = getApp;
|
|
8
|
+
this.logger = logger;
|
|
9
|
+
this.decoratee = decoratee;
|
|
10
|
+
}
|
|
11
|
+
async execute(appName, options) {
|
|
12
|
+
const result = await this.decoratee.execute(appName, options);
|
|
13
|
+
if ("core" === appName) {
|
|
14
|
+
const templatesFolderPath = getTemplatesFolderPath();
|
|
15
|
+
const app = this.getApp.execute("core");
|
|
16
|
+
const appWorkspaceFolderPath = app.paths.workspaceFolder.toString();
|
|
17
|
+
const ddbToEsHandlerTemplateFolderPath = path.join(templatesFolderPath, "extensions", "OpenSearch", "coreDdbToEsHandler");
|
|
18
|
+
fs.cpSync(ddbToEsHandlerTemplateFolderPath, appWorkspaceFolderPath, {
|
|
19
|
+
recursive: true
|
|
20
|
+
});
|
|
21
|
+
this.logger.debug("Injected DDB to OpenSearch Lambda function handler.");
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
22
24
|
}
|
|
23
|
-
return result;
|
|
24
|
-
}
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
const InjectDdbEsLambdaFnHandler = BuildAppWorkspaceService.createDecorator({
|
|
27
|
+
decorator: InjectDdbEsLambdaFnHandlerDecorator,
|
|
28
|
+
dependencies: [
|
|
29
|
+
GetApp,
|
|
30
|
+
LoggerService
|
|
31
|
+
]
|
|
29
32
|
});
|
|
33
|
+
export { InjectDdbEsLambdaFnHandler };
|
|
30
34
|
|
|
31
35
|
//# sourceMappingURL=InjectDdbEsLambdaFnHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"extensions/OpenSearch/InjectDdbEsLambdaFnHandler.js","sources":["../../../src/extensions/OpenSearch/InjectDdbEsLambdaFnHandler.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n BuildAppWorkspaceService,\n GetApp,\n LoggerService\n} from \"@webiny/project/abstractions/index.js\";\nimport { getTemplatesFolderPath } from \"~/utils/index.js\";\n\nclass InjectDdbEsLambdaFnHandlerDecorator implements BuildAppWorkspaceService.Interface {\n constructor(\n private getApp: GetApp.Interface,\n private logger: LoggerService.Interface,\n private decoratee: BuildAppWorkspaceService.Interface\n ) {}\n\n async execute(appName: GetApp.AppName, options: BuildAppWorkspaceService.Options) {\n const result = await this.decoratee.execute(appName, options);\n\n if (appName === \"core\") {\n const templatesFolderPath = getTemplatesFolderPath();\n\n const app = this.getApp.execute(\"core\");\n\n const appWorkspaceFolderPath = app.paths.workspaceFolder.toString();\n const ddbToEsHandlerTemplateFolderPath = path.join(\n templatesFolderPath,\n \"extensions\",\n \"OpenSearch\",\n \"coreDdbToEsHandler\"\n );\n\n fs.cpSync(ddbToEsHandlerTemplateFolderPath, appWorkspaceFolderPath, {\n recursive: true\n });\n\n this.logger.debug(\"Injected DDB to OpenSearch Lambda function handler.\");\n }\n\n return result;\n }\n}\n\nexport const InjectDdbEsLambdaFnHandler = BuildAppWorkspaceService.createDecorator({\n decorator: InjectDdbEsLambdaFnHandlerDecorator,\n dependencies: [GetApp, LoggerService]\n});\n"],"names":["InjectDdbEsLambdaFnHandlerDecorator","getApp","logger","decoratee","appName","options","result","templatesFolderPath","getTemplatesFolderPath","app","appWorkspaceFolderPath","ddbToEsHandlerTemplateFolderPath","path","fs","InjectDdbEsLambdaFnHandler","BuildAppWorkspaceService","GetApp","LoggerService"],"mappings":";;;;AASA,MAAMA;IACF,YACYC,MAAwB,EACxBC,MAA+B,EAC/BC,SAA6C,CACvD;aAHUF,MAAM,GAANA;aACAC,MAAM,GAANA;aACAC,SAAS,GAATA;IACT;IAEH,MAAM,QAAQC,OAAuB,EAAEC,OAAyC,EAAE;QAC9E,MAAMC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACF,SAASC;QAErD,IAAID,AAAY,WAAZA,SAAoB;YACpB,MAAMG,sBAAsBC;YAE5B,MAAMC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEhC,MAAMC,yBAAyBD,IAAI,KAAK,CAAC,eAAe,CAAC,QAAQ;YACjE,MAAME,mCAAmCC,KAAK,IAAI,CAC9CL,qBACA,cACA,cACA;YAGJM,GAAG,MAAM,CAACF,kCAAkCD,wBAAwB;gBAChE,WAAW;YACf;YAEA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB;QAEA,OAAOJ;IACX;AACJ;AAEO,MAAMQ,6BAA6BC,yBAAyB,eAAe,CAAC;IAC/E,WAAWf;IACX,cAAc;QAACgB;QAAQC;KAAc;AACzC"}
|
|
@@ -3,30 +3,34 @@ import fs from "fs";
|
|
|
3
3
|
import { BuildAppWorkspaceService, GetApp, LoggerService } from "@webiny/project/abstractions/index.js";
|
|
4
4
|
import { getTemplatesFolderPath } from "../../utils/index.js";
|
|
5
5
|
class ReplaceApiLambdaFnHandlerDecorator {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
6
|
+
constructor(getApp, logger, decoratee){
|
|
7
|
+
this.getApp = getApp;
|
|
8
|
+
this.logger = logger;
|
|
9
|
+
this.decoratee = decoratee;
|
|
10
|
+
}
|
|
11
|
+
async execute(appName, options = {}) {
|
|
12
|
+
const result = await this.decoratee.execute(appName, options);
|
|
13
|
+
if ("api" === appName) {
|
|
14
|
+
const templatesFolderPath = getTemplatesFolderPath();
|
|
15
|
+
const app = this.getApp.execute("api");
|
|
16
|
+
const appWorkspaceFolderPath = app.paths.workspaceFolder.toString();
|
|
17
|
+
const apiLambdaFnHandlersFolderPath = path.join(templatesFolderPath, "extensions", "OpenSearch", "api");
|
|
18
|
+
fs.cpSync(apiLambdaFnHandlersFolderPath, appWorkspaceFolderPath, {
|
|
19
|
+
recursive: true,
|
|
20
|
+
force: true
|
|
21
|
+
});
|
|
22
|
+
this.logger.debug("Replaced API Lambda function handlers with OpenSearch versions.");
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
23
25
|
}
|
|
24
|
-
return result;
|
|
25
|
-
}
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
const ReplaceApiLambdaFnHandlers = BuildAppWorkspaceService.createDecorator({
|
|
28
|
+
decorator: ReplaceApiLambdaFnHandlerDecorator,
|
|
29
|
+
dependencies: [
|
|
30
|
+
GetApp,
|
|
31
|
+
LoggerService
|
|
32
|
+
]
|
|
30
33
|
});
|
|
34
|
+
export { ReplaceApiLambdaFnHandlers };
|
|
31
35
|
|
|
32
36
|
//# sourceMappingURL=ReplaceApiLambdaFnHandlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"extensions/OpenSearch/ReplaceApiLambdaFnHandlers.js","sources":["../../../src/extensions/OpenSearch/ReplaceApiLambdaFnHandlers.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n BuildAppWorkspaceService,\n GetApp,\n LoggerService\n} from \"@webiny/project/abstractions/index.js\";\nimport { getTemplatesFolderPath } from \"~/utils/index.js\";\n\nclass ReplaceApiLambdaFnHandlerDecorator implements BuildAppWorkspaceService.Interface {\n constructor(\n private getApp: GetApp.Interface,\n private logger: LoggerService.Interface,\n private decoratee: BuildAppWorkspaceService.Interface\n ) {}\n\n async execute(appName: GetApp.AppName, options: BuildAppWorkspaceService.Options = {}) {\n const result = await this.decoratee.execute(appName, options);\n if (appName === \"api\") {\n const templatesFolderPath = getTemplatesFolderPath();\n\n const app = this.getApp.execute(\"api\");\n\n const appWorkspaceFolderPath = app.paths.workspaceFolder.toString();\n const apiLambdaFnHandlersFolderPath = path.join(\n templatesFolderPath,\n \"extensions\",\n \"OpenSearch\",\n \"api\"\n );\n\n fs.cpSync(apiLambdaFnHandlersFolderPath, appWorkspaceFolderPath, {\n recursive: true,\n force: true\n });\n\n this.logger.debug(\"Replaced API Lambda function handlers with OpenSearch versions.\");\n }\n\n return result;\n }\n}\n\nexport const ReplaceApiLambdaFnHandlers = BuildAppWorkspaceService.createDecorator({\n decorator: ReplaceApiLambdaFnHandlerDecorator,\n dependencies: [GetApp, LoggerService]\n});\n"],"names":["ReplaceApiLambdaFnHandlerDecorator","getApp","logger","decoratee","appName","options","result","templatesFolderPath","getTemplatesFolderPath","app","appWorkspaceFolderPath","apiLambdaFnHandlersFolderPath","path","fs","ReplaceApiLambdaFnHandlers","BuildAppWorkspaceService","GetApp","LoggerService"],"mappings":";;;;AASA,MAAMA;IACF,YACYC,MAAwB,EACxBC,MAA+B,EAC/BC,SAA6C,CACvD;aAHUF,MAAM,GAANA;aACAC,MAAM,GAANA;aACAC,SAAS,GAATA;IACT;IAEH,MAAM,QAAQC,OAAuB,EAAEC,UAA4C,CAAC,CAAC,EAAE;QACnF,MAAMC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACF,SAASC;QACrD,IAAID,AAAY,UAAZA,SAAmB;YACnB,MAAMG,sBAAsBC;YAE5B,MAAMC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEhC,MAAMC,yBAAyBD,IAAI,KAAK,CAAC,eAAe,CAAC,QAAQ;YACjE,MAAME,gCAAgCC,KAAK,IAAI,CAC3CL,qBACA,cACA,cACA;YAGJM,GAAG,MAAM,CAACF,+BAA+BD,wBAAwB;gBAC7D,WAAW;gBACX,OAAO;YACX;YAEA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB;QAEA,OAAOJ;IACX;AACJ;AAEO,MAAMQ,6BAA6BC,yBAAyB,eAAe,CAAC;IAC/E,WAAWf;IACX,cAAc;QAACgB;QAAQC;KAAc;AACzC"}
|
package/extensions/OpenSearch.js
CHANGED
|
@@ -1,38 +1,37 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { defineExtension } from "@webiny/project/defineExtension/index.js";
|
|
3
|
-
import { OpenSearch
|
|
3
|
+
import { OpenSearch } from "../pulumi/extensions/index.js";
|
|
4
4
|
import { createPathResolver } from "@webiny/project";
|
|
5
|
-
import { CoreBeforeDeploy,
|
|
5
|
+
import { CoreBeforeDeploy, DatabaseSetup, ProjectDecorator } from "@webiny/project/extensions/index.js";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
const p = createPathResolver(import.meta.dirname, "OpenSearch");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
})));
|
|
35
|
-
}
|
|
8
|
+
const OpenSearch_OpenSearch = defineExtension({
|
|
9
|
+
type: "Project/OpenSearch",
|
|
10
|
+
tags: {
|
|
11
|
+
runtimeContext: "project"
|
|
12
|
+
},
|
|
13
|
+
description: "Enable and configure Opensearch integration with project-level setup.",
|
|
14
|
+
paramsSchema: z.object({
|
|
15
|
+
enabled: z.boolean().describe("Whether to enable OpenSearch.").default(false).optional(),
|
|
16
|
+
domainName: z.string().describe("The name of the Opensearch domain.").optional(),
|
|
17
|
+
indexPrefix: z.string().describe("A prefix to be added to all Opensearch indexes.").optional(),
|
|
18
|
+
sharedIndexes: z.boolean().describe("Whether to use shared indexes across all environments (true) or separate indexes per environment (false).").default(false).optional(),
|
|
19
|
+
endpoint: z.string().describe("The endpoint of an existing OpenSearch cluster. Useful when cluster is behind a custom domain.").optional(),
|
|
20
|
+
username: z.string().describe("The username for OpenSearch authentication.").optional(),
|
|
21
|
+
password: z.string().describe("The password for OpenSearch authentication.").optional()
|
|
22
|
+
}),
|
|
23
|
+
render: (props)=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(OpenSearch, props), props.enabled && /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(DatabaseSetup, {
|
|
24
|
+
setupName: "ddb+os"
|
|
25
|
+
}), /*#__PURE__*/ react.createElement(ProjectDecorator, {
|
|
26
|
+
src: p("InjectDdbEsLambdaFnHandler.js")
|
|
27
|
+
}), /*#__PURE__*/ react.createElement(ProjectDecorator, {
|
|
28
|
+
src: p("ReplaceApiLambdaFnHandlers.js")
|
|
29
|
+
}), /*#__PURE__*/ react.createElement(CoreBeforeDeploy, {
|
|
30
|
+
src: p("EnsureOsServiceRoleBeforeCoreDeploy.js")
|
|
31
|
+
}), /*#__PURE__*/ react.createElement(CoreBeforeDeploy, {
|
|
32
|
+
src: p("EnsureOsWasDeployed.js")
|
|
33
|
+
})))
|
|
36
34
|
});
|
|
35
|
+
export { OpenSearch_OpenSearch as OpenSearch };
|
|
37
36
|
|
|
38
37
|
//# sourceMappingURL=OpenSearch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"extensions/OpenSearch.js","sources":["../../src/extensions/OpenSearch.tsx"],"sourcesContent":["import React from \"react\";\nimport { defineExtension } from \"@webiny/project/defineExtension/index.js\";\nimport { OpenSearch as PulumiOpenSearch } from \"~/pulumi/extensions/index.js\";\nimport { createPathResolver } from \"@webiny/project\";\nimport {\n CoreBeforeDeploy,\n ProjectDecorator,\n DatabaseSetup\n} from \"@webiny/project/extensions/index.js\";\nimport { z } from \"zod\";\n\nconst p = createPathResolver(import.meta.dirname, \"OpenSearch\");\n\nexport const OpenSearch = defineExtension({\n type: \"Project/OpenSearch\",\n tags: { runtimeContext: \"project\" },\n description: \"Enable and configure Opensearch integration with project-level setup.\",\n paramsSchema: z.object({\n enabled: z.boolean().describe(\"Whether to enable OpenSearch.\").default(false).optional(),\n domainName: z.string().describe(\"The name of the Opensearch domain.\").optional(),\n indexPrefix: z\n .string()\n .describe(\"A prefix to be added to all Opensearch indexes.\")\n .optional(),\n sharedIndexes: z\n .boolean()\n .describe(\n \"Whether to use shared indexes across all environments (true) or separate indexes per environment (false).\"\n )\n .default(false)\n .optional(),\n endpoint: z\n .string()\n .describe(\n \"The endpoint of an existing OpenSearch cluster. Useful when cluster is behind a custom domain.\"\n )\n .optional(),\n username: z.string().describe(\"The username for OpenSearch authentication.\").optional(),\n password: z.string().describe(\"The password for OpenSearch authentication.\").optional()\n }),\n render: props => {\n return (\n <>\n <PulumiOpenSearch {...props} />\n {props.enabled && (\n <>\n {/* Override database setup to indicate OpenSearch is enabled. */}\n <DatabaseSetup setupName=\"ddb+os\" />\n <ProjectDecorator src={p(\"InjectDdbEsLambdaFnHandler.js\")} />\n <ProjectDecorator src={p(\"ReplaceApiLambdaFnHandlers.js\")} />\n <CoreBeforeDeploy src={p(\"EnsureOsServiceRoleBeforeCoreDeploy.js\")} />\n <CoreBeforeDeploy src={p(\"EnsureOsWasDeployed.js\")} />\n </>\n )}\n </>\n );\n }\n});\n"],"names":["p","createPathResolver","OpenSearch","defineExtension","z","props","PulumiOpenSearch","DatabaseSetup","ProjectDecorator","CoreBeforeDeploy"],"mappings":";;;;;;AAWA,MAAMA,IAAIC,mBAAmB,YAAY,OAAO,EAAE;AAE3C,MAAMC,wBAAaC,gBAAgB;IACtC,MAAM;IACN,MAAM;QAAE,gBAAgB;IAAU;IAClC,aAAa;IACb,cAAcC,EAAE,MAAM,CAAC;QACnB,SAASA,EAAE,OAAO,GAAG,QAAQ,CAAC,iCAAiC,OAAO,CAAC,OAAO,QAAQ;QACtF,YAAYA,EAAE,MAAM,GAAG,QAAQ,CAAC,sCAAsC,QAAQ;QAC9E,aAAaA,EAAAA,MACF,GACN,QAAQ,CAAC,mDACT,QAAQ;QACb,eAAeA,EAAAA,OACH,GACP,QAAQ,CACL,6GAEH,OAAO,CAAC,OACR,QAAQ;QACb,UAAUA,EAAAA,MACC,GACN,QAAQ,CACL,kGAEH,QAAQ;QACb,UAAUA,EAAE,MAAM,GAAG,QAAQ,CAAC,+CAA+C,QAAQ;QACrF,UAAUA,EAAE,MAAM,GAAG,QAAQ,CAAC,+CAA+C,QAAQ;IACzF;IACA,QAAQC,CAAAA,QACG,WAAP,GACI,wDACI,oBAACC,YAAqBD,QACrBA,MAAM,OAAO,IAAI,WAAJ,GACV,wDAEI,oBAACE,eAAaA;YAAC,WAAU;0BACzB,oBAACC,kBAAgBA;YAAC,KAAKR,EAAE;0BACzB,oBAACQ,kBAAgBA;YAAC,KAAKR,EAAE;0BACzB,oBAACS,kBAAgBA;YAAC,KAAKT,EAAE;0BACzB,oBAACS,kBAAgBA;YAAC,KAAKT,EAAE;;AAMjD"}
|
|
@@ -30,83 +30,74 @@ const INSTALL_MUTATION = `
|
|
|
30
30
|
}
|
|
31
31
|
`;
|
|
32
32
|
class AutoInstallAfterApiDeployImpl {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
async execute(params) {
|
|
40
|
-
if (params.preview) {
|
|
41
|
-
// Skip auto-install on preview deployments
|
|
42
|
-
return;
|
|
33
|
+
constructor(apiGqlClient, ui, getProjectConfig, logger){
|
|
34
|
+
this.apiGqlClient = apiGqlClient;
|
|
35
|
+
this.ui = ui;
|
|
36
|
+
this.getProjectConfig = getProjectConfig;
|
|
37
|
+
this.logger = logger;
|
|
43
38
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
data
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
message,
|
|
96
|
-
code
|
|
97
|
-
});
|
|
98
|
-
this.ui.error(`Installation failed: ${message} (${code})`);
|
|
99
|
-
throw new Error(message);
|
|
39
|
+
async execute(params) {
|
|
40
|
+
if (params.preview) return;
|
|
41
|
+
const projectConfig = await this.getProjectConfig.execute();
|
|
42
|
+
const adminAutoInstallExtensions = projectConfig.extensionsByType("Project/AutoInstall");
|
|
43
|
+
if (0 === adminAutoInstallExtensions.length) return;
|
|
44
|
+
const config = adminAutoInstallExtensions[0].params;
|
|
45
|
+
this.ui.info("Checking if system is already installed...");
|
|
46
|
+
try {
|
|
47
|
+
const isInstalledResponse = await this.apiGqlClient.query({
|
|
48
|
+
query: IS_INSTALLED_QUERY
|
|
49
|
+
});
|
|
50
|
+
if (isInstalledResponse.data?.system.isSystemInstalled.data === true) return void this.ui.info("System is already installed, skipping auto-install.");
|
|
51
|
+
} catch (error) {
|
|
52
|
+
this.logger.error("Failed to check installation status", {
|
|
53
|
+
error
|
|
54
|
+
});
|
|
55
|
+
this.ui.warning(`Could not check installation status: ${error.message}`);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this.ui.info("Auto-installing...");
|
|
59
|
+
const adminUser = config.adminUser || {
|
|
60
|
+
firstName: "John",
|
|
61
|
+
lastName: "Smith",
|
|
62
|
+
email: "admin@webiny.com",
|
|
63
|
+
password: "12345678"
|
|
64
|
+
};
|
|
65
|
+
const variables = {
|
|
66
|
+
installationInput: [
|
|
67
|
+
{
|
|
68
|
+
app: "Cognito",
|
|
69
|
+
data: adminUser
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
};
|
|
73
|
+
const installResponse = await this.apiGqlClient.mutation({
|
|
74
|
+
mutation: INSTALL_MUTATION,
|
|
75
|
+
variables
|
|
76
|
+
});
|
|
77
|
+
if (installResponse.data?.system.installSystem.error) {
|
|
78
|
+
const { message, code } = installResponse.data.system.installSystem.error;
|
|
79
|
+
this.logger.error("Installation failed", {
|
|
80
|
+
message,
|
|
81
|
+
code
|
|
82
|
+
});
|
|
83
|
+
this.ui.error(`Installation failed: ${message} (${code})`);
|
|
84
|
+
throw new Error(message);
|
|
85
|
+
}
|
|
86
|
+
this.ui.success("System installed successfully!");
|
|
87
|
+
this.ui.info("Admin credentials:");
|
|
88
|
+
this.ui.info(` Email: ${adminUser.email}`);
|
|
89
|
+
this.ui.info(` Password: ${adminUser.password}`);
|
|
100
90
|
}
|
|
101
|
-
this.ui.success("System installed successfully!");
|
|
102
|
-
this.ui.info("Admin credentials:");
|
|
103
|
-
this.ui.info(` Email: ${adminUser.email}`);
|
|
104
|
-
this.ui.info(` Password: ${adminUser.password}`);
|
|
105
|
-
}
|
|
106
91
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
92
|
+
const AutoInstallAfterApiDeploy = ApiAfterDeploy.createImplementation({
|
|
93
|
+
implementation: AutoInstallAfterApiDeployImpl,
|
|
94
|
+
dependencies: [
|
|
95
|
+
ApiGqlClient,
|
|
96
|
+
UiService,
|
|
97
|
+
GetProjectConfigService,
|
|
98
|
+
LoggerService
|
|
99
|
+
]
|
|
110
100
|
});
|
|
101
|
+
export { AutoInstallAfterApiDeploy };
|
|
111
102
|
|
|
112
103
|
//# sourceMappingURL=AutoInstallAfterApiDeploy.js.map
|