sst 3.0.0 → 3.0.1-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +7 -139
- package/src/index.ts +1 -0
- package/src/resource.ts +15 -0
- package/tsconfig.json +11 -0
- package/LICENSE +0 -21
- package/README.md +0 -43
- package/bootstrap.d.ts +0 -5
- package/bootstrap.js +0 -318
- package/bus.d.ts +0 -20
- package/bus.js +0 -52
- package/cache.d.ts +0 -4
- package/cache.js +0 -31
- package/cdk/deploy-stack.d.ts +0 -223
- package/cdk/deploy-stack.js +0 -562
- package/cdk/deployments-wrapper.d.ts +0 -3
- package/cdk/deployments-wrapper.js +0 -135
- package/cdk/deployments.d.ts +0 -327
- package/cdk/deployments.js +0 -360
- package/cdk/util.d.ts +0 -1
- package/cdk/util.js +0 -17
- package/cli/ci-info.d.ts +0 -4
- package/cli/ci-info.js +0 -8
- package/cli/colors.d.ts +0 -17
- package/cli/colors.js +0 -27
- package/cli/commands/bind.d.ts +0 -19
- package/cli/commands/bind.js +0 -360
- package/cli/commands/bootstrap.d.ts +0 -15
- package/cli/commands/bootstrap.js +0 -11
- package/cli/commands/build.d.ts +0 -17
- package/cli/commands/build.js +0 -25
- package/cli/commands/connect.d.ts +0 -17
- package/cli/commands/connect.js +0 -55
- package/cli/commands/console.d.ts +0 -15
- package/cli/commands/console.js +0 -22
- package/cli/commands/deploy.d.ts +0 -19
- package/cli/commands/deploy.js +0 -112
- package/cli/commands/dev.d.ts +0 -25
- package/cli/commands/dev.js +0 -351
- package/cli/commands/diff.d.ts +0 -19
- package/cli/commands/diff.js +0 -89
- package/cli/commands/plugins/kysely.d.ts +0 -1
- package/cli/commands/plugins/kysely.js +0 -87
- package/cli/commands/plugins/pothos.d.ts +0 -1
- package/cli/commands/plugins/pothos.js +0 -58
- package/cli/commands/plugins/warmer.d.ts +0 -1
- package/cli/commands/plugins/warmer.js +0 -33
- package/cli/commands/remove.d.ts +0 -19
- package/cli/commands/remove.js +0 -62
- package/cli/commands/secrets/get.d.ts +0 -19
- package/cli/commands/secrets/get.js +0 -27
- package/cli/commands/secrets/list.d.ts +0 -19
- package/cli/commands/secrets/list.js +0 -69
- package/cli/commands/secrets/load.d.ts +0 -17
- package/cli/commands/secrets/load.js +0 -47
- package/cli/commands/secrets/remove.d.ts +0 -19
- package/cli/commands/secrets/remove.js +0 -27
- package/cli/commands/secrets/secrets.d.ts +0 -2
- package/cli/commands/secrets/secrets.js +0 -16
- package/cli/commands/secrets/set.d.ts +0 -21
- package/cli/commands/secrets/set.js +0 -54
- package/cli/commands/telemetry.d.ts +0 -17
- package/cli/commands/telemetry.js +0 -24
- package/cli/commands/transform.d.ts +0 -17
- package/cli/commands/transform.js +0 -62
- package/cli/commands/types.d.ts +0 -15
- package/cli/commands/types.js +0 -25
- package/cli/commands/update.d.ts +0 -17
- package/cli/commands/update.js +0 -116
- package/cli/commands/version.d.ts +0 -15
- package/cli/commands/version.js +0 -15
- package/cli/local/router.d.ts +0 -44
- package/cli/local/router.js +0 -43
- package/cli/local/server.d.ts +0 -22
- package/cli/local/server.js +0 -319
- package/cli/program.d.ts +0 -19
- package/cli/program.js +0 -87
- package/cli/spinner.d.ts +0 -3
- package/cli/spinner.js +0 -14
- package/cli/sst.d.ts +0 -2
- package/cli/sst.js +0 -74
- package/cli/telemetry/environment.d.ts +0 -15
- package/cli/telemetry/environment.js +0 -27
- package/cli/telemetry/post-payload.d.ts +0 -1
- package/cli/telemetry/post-payload.js +0 -27
- package/cli/telemetry/project-id.d.ts +0 -2
- package/cli/telemetry/project-id.js +0 -47
- package/cli/telemetry/telemetry.d.ts +0 -19
- package/cli/telemetry/telemetry.js +0 -103
- package/cli/terminal.d.ts +0 -1
- package/cli/terminal.js +0 -8
- package/cli/ui/deploy.d.ts +0 -10
- package/cli/ui/deploy.js +0 -172
- package/cli/ui/functions.d.ts +0 -2
- package/cli/ui/functions.js +0 -130
- package/cli/ui/header.d.ts +0 -5
- package/cli/ui/header.js +0 -16
- package/cli/ui/stack.d.ts +0 -1
- package/cli/ui/stack.js +0 -6
- package/config.d.ts +0 -56
- package/config.js +0 -244
- package/constructs/Api.d.ts +0 -814
- package/constructs/Api.js +0 -743
- package/constructs/ApiGatewayV1Api.d.ts +0 -642
- package/constructs/ApiGatewayV1Api.js +0 -767
- package/constructs/App.d.ts +0 -168
- package/constructs/App.js +0 -493
- package/constructs/AppSyncApi.d.ts +0 -550
- package/constructs/AppSyncApi.js +0 -493
- package/constructs/AstroSite.d.ts +0 -39
- package/constructs/AstroSite.js +0 -78
- package/constructs/AstroSite.tsdoc.d.ts +0 -2
- package/constructs/AstroSite.tsdoc.js +0 -2
- package/constructs/Auth.d.ts +0 -100
- package/constructs/Auth.js +0 -177
- package/constructs/BaseSite.d.ts +0 -29
- package/constructs/BaseSite.js +0 -43
- package/constructs/Bucket.d.ts +0 -364
- package/constructs/Bucket.js +0 -327
- package/constructs/Cognito.d.ts +0 -232
- package/constructs/Cognito.js +0 -370
- package/constructs/Config.d.ts +0 -3
- package/constructs/Config.js +0 -3
- package/constructs/Construct.d.ts +0 -23
- package/constructs/Construct.js +0 -46
- package/constructs/Cron.d.ts +0 -164
- package/constructs/Cron.js +0 -114
- package/constructs/Distribution.d.ts +0 -143
- package/constructs/Distribution.js +0 -260
- package/constructs/EdgeFunction.d.ts +0 -49
- package/constructs/EdgeFunction.js +0 -442
- package/constructs/EventBus.d.ts +0 -444
- package/constructs/EventBus.js +0 -440
- package/constructs/Function.d.ts +0 -690
- package/constructs/Function.js +0 -583
- package/constructs/FunctionalStack.d.ts +0 -13
- package/constructs/FunctionalStack.js +0 -62
- package/constructs/Job.d.ts +0 -337
- package/constructs/Job.js +0 -404
- package/constructs/KinesisStream.d.ts +0 -224
- package/constructs/KinesisStream.js +0 -207
- package/constructs/Metadata.d.ts +0 -60
- package/constructs/Metadata.js +0 -1
- package/constructs/NextjsSite.d.ts +0 -104
- package/constructs/NextjsSite.js +0 -308
- package/constructs/Parameter.d.ts +0 -37
- package/constructs/Parameter.js +0 -53
- package/constructs/Queue.d.ts +0 -194
- package/constructs/Queue.js +0 -204
- package/constructs/RDS.d.ts +0 -221
- package/constructs/RDS.js +0 -363
- package/constructs/RemixSite.d.ts +0 -42
- package/constructs/RemixSite.js +0 -158
- package/constructs/RemixSite.tsdoc.d.ts +0 -2
- package/constructs/RemixSite.tsdoc.js +0 -2
- package/constructs/Script.d.ts +0 -160
- package/constructs/Script.js +0 -179
- package/constructs/Secret.d.ts +0 -30
- package/constructs/Secret.js +0 -59
- package/constructs/Service.d.ts +0 -487
- package/constructs/Service.js +0 -655
- package/constructs/SolidStartSite.d.ts +0 -37
- package/constructs/SolidStartSite.js +0 -66
- package/constructs/SolidStartSite.tsdoc.d.ts +0 -2
- package/constructs/SolidStartSite.tsdoc.js +0 -2
- package/constructs/SsrFunction.d.ts +0 -60
- package/constructs/SsrFunction.js +0 -226
- package/constructs/SsrSite.d.ts +0 -407
- package/constructs/SsrSite.js +0 -850
- package/constructs/Stack.d.ts +0 -127
- package/constructs/Stack.js +0 -243
- package/constructs/StaticSite.d.ts +0 -348
- package/constructs/StaticSite.js +0 -468
- package/constructs/SvelteKitSite.d.ts +0 -40
- package/constructs/SvelteKitSite.js +0 -106
- package/constructs/SvelteKitSite.tsdoc.d.ts +0 -2
- package/constructs/SvelteKitSite.tsdoc.js +0 -2
- package/constructs/Table.d.ts +0 -410
- package/constructs/Table.js +0 -425
- package/constructs/Topic.d.ts +0 -257
- package/constructs/Topic.js +0 -273
- package/constructs/WebSocketApi.d.ts +0 -355
- package/constructs/WebSocketApi.js +0 -404
- package/constructs/cdk/HttpAwsIntegration.d.ts +0 -32
- package/constructs/cdk/HttpAwsIntegration.js +0 -24
- package/constructs/cdk/certificate-base.d.ts +0 -18
- package/constructs/cdk/certificate-base.js +0 -26
- package/constructs/cdk/dns-validated-certificate.d.ts +0 -77
- package/constructs/cdk/dns-validated-certificate.js +0 -125
- package/constructs/cdk/website-redirect.d.ts +0 -53
- package/constructs/cdk/website-redirect.js +0 -77
- package/constructs/context.d.ts +0 -3
- package/constructs/context.js +0 -27
- package/constructs/deferred_task.d.ts +0 -6
- package/constructs/deferred_task.js +0 -45
- package/constructs/deprecated/NextjsSite.d.ts +0 -309
- package/constructs/deprecated/NextjsSite.js +0 -1074
- package/constructs/deprecated/cross-region-helper.d.ts +0 -7
- package/constructs/deprecated/cross-region-helper.js +0 -152
- package/constructs/deprecated/index.d.ts +0 -1
- package/constructs/deprecated/index.js +0 -1
- package/constructs/future/Auth.d.ts +0 -80
- package/constructs/future/Auth.js +0 -122
- package/constructs/future/index.d.ts +0 -1
- package/constructs/future/index.js +0 -1
- package/constructs/index.d.ts +0 -32
- package/constructs/index.js +0 -32
- package/constructs/static-file-list.d.ts +0 -1
- package/constructs/static-file-list.js +0 -51
- package/constructs/util/apiGatewayV1AccessLog.d.ts +0 -15
- package/constructs/util/apiGatewayV1AccessLog.js +0 -76
- package/constructs/util/apiGatewayV2AccessLog.d.ts +0 -10
- package/constructs/util/apiGatewayV2AccessLog.js +0 -107
- package/constructs/util/apiGatewayV2Cors.d.ts +0 -67
- package/constructs/util/apiGatewayV2Cors.js +0 -21
- package/constructs/util/apiGatewayV2Domain.d.ts +0 -47
- package/constructs/util/apiGatewayV2Domain.js +0 -208
- package/constructs/util/appSyncApiDomain.d.ts +0 -41
- package/constructs/util/appSyncApiDomain.js +0 -176
- package/constructs/util/builder.d.ts +0 -3
- package/constructs/util/builder.js +0 -9
- package/constructs/util/duration.d.ts +0 -3
- package/constructs/util/duration.js +0 -19
- package/constructs/util/functionBinding.d.ts +0 -31
- package/constructs/util/functionBinding.js +0 -104
- package/constructs/util/functionUrlCors.d.ts +0 -67
- package/constructs/util/functionUrlCors.js +0 -23
- package/constructs/util/permission.d.ts +0 -8
- package/constructs/util/permission.js +0 -228
- package/constructs/util/size.d.ts +0 -3
- package/constructs/util/size.js +0 -12
- package/constructs/util/warning.d.ts +0 -11
- package/constructs/util/warning.js +0 -21
- package/context/context.d.ts +0 -13
- package/context/context.js +0 -69
- package/context/context2.d.ts +0 -16
- package/context/context2.js +0 -108
- package/context/handler.d.ts +0 -25
- package/context/handler.js +0 -21
- package/context/index.d.ts +0 -2
- package/context/index.js +0 -2
- package/credentials.d.ts +0 -9
- package/credentials.js +0 -145
- package/error.d.ts +0 -6
- package/error.js +0 -10
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/iot.d.ts +0 -6
- package/iot.js +0 -163
- package/logger.d.ts +0 -3
- package/logger.js +0 -32
- package/node/actor/index.d.ts +0 -29
- package/node/actor/index.js +0 -17
- package/node/api/index.d.ts +0 -64
- package/node/api/index.js +0 -179
- package/node/auth/adapter/adapter.d.ts +0 -3
- package/node/auth/adapter/adapter.js +0 -3
- package/node/auth/adapter/facebook.d.ts +0 -2
- package/node/auth/adapter/facebook.js +0 -26
- package/node/auth/adapter/github.d.ts +0 -2
- package/node/auth/adapter/github.js +0 -21
- package/node/auth/adapter/google.d.ts +0 -9
- package/node/auth/adapter/google.js +0 -18
- package/node/auth/adapter/link.d.ts +0 -8
- package/node/auth/adapter/link.js +0 -39
- package/node/auth/adapter/oauth.d.ts +0 -25
- package/node/auth/adapter/oauth.js +0 -52
- package/node/auth/adapter/oidc.d.ts +0 -17
- package/node/auth/adapter/oidc.js +0 -50
- package/node/auth/adapter/twitch.d.ts +0 -2
- package/node/auth/adapter/twitch.js +0 -11
- package/node/auth/auth.d.ts +0 -24
- package/node/auth/auth.js +0 -74
- package/node/auth/index.d.ts +0 -13
- package/node/auth/index.js +0 -12
- package/node/auth/session.d.ts +0 -76
- package/node/auth/session.js +0 -121
- package/node/bucket/index.d.ts +0 -3
- package/node/bucket/index.js +0 -2
- package/node/config/index.d.ts +0 -13
- package/node/config/index.js +0 -22
- package/node/event-bus/index.d.ts +0 -51
- package/node/event-bus/index.js +0 -76
- package/node/function/index.d.ts +0 -3
- package/node/function/index.js +0 -3
- package/node/future/auth/adapter/adapter.d.ts +0 -10
- package/node/future/auth/adapter/adapter.js +0 -1
- package/node/future/auth/adapter/code.d.ts +0 -17
- package/node/future/auth/adapter/code.js +0 -68
- package/node/future/auth/adapter/facebook.d.ts +0 -16
- package/node/future/auth/adapter/facebook.js +0 -27
- package/node/future/auth/adapter/github.d.ts +0 -23
- package/node/future/auth/adapter/github.js +0 -23
- package/node/future/auth/adapter/google.d.ts +0 -28
- package/node/future/auth/adapter/google.js +0 -22
- package/node/future/auth/adapter/link.d.ts +0 -13
- package/node/future/auth/adapter/link.js +0 -47
- package/node/future/auth/adapter/microsoft.d.ts +0 -22
- package/node/future/auth/adapter/microsoft.js +0 -16
- package/node/future/auth/adapter/oauth.d.ts +0 -41
- package/node/future/auth/adapter/oauth.js +0 -67
- package/node/future/auth/adapter/oidc.d.ts +0 -30
- package/node/future/auth/adapter/oidc.js +0 -63
- package/node/future/auth/adapter/spotify.d.ts +0 -23
- package/node/future/auth/adapter/spotify.js +0 -22
- package/node/future/auth/encryption.d.ts +0 -2
- package/node/future/auth/encryption.js +0 -30
- package/node/future/auth/handler.d.ts +0 -46
- package/node/future/auth/handler.js +0 -280
- package/node/future/auth/index.d.ts +0 -17
- package/node/future/auth/index.js +0 -15
- package/node/future/auth/session.d.ts +0 -71
- package/node/future/auth/session.js +0 -146
- package/node/graphql/index.d.ts +0 -15
- package/node/graphql/index.js +0 -32
- package/node/job/index.d.ts +0 -37
- package/node/job/index.js +0 -64
- package/node/kinesis-stream/index.d.ts +0 -3
- package/node/kinesis-stream/index.js +0 -3
- package/node/queue/index.d.ts +0 -3
- package/node/queue/index.js +0 -2
- package/node/rds/index.d.ts +0 -3
- package/node/rds/index.js +0 -2
- package/node/service/index.d.ts +0 -3
- package/node/service/index.js +0 -4
- package/node/site/index.d.ts +0 -18
- package/node/site/index.js +0 -18
- package/node/table/index.d.ts +0 -3
- package/node/table/index.js +0 -4
- package/node/topic/index.d.ts +0 -3
- package/node/topic/index.js +0 -4
- package/node/util/index.d.ts +0 -2
- package/node/util/index.js +0 -196
- package/node/util/loader.d.ts +0 -2
- package/node/util/loader.js +0 -51
- package/node/websocket-api/index.d.ts +0 -23
- package/node/websocket-api/index.js +0 -48
- package/pothos.d.ts +0 -7
- package/pothos.js +0 -160
- package/project.d.ts +0 -75
- package/project.js +0 -188
- package/runtime/handlers/container.d.ts +0 -2
- package/runtime/handlers/container.js +0 -263
- package/runtime/handlers/dotnet.d.ts +0 -2
- package/runtime/handlers/dotnet.js +0 -115
- package/runtime/handlers/go.d.ts +0 -2
- package/runtime/handlers/go.js +0 -126
- package/runtime/handlers/java.d.ts +0 -2
- package/runtime/handlers/java.js +0 -103
- package/runtime/handlers/node.d.ts +0 -2
- package/runtime/handlers/node.js +0 -269
- package/runtime/handlers/python.d.ts +0 -2
- package/runtime/handlers/python.js +0 -141
- package/runtime/handlers/pythonBundling.d.ts +0 -82
- package/runtime/handlers/pythonBundling.js +0 -80
- package/runtime/handlers/rust.d.ts +0 -2
- package/runtime/handlers/rust.js +0 -110
- package/runtime/handlers.d.ts +0 -74
- package/runtime/handlers.js +0 -151
- package/runtime/iot.d.ts +0 -1
- package/runtime/iot.js +0 -17
- package/runtime/runtime.d.ts +0 -32
- package/runtime/runtime.js +0 -1
- package/runtime/server.d.ts +0 -6
- package/runtime/server.js +0 -150
- package/runtime/workers.d.ts +0 -37
- package/runtime/workers.js +0 -85
- package/stacks/app-metadata.d.ts +0 -7
- package/stacks/app-metadata.js +0 -75
- package/stacks/assembly.d.ts +0 -1
- package/stacks/assembly.js +0 -4
- package/stacks/build.d.ts +0 -9
- package/stacks/build.js +0 -110
- package/stacks/deploy.d.ts +0 -9
- package/stacks/deploy.js +0 -240
- package/stacks/diff.d.ts +0 -8
- package/stacks/diff.js +0 -62
- package/stacks/index.d.ts +0 -10
- package/stacks/index.js +0 -10
- package/stacks/metadata.d.ts +0 -11
- package/stacks/metadata.js +0 -83
- package/stacks/monitor.d.ts +0 -32
- package/stacks/monitor.js +0 -151
- package/stacks/remove.d.ts +0 -8
- package/stacks/remove.js +0 -76
- package/stacks/synth.d.ts +0 -12
- package/stacks/synth.js +0 -94
- package/support/base-site-archiver.mjs +0 -99
- package/support/base-site-custom-resource/s3-handler.py +0 -195
- package/support/base-site-custom-resource/s3-upload.py +0 -89
- package/support/bootstrap-metadata-function/index.mjs +0 -58011
- package/support/bridge/Dockerfile +0 -3
- package/support/bridge/bridge.mjs +0 -146
- package/support/certificate-requestor/index.js +0 -549
- package/support/custom-resources/index.mjs +0 -180627
- package/support/dotnet31-bootstrap/Program.cs +0 -17
- package/support/dotnet31-bootstrap/dotnet-bootstrap.csproj +0 -12
- package/support/dotnet31-bootstrap/release/Amazon.Lambda.Core.dll +0 -0
- package/support/dotnet31-bootstrap/release/Amazon.Lambda.RuntimeSupport.dll +0 -0
- package/support/dotnet31-bootstrap/release/System.Runtime.CompilerServices.Unsafe.dll +0 -0
- package/support/dotnet31-bootstrap/release/System.Text.Encodings.Web.dll +0 -0
- package/support/dotnet31-bootstrap/release/System.Text.Json.dll +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.deps.json +0 -230
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.dll +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.pdb +0 -0
- package/support/dotnet31-bootstrap/release/dotnet-bootstrap.runtimeconfig.json +0 -9
- package/support/dotnet6-bootstrap/Program.cs +0 -17
- package/support/dotnet6-bootstrap/dotnet-bootstrap.csproj +0 -12
- package/support/dotnet6-bootstrap/release/Amazon.Lambda.Core.dll +0 -0
- package/support/dotnet6-bootstrap/release/Amazon.Lambda.RuntimeSupport.dll +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.deps.json +0 -59
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.dll +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.pdb +0 -0
- package/support/dotnet6-bootstrap/release/dotnet-bootstrap.runtimeconfig.json +0 -12
- package/support/edge-function/edge-lambda-version.mjs +0 -3
- package/support/edge-function/edge-lambda.mjs +0 -3
- package/support/edge-function/s3-bucket.mjs +0 -3
- package/support/event-bus-retrier/index.mjs +0 -75
- package/support/java-runtime/install.sh +0 -25
- package/support/java-runtime/pom.xml +0 -39
- package/support/java-runtime/release/aws-lambda-java-core-1.2.0.jar +0 -0
- package/support/java-runtime/release/aws-lambda-java-runtime-interface-client-1.1.0.jar +0 -0
- package/support/java-runtime/release/aws-lambda-java-serialization-1.0.0.jar +0 -0
- package/support/job-manager/index.mjs +0 -57679
- package/support/nixpacks/Dockerfile +0 -6
- package/support/nodejs-runtime/index.mjs +0 -169
- package/support/python-runtime/Dockerfile +0 -9
- package/support/python-runtime/Dockerfile.custom +0 -21
- package/support/python-runtime/Dockerfile.dependencies +0 -26
- package/support/python-runtime/runtime.py +0 -127
- package/support/rds-migrator/index.mjs +0 -49
- package/support/remix-site-function/edge-server.js +0 -161
- package/support/remix-site-function/polyfill.js +0 -24
- package/support/remix-site-function/regional-server.js +0 -164
- package/support/script-function/index.mjs +0 -48760
- package/support/service-dev-function/index.js +0 -1
- package/support/signing-function/index.mjs +0 -3769
- package/support/sls-nextjs-site-build-helper/build.cjs +0 -91
- package/support/sls-nextjs-site-build-helper/index-wrapper.js +0 -19
- package/support/sls-nextjs-site-function-code-replacer/lambda-code-updater.py +0 -156
- package/support/sls-nextjs-site-stub/index.html +0 -99
- package/support/ssr-site-function-archiver.mjs +0 -96
- package/support/ssr-site-function-stub/index.js +0 -5
- package/support/ssr-warmer/index.mjs +0 -34235
- package/util/error.d.ts +0 -3
- package/util/error.js +0 -6
- package/util/fs.d.ts +0 -4
- package/util/fs.js +0 -46
- package/util/lazy.d.ts +0 -1
- package/util/lazy.js +0 -11
- package/util/module.d.ts +0 -1
- package/util/module.js +0 -5
- package/util/process.d.ts +0 -2
- package/util/process.js +0 -3
- package/watcher.d.ts +0 -14
- package/watcher.js +0 -35
|
@@ -1,404 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import { CustomResource } from "aws-cdk-lib/core";
|
|
3
|
-
import * as iam from "aws-cdk-lib/aws-iam";
|
|
4
|
-
import * as apig from "@aws-cdk/aws-apigatewayv2-alpha";
|
|
5
|
-
import * as apigAuthorizers from "@aws-cdk/aws-apigatewayv2-authorizers-alpha";
|
|
6
|
-
import { Effect, Policy, PolicyStatement } from "aws-cdk-lib/aws-iam";
|
|
7
|
-
import { Stack } from "./Stack.js";
|
|
8
|
-
import { getFunctionRef, isCDKConstruct } from "./Construct.js";
|
|
9
|
-
import { Function as Fn, } from "./Function.js";
|
|
10
|
-
import * as apigV2Domain from "./util/apiGatewayV2Domain.js";
|
|
11
|
-
import * as apigV2AccessLog from "./util/apiGatewayV2AccessLog.js";
|
|
12
|
-
import { WebSocketLambdaIntegration } from "@aws-cdk/aws-apigatewayv2-integrations-alpha/lib/websocket/index.js";
|
|
13
|
-
/////////////////////
|
|
14
|
-
// Construct
|
|
15
|
-
/////////////////////
|
|
16
|
-
/**
|
|
17
|
-
* The `WebSocketApi` construct is a higher level CDK construct that makes it easy to create a WebSocket API.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```js
|
|
21
|
-
* import { WebSocketApi } from "sst/constructs";
|
|
22
|
-
*
|
|
23
|
-
* new WebSocketApi(stack, "Api", {
|
|
24
|
-
* routes: {
|
|
25
|
-
* $connect: "src/connect.main",
|
|
26
|
-
* $default: "src/default.main",
|
|
27
|
-
* $disconnect: "src/disconnect.main",
|
|
28
|
-
* sendMessage: "src/sendMessage.main",
|
|
29
|
-
* },
|
|
30
|
-
* });
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export class WebSocketApi extends Construct {
|
|
34
|
-
id;
|
|
35
|
-
cdk;
|
|
36
|
-
_customDomainUrl;
|
|
37
|
-
functions = {};
|
|
38
|
-
apigRoutes = {};
|
|
39
|
-
bindingForAllRoutes = [];
|
|
40
|
-
permissionsAttachedForAllRoutes = [];
|
|
41
|
-
authorizer;
|
|
42
|
-
props;
|
|
43
|
-
constructor(scope, id, props) {
|
|
44
|
-
super(scope, props?.cdk?.id || id);
|
|
45
|
-
this.id = id;
|
|
46
|
-
this.props = props || {};
|
|
47
|
-
this.cdk = {};
|
|
48
|
-
this.createWebSocketApi();
|
|
49
|
-
this.createWebSocketStage();
|
|
50
|
-
this.addAuthorizer();
|
|
51
|
-
this.addRoutes(this, this.props.routes || {});
|
|
52
|
-
// Allows functions to make ApiGatewayManagementApi.postToConnection calls.
|
|
53
|
-
this.attachPermissions([
|
|
54
|
-
new iam.PolicyStatement({
|
|
55
|
-
effect: iam.Effect.ALLOW,
|
|
56
|
-
actions: ["execute-api:ManageConnections"],
|
|
57
|
-
resources: [this._connectionsArn],
|
|
58
|
-
}),
|
|
59
|
-
]);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Url of the WebSocket API
|
|
63
|
-
*/
|
|
64
|
-
get url() {
|
|
65
|
-
return this.cdk.webSocketStage.url;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Custom domain url if it's configured
|
|
69
|
-
*/
|
|
70
|
-
get customDomainUrl() {
|
|
71
|
-
return this._customDomainUrl;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* List of routes of the websocket api
|
|
75
|
-
*/
|
|
76
|
-
get routes() {
|
|
77
|
-
return Object.keys(this.functions);
|
|
78
|
-
}
|
|
79
|
-
get _connectionsArn() {
|
|
80
|
-
this.cdk.webSocketApi.grantManageConnections;
|
|
81
|
-
return Stack.of(this).formatArn({
|
|
82
|
-
service: "execute-api",
|
|
83
|
-
resourceName: "*/*/@connections/*",
|
|
84
|
-
resource: this.cdk.webSocketApi.apiId,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Add routes to an already created WebSocket API
|
|
89
|
-
*
|
|
90
|
-
* @example
|
|
91
|
-
* ```js
|
|
92
|
-
* api.addRoutes(stack, {
|
|
93
|
-
* "$connect": "src/connect.main",
|
|
94
|
-
* })
|
|
95
|
-
* ```
|
|
96
|
-
*/
|
|
97
|
-
addRoutes(scope, routes) {
|
|
98
|
-
Object.keys(routes).forEach((routeKey) => {
|
|
99
|
-
this.addRoute(scope, routeKey, routes[routeKey]);
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Get the instance of the internally created Function, for a given route key where the `routeKey` is the key used to define a route. For example, `$connect`.
|
|
104
|
-
*
|
|
105
|
-
* @example
|
|
106
|
-
* ```js
|
|
107
|
-
* const fn = api.getFunction("$connect");
|
|
108
|
-
* ```
|
|
109
|
-
*/
|
|
110
|
-
getFunction(routeKey) {
|
|
111
|
-
return this.functions[this.normalizeRouteKey(routeKey)];
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Get the instance of the internally created Route, for a given route key where the `routeKey` is the key used to define a route. For example, `$connect`.
|
|
115
|
-
*
|
|
116
|
-
* @example
|
|
117
|
-
* ```js
|
|
118
|
-
* const route = api.getRoute("$connect");
|
|
119
|
-
* ```
|
|
120
|
-
*/
|
|
121
|
-
getRoute(routeKey) {
|
|
122
|
-
return this.apigRoutes[this.normalizeRouteKey(routeKey)];
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Binds the given list of resources to all the routes.
|
|
126
|
-
*
|
|
127
|
-
* @example
|
|
128
|
-
*
|
|
129
|
-
* ```js
|
|
130
|
-
* api.bind([STRIPE_KEY, bucket]);
|
|
131
|
-
* ```
|
|
132
|
-
*/
|
|
133
|
-
bind(constructs) {
|
|
134
|
-
Object.values(this.functions).forEach((fn) => fn.bind(constructs));
|
|
135
|
-
this.bindingForAllRoutes.push(...constructs);
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Binds the given list of resources to a specific route.
|
|
139
|
-
*
|
|
140
|
-
* @example
|
|
141
|
-
* ```js
|
|
142
|
-
* api.bindToRoute("$connect", [STRIPE_KEY, bucket]);
|
|
143
|
-
* ```
|
|
144
|
-
*
|
|
145
|
-
*/
|
|
146
|
-
bindToRoute(routeKey, constructs) {
|
|
147
|
-
const fn = this.getFunction(routeKey);
|
|
148
|
-
if (!fn) {
|
|
149
|
-
throw new Error(`Failed to bind resources. Route "${routeKey}" does not exist.`);
|
|
150
|
-
}
|
|
151
|
-
fn.bind(constructs);
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Attaches the given list of permissions to all the routes. This allows the functions to access other AWS resources.
|
|
155
|
-
*
|
|
156
|
-
* @example
|
|
157
|
-
*
|
|
158
|
-
* ```js
|
|
159
|
-
* api.attachPermissions(["s3"]);
|
|
160
|
-
* ```
|
|
161
|
-
*/
|
|
162
|
-
attachPermissions(permissions) {
|
|
163
|
-
Object.values(this.functions).forEach((fn) => fn.attachPermissions(permissions));
|
|
164
|
-
this.permissionsAttachedForAllRoutes.push(permissions);
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Attaches the given list of permissions to a specific route. This allows that function to access other AWS resources.
|
|
168
|
-
*
|
|
169
|
-
* @example
|
|
170
|
-
* ```js
|
|
171
|
-
* api.attachPermissionsToRoute("$connect", ["s3"]);
|
|
172
|
-
* ```
|
|
173
|
-
*
|
|
174
|
-
*/
|
|
175
|
-
attachPermissionsToRoute(routeKey, permissions) {
|
|
176
|
-
const fn = this.getFunction(routeKey);
|
|
177
|
-
if (!fn) {
|
|
178
|
-
throw new Error(`Failed to attach permissions. Route "${routeKey}" does not exist.`);
|
|
179
|
-
}
|
|
180
|
-
fn.attachPermissions(permissions);
|
|
181
|
-
}
|
|
182
|
-
getConstructMetadata() {
|
|
183
|
-
return {
|
|
184
|
-
type: "WebSocketApi",
|
|
185
|
-
data: {
|
|
186
|
-
url: this.url,
|
|
187
|
-
httpApiId: this.cdk.webSocketApi.apiId,
|
|
188
|
-
customDomainUrl: this._customDomainUrl,
|
|
189
|
-
routes: Object.entries(this.functions).map(([routeKey, fn]) => ({
|
|
190
|
-
route: routeKey,
|
|
191
|
-
fn: getFunctionRef(fn),
|
|
192
|
-
})),
|
|
193
|
-
},
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
/** @internal */
|
|
197
|
-
getFunctionBinding() {
|
|
198
|
-
return {
|
|
199
|
-
clientPackage: "websocket-api",
|
|
200
|
-
variables: {
|
|
201
|
-
url: {
|
|
202
|
-
type: "plain",
|
|
203
|
-
value: this.customDomainUrl || this.url,
|
|
204
|
-
},
|
|
205
|
-
httpsUrl: {
|
|
206
|
-
type: "plain",
|
|
207
|
-
value: (this.customDomainUrl || this.url).replace("wss://", "https://"),
|
|
208
|
-
},
|
|
209
|
-
},
|
|
210
|
-
permissions: {
|
|
211
|
-
"execute-api:ManageConnections": [this._connectionsArn],
|
|
212
|
-
},
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
createWebSocketApi() {
|
|
216
|
-
const { cdk } = this.props;
|
|
217
|
-
const id = this.node.id;
|
|
218
|
-
const app = this.node.root;
|
|
219
|
-
if (isCDKConstruct(cdk?.webSocketApi)) {
|
|
220
|
-
this.cdk.webSocketApi = cdk?.webSocketApi;
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
// Validate input
|
|
224
|
-
if (isCDKConstruct(cdk?.webSocketStage)) {
|
|
225
|
-
throw new Error(`Cannot import the "webSocketStage" when the "webSocketApi" is not imported.`);
|
|
226
|
-
}
|
|
227
|
-
const webSocketApiProps = (cdk?.webSocketApi ||
|
|
228
|
-
{});
|
|
229
|
-
// Create WebSocket API
|
|
230
|
-
this.cdk.webSocketApi = new apig.WebSocketApi(this, "Api", {
|
|
231
|
-
apiName: app.logicalPrefixedName(id),
|
|
232
|
-
...webSocketApiProps,
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
createWebSocketStage() {
|
|
237
|
-
const { cdk, accessLog, customDomain } = this.props;
|
|
238
|
-
if (isCDKConstruct(cdk?.webSocketStage)) {
|
|
239
|
-
if (accessLog !== undefined) {
|
|
240
|
-
throw new Error(`Cannot configure the "accessLog" when "webSocketStage" is a construct`);
|
|
241
|
-
}
|
|
242
|
-
if (customDomain !== undefined) {
|
|
243
|
-
throw new Error(`Cannot configure the "customDomain" when "webSocketStage" is a construct`);
|
|
244
|
-
}
|
|
245
|
-
this.cdk.webSocketStage = cdk?.webSocketStage;
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
const webSocketStageProps = (cdk?.webSocketStage ||
|
|
249
|
-
{});
|
|
250
|
-
// Validate input
|
|
251
|
-
if (webSocketStageProps.domainMapping !== undefined) {
|
|
252
|
-
throw new Error(`Do not configure the "webSocketStage.domainMapping". Use the "customDomain" to configure the Api domain.`);
|
|
253
|
-
}
|
|
254
|
-
// Configure Custom Domain
|
|
255
|
-
const customDomainData = apigV2Domain.buildCustomDomainData(this, customDomain);
|
|
256
|
-
let domainMapping;
|
|
257
|
-
if (customDomainData) {
|
|
258
|
-
if (customDomainData.isApigDomainCreated) {
|
|
259
|
-
this.cdk.domainName = customDomainData.apigDomain;
|
|
260
|
-
}
|
|
261
|
-
if (customDomainData.isCertificatedCreated) {
|
|
262
|
-
this.cdk.certificate =
|
|
263
|
-
customDomainData.certificate;
|
|
264
|
-
}
|
|
265
|
-
domainMapping = {
|
|
266
|
-
domainName: customDomainData.apigDomain,
|
|
267
|
-
mappingKey: customDomainData.mappingKey,
|
|
268
|
-
};
|
|
269
|
-
this._customDomainUrl = `wss://${customDomainData.url}`;
|
|
270
|
-
}
|
|
271
|
-
// Create CloudWatch Role
|
|
272
|
-
const customResource = this.createCloudWatchRole();
|
|
273
|
-
// Create stage
|
|
274
|
-
// note: create the CloudWatch role before creating the Api
|
|
275
|
-
this.cdk.webSocketStage = new apig.WebSocketStage(this, "Stage", {
|
|
276
|
-
webSocketApi: this.cdk.webSocketApi,
|
|
277
|
-
stageName: this.node.root.stage,
|
|
278
|
-
autoDeploy: true,
|
|
279
|
-
domainMapping,
|
|
280
|
-
...webSocketStageProps,
|
|
281
|
-
});
|
|
282
|
-
this.cdk.webSocketStage.node.addDependency(customResource);
|
|
283
|
-
// Configure Access Log
|
|
284
|
-
this.cdk.accessLogGroup = apigV2AccessLog.buildAccessLogData(this, accessLog, this.cdk.webSocketStage, true);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
createCloudWatchRole() {
|
|
288
|
-
const stack = Stack.of(this);
|
|
289
|
-
const roleName = "apigateway-cloudwatch-logs-role";
|
|
290
|
-
const roleArn = `arn:${stack.partition}:iam::${stack.account}:role/${roleName}`;
|
|
291
|
-
const policy = new Policy(this, "APIGatewayCloudWatchRolePolicy", {
|
|
292
|
-
statements: [
|
|
293
|
-
new PolicyStatement({
|
|
294
|
-
effect: Effect.ALLOW,
|
|
295
|
-
actions: ["apigateway:GET", "apigateway:PATCH"],
|
|
296
|
-
resources: [
|
|
297
|
-
`arn:${stack.partition}:apigateway:${stack.region}::/account`,
|
|
298
|
-
],
|
|
299
|
-
}),
|
|
300
|
-
new PolicyStatement({
|
|
301
|
-
effect: Effect.ALLOW,
|
|
302
|
-
actions: ["iam:CreateRole", "iam:PassRole", "iam:AttachRolePolicy"],
|
|
303
|
-
resources: [roleArn],
|
|
304
|
-
}),
|
|
305
|
-
],
|
|
306
|
-
});
|
|
307
|
-
stack.customResourceHandler.role?.attachInlinePolicy(policy);
|
|
308
|
-
const resource = new CustomResource(this, "APIGatewayCloudWatchRole", {
|
|
309
|
-
serviceToken: stack.customResourceHandler.functionArn,
|
|
310
|
-
resourceType: "Custom::APIGatewayCloudWatchRole",
|
|
311
|
-
properties: {
|
|
312
|
-
roleName,
|
|
313
|
-
roleArn,
|
|
314
|
-
},
|
|
315
|
-
});
|
|
316
|
-
resource.node.addDependency(policy);
|
|
317
|
-
return resource;
|
|
318
|
-
}
|
|
319
|
-
addAuthorizer() {
|
|
320
|
-
const { authorizer } = this.props;
|
|
321
|
-
if (!authorizer || authorizer === "none") {
|
|
322
|
-
this.authorizer = "none";
|
|
323
|
-
}
|
|
324
|
-
else if (authorizer === "iam") {
|
|
325
|
-
this.authorizer = "iam";
|
|
326
|
-
}
|
|
327
|
-
else if (authorizer.cdk?.authorizer) {
|
|
328
|
-
this.authorizer = authorizer.cdk.authorizer;
|
|
329
|
-
}
|
|
330
|
-
else if (!authorizer.function) {
|
|
331
|
-
throw new Error(`Missing "function" for authorizer`);
|
|
332
|
-
}
|
|
333
|
-
else {
|
|
334
|
-
this.authorizer = new apigAuthorizers.WebSocketLambdaAuthorizer("WebSocketAuthorizer", authorizer.function, {
|
|
335
|
-
authorizerName: authorizer.name,
|
|
336
|
-
identitySource: authorizer.identitySource,
|
|
337
|
-
});
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
addRoute(scope, routeKey, routeValue) {
|
|
341
|
-
///////////////////
|
|
342
|
-
// Normalize routeKey
|
|
343
|
-
///////////////////
|
|
344
|
-
routeKey = this.normalizeRouteKey(routeKey);
|
|
345
|
-
if (this.functions[routeKey]) {
|
|
346
|
-
throw new Error(`A route already exists for "${routeKey}"`);
|
|
347
|
-
}
|
|
348
|
-
///////////////////
|
|
349
|
-
// Create Function
|
|
350
|
-
///////////////////
|
|
351
|
-
const lambda = Fn.fromDefinition(scope, routeKey, Fn.isInlineDefinition(routeValue) ? routeValue : routeValue.function, this.props.defaults?.function, `The "defaults.function" cannot be applied if an instance of a Function construct is passed in. Make sure to define all the routes using FunctionProps, so the Api construct can apply the "defaults.function" to them.`);
|
|
352
|
-
///////////////////
|
|
353
|
-
// Get authorization
|
|
354
|
-
///////////////////
|
|
355
|
-
const { authorizationType, authorizer } = this.buildRouteAuth();
|
|
356
|
-
///////////////////
|
|
357
|
-
// Create route
|
|
358
|
-
///////////////////
|
|
359
|
-
const route = new apig.WebSocketRoute(scope, `Route_${routeKey}`, {
|
|
360
|
-
webSocketApi: this.cdk.webSocketApi,
|
|
361
|
-
routeKey,
|
|
362
|
-
integration: new WebSocketLambdaIntegration(`Integration_${routeKey}`, lambda),
|
|
363
|
-
authorizer: routeKey === "$connect" ? authorizer : undefined,
|
|
364
|
-
});
|
|
365
|
-
///////////////////
|
|
366
|
-
// Configure authorization
|
|
367
|
-
///////////////////
|
|
368
|
-
// Note: as of CDK v1.138.0, aws-apigatewayv2.WebSocketRoute does not
|
|
369
|
-
// support IAM authorization type. We need to manually configure it.
|
|
370
|
-
if (routeKey === "$connect") {
|
|
371
|
-
// Configure route authorization type
|
|
372
|
-
// Note: we need to explicitly set `cfnRoute.authorizationType` to `NONE`
|
|
373
|
-
// because if it were set to `AWS_IAM`, and then it is removed from
|
|
374
|
-
// the CloudFormation template (ie. set to undefined), CloudFormation
|
|
375
|
-
// doesn't updates the route. The route's authorizationType would
|
|
376
|
-
// still be `AWS_IAM`.
|
|
377
|
-
const cfnRoute = route.node.defaultChild;
|
|
378
|
-
cfnRoute.authorizationType = authorizationType;
|
|
379
|
-
}
|
|
380
|
-
///////////////////
|
|
381
|
-
// Store function
|
|
382
|
-
///////////////////
|
|
383
|
-
this.apigRoutes[routeKey] = route;
|
|
384
|
-
this.functions[routeKey] = lambda;
|
|
385
|
-
// attached existing permissions
|
|
386
|
-
this.permissionsAttachedForAllRoutes.forEach((permissions) => lambda.attachPermissions(permissions));
|
|
387
|
-
lambda.bind(this.bindingForAllRoutes);
|
|
388
|
-
}
|
|
389
|
-
buildRouteAuth() {
|
|
390
|
-
if (this.authorizer === "none") {
|
|
391
|
-
return { authorizationType: "NONE" };
|
|
392
|
-
}
|
|
393
|
-
else if (this.authorizer === "iam") {
|
|
394
|
-
return { authorizationType: "AWS_IAM" };
|
|
395
|
-
}
|
|
396
|
-
return {
|
|
397
|
-
authorizationType: "CUSTOM",
|
|
398
|
-
authorizer: this.authorizer,
|
|
399
|
-
};
|
|
400
|
-
}
|
|
401
|
-
normalizeRouteKey(routeKey) {
|
|
402
|
-
return routeKey.trim();
|
|
403
|
-
}
|
|
404
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { HttpIntegrationSubtype, HttpRouteIntegrationBindOptions, HttpRouteIntegrationConfig, HttpRouteIntegration, ParameterMapping, IntegrationCredentials } from "@aws-cdk/aws-apigatewayv2-alpha";
|
|
2
|
-
/**
|
|
3
|
-
* Properties to initialize a new `HttpProxyIntegration`.
|
|
4
|
-
*/
|
|
5
|
-
export interface HttpAwsIntegrationProps {
|
|
6
|
-
/**
|
|
7
|
-
* Specifies the AWS service action to invoke
|
|
8
|
-
*/
|
|
9
|
-
readonly subtype: HttpIntegrationSubtype;
|
|
10
|
-
/**
|
|
11
|
-
* Specifies how to transform HTTP requests before sending them to the backend
|
|
12
|
-
*/
|
|
13
|
-
readonly parameterMapping: ParameterMapping;
|
|
14
|
-
/**
|
|
15
|
-
* The credentials with which to invoke the integration.
|
|
16
|
-
*
|
|
17
|
-
* @default - no credentials, use resource-based permissions on supported AWS services
|
|
18
|
-
*/
|
|
19
|
-
readonly credentials: IntegrationCredentials;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* The HTTP Proxy integration resource for HTTP API
|
|
23
|
-
*/
|
|
24
|
-
export declare class HttpAwsIntegration extends HttpRouteIntegration {
|
|
25
|
-
private readonly props;
|
|
26
|
-
/**
|
|
27
|
-
* @param id id of the underlying integration construct
|
|
28
|
-
* @param props properties to configure the integration
|
|
29
|
-
*/
|
|
30
|
-
constructor(id: string, props: HttpAwsIntegrationProps);
|
|
31
|
-
bind(_: HttpRouteIntegrationBindOptions): HttpRouteIntegrationConfig;
|
|
32
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { HttpIntegrationType, HttpRouteIntegration, PayloadFormatVersion, } from "@aws-cdk/aws-apigatewayv2-alpha";
|
|
2
|
-
/**
|
|
3
|
-
* The HTTP Proxy integration resource for HTTP API
|
|
4
|
-
*/
|
|
5
|
-
export class HttpAwsIntegration extends HttpRouteIntegration {
|
|
6
|
-
props;
|
|
7
|
-
/**
|
|
8
|
-
* @param id id of the underlying integration construct
|
|
9
|
-
* @param props properties to configure the integration
|
|
10
|
-
*/
|
|
11
|
-
constructor(id, props) {
|
|
12
|
-
super(id);
|
|
13
|
-
this.props = props;
|
|
14
|
-
}
|
|
15
|
-
bind(_) {
|
|
16
|
-
return {
|
|
17
|
-
payloadFormatVersion: PayloadFormatVersion.VERSION_1_0,
|
|
18
|
-
type: HttpIntegrationType.AWS_PROXY,
|
|
19
|
-
subtype: this.props.subtype,
|
|
20
|
-
parameterMapping: this.props.parameterMapping,
|
|
21
|
-
credentials: this.props.credentials,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Metric, MetricOptions } from "aws-cdk-lib/aws-cloudwatch";
|
|
2
|
-
import { Resource } from "aws-cdk-lib/core";
|
|
3
|
-
import { ICertificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
4
|
-
/**
|
|
5
|
-
* Shared implementation details of ICertificate implementations.
|
|
6
|
-
*
|
|
7
|
-
* @internal
|
|
8
|
-
*/
|
|
9
|
-
export declare abstract class CertificateBase extends Resource implements ICertificate {
|
|
10
|
-
abstract readonly certificateArn: string;
|
|
11
|
-
/**
|
|
12
|
-
* If the certificate is provisionned in a different region than the
|
|
13
|
-
* containing stack, this should be the region in which the certificate lives
|
|
14
|
-
* so we can correctly create `Metric` instances.
|
|
15
|
-
*/
|
|
16
|
-
protected readonly region?: string;
|
|
17
|
-
metricDaysToExpiry(props?: MetricOptions): Metric;
|
|
18
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Metric, Stats } from "aws-cdk-lib/aws-cloudwatch";
|
|
2
|
-
import { Duration, Resource } from "aws-cdk-lib/core";
|
|
3
|
-
/**
|
|
4
|
-
* Shared implementation details of ICertificate implementations.
|
|
5
|
-
*
|
|
6
|
-
* @internal
|
|
7
|
-
*/
|
|
8
|
-
export class CertificateBase extends Resource {
|
|
9
|
-
/**
|
|
10
|
-
* If the certificate is provisionned in a different region than the
|
|
11
|
-
* containing stack, this should be the region in which the certificate lives
|
|
12
|
-
* so we can correctly create `Metric` instances.
|
|
13
|
-
*/
|
|
14
|
-
region;
|
|
15
|
-
metricDaysToExpiry(props) {
|
|
16
|
-
return new Metric({
|
|
17
|
-
period: Duration.days(1),
|
|
18
|
-
...props,
|
|
19
|
-
dimensionsMap: { CertificateArn: this.certificateArn },
|
|
20
|
-
metricName: "DaysToExpiry",
|
|
21
|
-
namespace: "AWS/CertificateManager",
|
|
22
|
-
region: this.region,
|
|
23
|
-
statistic: Stats.MINIMUM,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import { ITaggable, TagManager, RemovalPolicy } from "aws-cdk-lib/core";
|
|
3
|
-
import { CertificateProps, ICertificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
4
|
-
import * as iam from "aws-cdk-lib/aws-iam";
|
|
5
|
-
import * as route53 from "aws-cdk-lib/aws-route53";
|
|
6
|
-
import { CertificateBase } from "./certificate-base.js";
|
|
7
|
-
/**
|
|
8
|
-
* Properties to create a DNS validated certificate managed by AWS Certificate Manager
|
|
9
|
-
*
|
|
10
|
-
*/
|
|
11
|
-
export interface DnsValidatedCertificateProps extends CertificateProps {
|
|
12
|
-
/**
|
|
13
|
-
* Route 53 Hosted Zone used to perform DNS validation of the request. The zone
|
|
14
|
-
* must be authoritative for the domain name specified in the Certificate Request.
|
|
15
|
-
*/
|
|
16
|
-
readonly hostedZone: route53.IHostedZone;
|
|
17
|
-
/**
|
|
18
|
-
* AWS region that will host the certificate. This is needed especially
|
|
19
|
-
* for certificates used for CloudFront distributions, which require the region
|
|
20
|
-
* to be us-east-1.
|
|
21
|
-
*
|
|
22
|
-
* @default the region the stack is deployed in.
|
|
23
|
-
*/
|
|
24
|
-
readonly region?: string;
|
|
25
|
-
/**
|
|
26
|
-
* An endpoint of Route53 service, which is not necessary as AWS SDK could figure
|
|
27
|
-
* out the right endpoints for most regions, but for some regions such as those in
|
|
28
|
-
* aws-cn partition, the default endpoint is not working now, hence the right endpoint
|
|
29
|
-
* need to be specified through this prop.
|
|
30
|
-
*
|
|
31
|
-
* Route53 is not been officially launched in China, it is only available for AWS
|
|
32
|
-
* internal accounts now. To make DnsValidatedCertificate work for internal accounts
|
|
33
|
-
* now, a special endpoint needs to be provided.
|
|
34
|
-
*
|
|
35
|
-
* @default - The AWS SDK will determine the Route53 endpoint to use based on region
|
|
36
|
-
*/
|
|
37
|
-
readonly route53Endpoint?: string;
|
|
38
|
-
/**
|
|
39
|
-
* Role to use for the custom resource that creates the validated certificate
|
|
40
|
-
*
|
|
41
|
-
* @default - A new role will be created
|
|
42
|
-
*/
|
|
43
|
-
readonly customResourceRole?: iam.IRole;
|
|
44
|
-
/**
|
|
45
|
-
* When set to true, when the DnsValidatedCertificate is deleted,
|
|
46
|
-
* the associated Route53 validation records are removed.
|
|
47
|
-
*
|
|
48
|
-
* CAUTION: If multiple certificates share the same domains (and same validation records),
|
|
49
|
-
* this can cause the other certificates to fail renewal and/or not validate.
|
|
50
|
-
* Not recommended for production use.
|
|
51
|
-
*
|
|
52
|
-
* @default false
|
|
53
|
-
*/
|
|
54
|
-
readonly cleanupRoute53Records?: boolean;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* A certificate managed by AWS Certificate Manager. Will be automatically
|
|
58
|
-
* validated using DNS validation against the specified Route 53 hosted zone.
|
|
59
|
-
*
|
|
60
|
-
* @resource AWS::CertificateManager::Certificate
|
|
61
|
-
*/
|
|
62
|
-
export declare class DnsValidatedCertificate extends CertificateBase implements ICertificate, ITaggable {
|
|
63
|
-
readonly certificateArn: string;
|
|
64
|
-
/**
|
|
65
|
-
* Resource Tags.
|
|
66
|
-
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-tags
|
|
67
|
-
*/
|
|
68
|
-
readonly tags: TagManager;
|
|
69
|
-
protected readonly region?: string;
|
|
70
|
-
private normalizedZoneName;
|
|
71
|
-
private hostedZoneId;
|
|
72
|
-
private domainName;
|
|
73
|
-
private _removalPolicy?;
|
|
74
|
-
constructor(scope: Construct, id: string, props: DnsValidatedCertificateProps);
|
|
75
|
-
applyRemovalPolicy(policy: RemovalPolicy): void;
|
|
76
|
-
private validateDnsValidatedCertificate;
|
|
77
|
-
}
|