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
package/constructs/Bucket.d.ts
DELETED
|
@@ -1,364 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import { Queue } from "./Queue.js";
|
|
3
|
-
import { Topic } from "./Topic.js";
|
|
4
|
-
import { SSTConstruct } from "./Construct.js";
|
|
5
|
-
import { Function as Fn, FunctionProps, FunctionInlineDefinition, FunctionDefinition } from "./Function.js";
|
|
6
|
-
import { FunctionBindingProps } from "./util/functionBinding.js";
|
|
7
|
-
import { Permissions } from "./util/permission.js";
|
|
8
|
-
import { Duration } from "./util/duration.js";
|
|
9
|
-
import { BucketProps as CDKBucketProps, IBucket, EventType, HttpMethods } from "aws-cdk-lib/aws-s3";
|
|
10
|
-
export interface BucketCorsRule {
|
|
11
|
-
/**
|
|
12
|
-
* The collection of allowed HTTP methods.
|
|
13
|
-
*/
|
|
14
|
-
allowedMethods: (keyof typeof HttpMethods)[];
|
|
15
|
-
/**
|
|
16
|
-
* The collection of allowed origins.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```js
|
|
20
|
-
* // Allow all origins
|
|
21
|
-
* allowOrigins: ["*"]
|
|
22
|
-
*
|
|
23
|
-
* // Allow specific origins. Note that the url protocol, ie. "https://", is required.
|
|
24
|
-
* allowOrigins: ["https://domain.com"]
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
allowedOrigins: string[];
|
|
28
|
-
/**
|
|
29
|
-
* The collection of allowed headers.
|
|
30
|
-
*/
|
|
31
|
-
allowedHeaders?: string[];
|
|
32
|
-
/**
|
|
33
|
-
* The collection of exposed headers.
|
|
34
|
-
*/
|
|
35
|
-
exposedHeaders?: string[];
|
|
36
|
-
/**
|
|
37
|
-
* A unique identifier for this rule.
|
|
38
|
-
*/
|
|
39
|
-
id?: string;
|
|
40
|
-
/**
|
|
41
|
-
* Specify how long the results of a preflight response can be cached
|
|
42
|
-
*/
|
|
43
|
-
maxAge?: Duration;
|
|
44
|
-
}
|
|
45
|
-
interface BucketBaseNotificationProps {
|
|
46
|
-
/**
|
|
47
|
-
* The S3 event types that will trigger the notification.
|
|
48
|
-
*/
|
|
49
|
-
events?: Lowercase<keyof typeof EventType>[];
|
|
50
|
-
/**
|
|
51
|
-
* S3 object key filter rules to determine which objects trigger this event.
|
|
52
|
-
*/
|
|
53
|
-
filters?: BucketFilter[];
|
|
54
|
-
}
|
|
55
|
-
export interface BucketFilter {
|
|
56
|
-
/**
|
|
57
|
-
* Filter what the key starts with
|
|
58
|
-
*/
|
|
59
|
-
prefix?: string;
|
|
60
|
-
/**
|
|
61
|
-
* Filter what the key ends with
|
|
62
|
-
*/
|
|
63
|
-
suffix?: string;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Used to define a function listener for the bucket
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* ```js
|
|
70
|
-
* new Bucket(stack, "Bucket", {
|
|
71
|
-
* notifications: {
|
|
72
|
-
* myNotification: {
|
|
73
|
-
* function: "src/notification.main"
|
|
74
|
-
* }
|
|
75
|
-
* }
|
|
76
|
-
* }
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
export interface BucketFunctionNotificationProps extends BucketBaseNotificationProps {
|
|
80
|
-
/**
|
|
81
|
-
* String literal to signify that the notification is a function
|
|
82
|
-
*/
|
|
83
|
-
type?: "function";
|
|
84
|
-
/**
|
|
85
|
-
* The function to send notifications to
|
|
86
|
-
*/
|
|
87
|
-
function: FunctionDefinition;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Used to define a queue listener for the bucket
|
|
91
|
-
*
|
|
92
|
-
* @example
|
|
93
|
-
* ```js
|
|
94
|
-
* new Bucket(stack, "Bucket", {
|
|
95
|
-
* notifications: {
|
|
96
|
-
* myNotification: {
|
|
97
|
-
* type: "queue",
|
|
98
|
-
* queue: new Queue(stack, "Queue")
|
|
99
|
-
* }
|
|
100
|
-
* }
|
|
101
|
-
* }
|
|
102
|
-
* ```
|
|
103
|
-
*/
|
|
104
|
-
export interface BucketQueueNotificationProps extends BucketBaseNotificationProps {
|
|
105
|
-
/**
|
|
106
|
-
* String literal to signify that the notification is a queue
|
|
107
|
-
*/
|
|
108
|
-
type: "queue";
|
|
109
|
-
/**
|
|
110
|
-
* The queue to send notifications to
|
|
111
|
-
*/
|
|
112
|
-
queue: Queue;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Used to define a topic listener for the bucket
|
|
116
|
-
*
|
|
117
|
-
* @example
|
|
118
|
-
* ```js
|
|
119
|
-
* new Bucket(stack, "Bucket", {
|
|
120
|
-
* notifications: {
|
|
121
|
-
* myNotification: {
|
|
122
|
-
* type: "topic",
|
|
123
|
-
* topic: new Topic(stack, "Topic")
|
|
124
|
-
* }
|
|
125
|
-
* }],
|
|
126
|
-
* }
|
|
127
|
-
* ```
|
|
128
|
-
*/
|
|
129
|
-
export interface BucketTopicNotificationProps extends BucketBaseNotificationProps {
|
|
130
|
-
type: "topic";
|
|
131
|
-
/**
|
|
132
|
-
* The topic to send notifications to
|
|
133
|
-
*/
|
|
134
|
-
topic: Topic;
|
|
135
|
-
}
|
|
136
|
-
export interface BucketProps {
|
|
137
|
-
/**
|
|
138
|
-
* The name of the bucket.
|
|
139
|
-
*
|
|
140
|
-
* Note that it's not recommended to hard code a name for the bucket, because they must be globally unique.
|
|
141
|
-
*
|
|
142
|
-
* @example
|
|
143
|
-
* ```js
|
|
144
|
-
* new Bucket(stack, "Bucket", {
|
|
145
|
-
* name: "my-bucket",
|
|
146
|
-
* });
|
|
147
|
-
* ```
|
|
148
|
-
*/
|
|
149
|
-
name?: string;
|
|
150
|
-
/**
|
|
151
|
-
* The CORS configuration of this bucket.
|
|
152
|
-
* @default true
|
|
153
|
-
* @example
|
|
154
|
-
* ```js
|
|
155
|
-
* new Bucket(stack, "Bucket", {
|
|
156
|
-
* cors: true,
|
|
157
|
-
* });
|
|
158
|
-
* ```
|
|
159
|
-
*
|
|
160
|
-
* ```js
|
|
161
|
-
* new Bucket(stack, "Bucket", {
|
|
162
|
-
* cors: [
|
|
163
|
-
* {
|
|
164
|
-
* allowedMethods: ["GET"],
|
|
165
|
-
* allowedOrigins: ["https://www.example.com"],
|
|
166
|
-
* }
|
|
167
|
-
* ],
|
|
168
|
-
* });
|
|
169
|
-
* ```
|
|
170
|
-
*/
|
|
171
|
-
cors?: boolean | BucketCorsRule[];
|
|
172
|
-
/**
|
|
173
|
-
* Prevent any files from being uploaded with public access configured. Setting this to `true` prevents uploading objects with public ACLs.
|
|
174
|
-
* Note that setting to `false` does not necessarily mean that the bucket is completely accessible to the public. Rather, it enables the granting of public permissions on a per file basis.
|
|
175
|
-
* @default false
|
|
176
|
-
* @example
|
|
177
|
-
* ```js
|
|
178
|
-
* new Bucket(stack, "Bucket", {
|
|
179
|
-
* blockPublicACLs: true,
|
|
180
|
-
* });
|
|
181
|
-
* ```
|
|
182
|
-
*/
|
|
183
|
-
blockPublicACLs?: boolean;
|
|
184
|
-
/**
|
|
185
|
-
* The default function props to be applied to all the Lambda functions in the API. The `environment`, `permissions` and `layers` properties will be merged with per route definitions if they are defined.
|
|
186
|
-
*
|
|
187
|
-
* @example
|
|
188
|
-
* ```js
|
|
189
|
-
* new Bucket(stack, "Bucket", {
|
|
190
|
-
* defaults: {
|
|
191
|
-
* function: {
|
|
192
|
-
* timeout: 20,
|
|
193
|
-
* }
|
|
194
|
-
* },
|
|
195
|
-
* });
|
|
196
|
-
* ```
|
|
197
|
-
*/
|
|
198
|
-
defaults?: {
|
|
199
|
-
function?: FunctionProps;
|
|
200
|
-
};
|
|
201
|
-
/**
|
|
202
|
-
* Used to create notifications for various bucket events
|
|
203
|
-
*
|
|
204
|
-
* @example
|
|
205
|
-
* ```js
|
|
206
|
-
* new Bucket(stack, "Bucket", {
|
|
207
|
-
* notifications: {
|
|
208
|
-
* myNotification: "src/notification.main",
|
|
209
|
-
* }
|
|
210
|
-
* });
|
|
211
|
-
* ```
|
|
212
|
-
*/
|
|
213
|
-
notifications?: Record<string, FunctionInlineDefinition | BucketFunctionNotificationProps | Queue | BucketQueueNotificationProps | Topic | BucketTopicNotificationProps>;
|
|
214
|
-
cdk?: {
|
|
215
|
-
/**
|
|
216
|
-
* Allows you to override default id for this construct.
|
|
217
|
-
*/
|
|
218
|
-
id?: string;
|
|
219
|
-
/**
|
|
220
|
-
* Allows you to override default settings this construct uses internally to create the bucket.
|
|
221
|
-
*
|
|
222
|
-
* @example
|
|
223
|
-
* ```js
|
|
224
|
-
* new Bucket(stack, "Bucket", {
|
|
225
|
-
* cdk: {
|
|
226
|
-
* bucket: {
|
|
227
|
-
* bucketName: "my-bucket",
|
|
228
|
-
* },
|
|
229
|
-
* }
|
|
230
|
-
* });
|
|
231
|
-
* ```
|
|
232
|
-
*/
|
|
233
|
-
bucket?: IBucket | CDKBucketProps;
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* The `Bucket` construct is a higher level CDK construct that makes it easy to create an S3 Bucket and to define its notifications.
|
|
238
|
-
*
|
|
239
|
-
* @example
|
|
240
|
-
*
|
|
241
|
-
* ```js
|
|
242
|
-
* import { Bucket } from "sst/constructs";
|
|
243
|
-
*
|
|
244
|
-
* new Bucket(stack, "Bucket");
|
|
245
|
-
* ```
|
|
246
|
-
*/
|
|
247
|
-
export declare class Bucket extends Construct implements SSTConstruct {
|
|
248
|
-
readonly id: string;
|
|
249
|
-
readonly cdk: {
|
|
250
|
-
/**
|
|
251
|
-
* The internally created CDK `Bucket` instance.
|
|
252
|
-
*/
|
|
253
|
-
bucket: IBucket;
|
|
254
|
-
};
|
|
255
|
-
readonly notifications: Record<string, Fn | Queue | Topic>;
|
|
256
|
-
readonly bindingForAllNotifications: SSTConstruct[];
|
|
257
|
-
readonly permissionsAttachedForAllNotifications: Permissions[];
|
|
258
|
-
readonly props: BucketProps;
|
|
259
|
-
constructor(scope: Construct, id: string, props?: BucketProps);
|
|
260
|
-
/**
|
|
261
|
-
* The ARN of the internally created `Bucket` instance.
|
|
262
|
-
*/
|
|
263
|
-
get bucketArn(): string;
|
|
264
|
-
/**
|
|
265
|
-
* The name of the internally created `Bucket` instance.
|
|
266
|
-
*/
|
|
267
|
-
get bucketName(): string;
|
|
268
|
-
/**
|
|
269
|
-
* A list of the internally created functions for the notifications.
|
|
270
|
-
*/
|
|
271
|
-
get notificationFunctions(): Fn[];
|
|
272
|
-
/**
|
|
273
|
-
* Add notification subscriptions after the bucket has been created
|
|
274
|
-
*
|
|
275
|
-
* @example
|
|
276
|
-
* ```js {3}
|
|
277
|
-
* const bucket = new Bucket(stack, "Bucket");
|
|
278
|
-
* bucket.addNotifications(stack, {
|
|
279
|
-
* myNotification: "src/notification.main"
|
|
280
|
-
* });
|
|
281
|
-
* ```
|
|
282
|
-
*/
|
|
283
|
-
addNotifications(scope: Construct, notifications: Record<string, FunctionInlineDefinition | BucketFunctionNotificationProps | Queue | BucketQueueNotificationProps | Topic | BucketTopicNotificationProps>): void;
|
|
284
|
-
/**
|
|
285
|
-
* Binds the given list of resources to all bucket notifications
|
|
286
|
-
* @example
|
|
287
|
-
* ```js {20}
|
|
288
|
-
* const bucket = new Bucket(stack, "Bucket", {
|
|
289
|
-
* notifications: {
|
|
290
|
-
* myNotification: "src/function.handler",
|
|
291
|
-
* }
|
|
292
|
-
* });
|
|
293
|
-
*
|
|
294
|
-
* bucket.bind([STRIPE_KEY, bucket]);
|
|
295
|
-
* ```
|
|
296
|
-
*/
|
|
297
|
-
bind(constructs: SSTConstruct[]): void;
|
|
298
|
-
/**
|
|
299
|
-
* Binds the given list of resources to a specific bucket notification
|
|
300
|
-
*
|
|
301
|
-
* @example
|
|
302
|
-
* ```js {20}
|
|
303
|
-
* const bucket = new Bucket(stack, "Bucket", {
|
|
304
|
-
* notifications: {
|
|
305
|
-
* myNotification: "src/function.handler",
|
|
306
|
-
* }
|
|
307
|
-
* });
|
|
308
|
-
*
|
|
309
|
-
* bucket.bindToNotification("myNotification", ["s3"]);
|
|
310
|
-
* ```
|
|
311
|
-
*/
|
|
312
|
-
bindToNotification(notificationName: string, constructs: SSTConstruct[]): void;
|
|
313
|
-
/**
|
|
314
|
-
* Attaches additional permissions to all bucket notifications
|
|
315
|
-
* @example
|
|
316
|
-
* ```js {20}
|
|
317
|
-
* const bucket = new Bucket(stack, "Bucket", {
|
|
318
|
-
* notifications: {
|
|
319
|
-
* myNotification: "src/function.handler",
|
|
320
|
-
* }
|
|
321
|
-
* });
|
|
322
|
-
*
|
|
323
|
-
* bucket.attachPermissions(["s3"]);
|
|
324
|
-
* ```
|
|
325
|
-
*/
|
|
326
|
-
attachPermissions(permissions: Permissions): void;
|
|
327
|
-
/**
|
|
328
|
-
* Attaches additional permissions to a specific bucket notification
|
|
329
|
-
*
|
|
330
|
-
* @example
|
|
331
|
-
* ```js {20}
|
|
332
|
-
* const bucket = new Bucket(stack, "Bucket", {
|
|
333
|
-
* notifications: {
|
|
334
|
-
* myNotification: "src/function.handler",
|
|
335
|
-
* }
|
|
336
|
-
* });
|
|
337
|
-
*
|
|
338
|
-
* bucket.attachPermissionsToNotification("myNotification", ["s3"]);
|
|
339
|
-
* ```
|
|
340
|
-
*/
|
|
341
|
-
attachPermissionsToNotification(notificationName: string, permissions: Permissions): void;
|
|
342
|
-
getConstructMetadata(): {
|
|
343
|
-
type: "Bucket";
|
|
344
|
-
data: {
|
|
345
|
-
name: string;
|
|
346
|
-
notifications: ({
|
|
347
|
-
node: string;
|
|
348
|
-
stack: string;
|
|
349
|
-
} | undefined)[];
|
|
350
|
-
notificationNames: string[];
|
|
351
|
-
};
|
|
352
|
-
};
|
|
353
|
-
/** @internal */
|
|
354
|
-
getFunctionBinding(): FunctionBindingProps;
|
|
355
|
-
private createBucket;
|
|
356
|
-
private addNotification;
|
|
357
|
-
private addQueueNotification;
|
|
358
|
-
private addTopicNotification;
|
|
359
|
-
private addFunctionNotification;
|
|
360
|
-
private buildCorsConfig;
|
|
361
|
-
private buildBlockPublicAccessConfig;
|
|
362
|
-
private buildObjectOwnershipConfig;
|
|
363
|
-
}
|
|
364
|
-
export {};
|
package/constructs/Bucket.js
DELETED
|
@@ -1,327 +0,0 @@
|
|
|
1
|
-
import { Construct } from "constructs";
|
|
2
|
-
import { Queue } from "./Queue.js";
|
|
3
|
-
import { Topic } from "./Topic.js";
|
|
4
|
-
import { getFunctionRef, isCDKConstruct } from "./Construct.js";
|
|
5
|
-
import { Function as Fn, } from "./Function.js";
|
|
6
|
-
import { toCdkDuration } from "./util/duration.js";
|
|
7
|
-
import { Bucket as CDKBucket, BlockPublicAccess, EventType, HttpMethods, ObjectOwnership, } from "aws-cdk-lib/aws-s3";
|
|
8
|
-
import { LambdaDestination, SnsDestination, SqsDestination, } from "aws-cdk-lib/aws-s3-notifications";
|
|
9
|
-
/////////////////////
|
|
10
|
-
// Construct
|
|
11
|
-
/////////////////////
|
|
12
|
-
/**
|
|
13
|
-
* The `Bucket` construct is a higher level CDK construct that makes it easy to create an S3 Bucket and to define its notifications.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
*
|
|
17
|
-
* ```js
|
|
18
|
-
* import { Bucket } from "sst/constructs";
|
|
19
|
-
*
|
|
20
|
-
* new Bucket(stack, "Bucket");
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export class Bucket extends Construct {
|
|
24
|
-
id;
|
|
25
|
-
cdk;
|
|
26
|
-
notifications = {};
|
|
27
|
-
bindingForAllNotifications = [];
|
|
28
|
-
permissionsAttachedForAllNotifications = [];
|
|
29
|
-
props;
|
|
30
|
-
constructor(scope, id, props) {
|
|
31
|
-
super(scope, props?.cdk?.id || id);
|
|
32
|
-
this.id = id;
|
|
33
|
-
this.props = props || {};
|
|
34
|
-
this.cdk = {};
|
|
35
|
-
this.createBucket();
|
|
36
|
-
this.addNotifications(this, props?.notifications || {});
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* The ARN of the internally created `Bucket` instance.
|
|
40
|
-
*/
|
|
41
|
-
get bucketArn() {
|
|
42
|
-
return this.cdk.bucket.bucketArn;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* The name of the internally created `Bucket` instance.
|
|
46
|
-
*/
|
|
47
|
-
get bucketName() {
|
|
48
|
-
return this.cdk.bucket.bucketName;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* A list of the internally created functions for the notifications.
|
|
52
|
-
*/
|
|
53
|
-
get notificationFunctions() {
|
|
54
|
-
return Object.values(this.notifications).filter((notification) => notification instanceof Fn);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Add notification subscriptions after the bucket has been created
|
|
58
|
-
*
|
|
59
|
-
* @example
|
|
60
|
-
* ```js {3}
|
|
61
|
-
* const bucket = new Bucket(stack, "Bucket");
|
|
62
|
-
* bucket.addNotifications(stack, {
|
|
63
|
-
* myNotification: "src/notification.main"
|
|
64
|
-
* });
|
|
65
|
-
* ```
|
|
66
|
-
*/
|
|
67
|
-
addNotifications(scope, notifications) {
|
|
68
|
-
Object.entries(notifications).forEach(([notificationName, notification]) => {
|
|
69
|
-
this.addNotification(scope, notificationName, notification);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Binds the given list of resources to all bucket notifications
|
|
74
|
-
* @example
|
|
75
|
-
* ```js {20}
|
|
76
|
-
* const bucket = new Bucket(stack, "Bucket", {
|
|
77
|
-
* notifications: {
|
|
78
|
-
* myNotification: "src/function.handler",
|
|
79
|
-
* }
|
|
80
|
-
* });
|
|
81
|
-
*
|
|
82
|
-
* bucket.bind([STRIPE_KEY, bucket]);
|
|
83
|
-
* ```
|
|
84
|
-
*/
|
|
85
|
-
bind(constructs) {
|
|
86
|
-
this.notificationFunctions.forEach((notification) => notification.bind(constructs));
|
|
87
|
-
this.bindingForAllNotifications.push(...constructs);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Binds the given list of resources to a specific bucket notification
|
|
91
|
-
*
|
|
92
|
-
* @example
|
|
93
|
-
* ```js {20}
|
|
94
|
-
* const bucket = new Bucket(stack, "Bucket", {
|
|
95
|
-
* notifications: {
|
|
96
|
-
* myNotification: "src/function.handler",
|
|
97
|
-
* }
|
|
98
|
-
* });
|
|
99
|
-
*
|
|
100
|
-
* bucket.bindToNotification("myNotification", ["s3"]);
|
|
101
|
-
* ```
|
|
102
|
-
*/
|
|
103
|
-
bindToNotification(notificationName, constructs) {
|
|
104
|
-
const notification = this.notifications[notificationName];
|
|
105
|
-
if (!(notification instanceof Fn)) {
|
|
106
|
-
throw new Error(`Cannot bind to the "${this.node.id}" Bucket notification because it's not a Lambda function`);
|
|
107
|
-
}
|
|
108
|
-
notification.bind(constructs);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Attaches additional permissions to all bucket notifications
|
|
112
|
-
* @example
|
|
113
|
-
* ```js {20}
|
|
114
|
-
* const bucket = new Bucket(stack, "Bucket", {
|
|
115
|
-
* notifications: {
|
|
116
|
-
* myNotification: "src/function.handler",
|
|
117
|
-
* }
|
|
118
|
-
* });
|
|
119
|
-
*
|
|
120
|
-
* bucket.attachPermissions(["s3"]);
|
|
121
|
-
* ```
|
|
122
|
-
*/
|
|
123
|
-
attachPermissions(permissions) {
|
|
124
|
-
this.notificationFunctions.forEach((notification) => notification.attachPermissions(permissions));
|
|
125
|
-
this.permissionsAttachedForAllNotifications.push(permissions);
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Attaches additional permissions to a specific bucket notification
|
|
129
|
-
*
|
|
130
|
-
* @example
|
|
131
|
-
* ```js {20}
|
|
132
|
-
* const bucket = new Bucket(stack, "Bucket", {
|
|
133
|
-
* notifications: {
|
|
134
|
-
* myNotification: "src/function.handler",
|
|
135
|
-
* }
|
|
136
|
-
* });
|
|
137
|
-
*
|
|
138
|
-
* bucket.attachPermissionsToNotification("myNotification", ["s3"]);
|
|
139
|
-
* ```
|
|
140
|
-
*/
|
|
141
|
-
attachPermissionsToNotification(notificationName, permissions) {
|
|
142
|
-
const notification = this.notifications[notificationName];
|
|
143
|
-
if (!(notification instanceof Fn)) {
|
|
144
|
-
throw new Error(`Cannot attach permissions to the "${this.node.id}" Bucket notification because it's not a Lambda function`);
|
|
145
|
-
}
|
|
146
|
-
notification.attachPermissions(permissions);
|
|
147
|
-
}
|
|
148
|
-
getConstructMetadata() {
|
|
149
|
-
return {
|
|
150
|
-
type: "Bucket",
|
|
151
|
-
data: {
|
|
152
|
-
name: this.cdk.bucket.bucketName,
|
|
153
|
-
notifications: Object.values(this.notifications).map(getFunctionRef),
|
|
154
|
-
notificationNames: Object.keys(this.notifications),
|
|
155
|
-
},
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
/** @internal */
|
|
159
|
-
getFunctionBinding() {
|
|
160
|
-
return {
|
|
161
|
-
clientPackage: "bucket",
|
|
162
|
-
variables: {
|
|
163
|
-
bucketName: {
|
|
164
|
-
type: "plain",
|
|
165
|
-
value: this.bucketName,
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
permissions: {
|
|
169
|
-
"s3:*": [this.bucketArn, `${this.bucketArn}/*`],
|
|
170
|
-
},
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
createBucket() {
|
|
174
|
-
const { name, cors, blockPublicACLs, cdk } = this.props;
|
|
175
|
-
if (isCDKConstruct(cdk?.bucket)) {
|
|
176
|
-
if (cors !== undefined) {
|
|
177
|
-
throw new Error(`Cannot configure the "cors" when "cdk.bucket" is a construct`);
|
|
178
|
-
}
|
|
179
|
-
this.cdk.bucket = cdk?.bucket;
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
this.cdk.bucket = new CDKBucket(this, "Bucket", {
|
|
183
|
-
bucketName: name,
|
|
184
|
-
cors: this.buildCorsConfig(cors),
|
|
185
|
-
blockPublicAccess: this.buildBlockPublicAccessConfig(blockPublicACLs),
|
|
186
|
-
objectOwnership: this.buildObjectOwnershipConfig(blockPublicACLs),
|
|
187
|
-
enforceSSL: true,
|
|
188
|
-
...cdk?.bucket,
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
addNotification(scope, notificationName, notification) {
|
|
193
|
-
if (notification instanceof Queue ||
|
|
194
|
-
notification.queue) {
|
|
195
|
-
notification = notification;
|
|
196
|
-
this.addQueueNotification(scope, notificationName, notification);
|
|
197
|
-
}
|
|
198
|
-
else if (notification instanceof Topic ||
|
|
199
|
-
notification.topic) {
|
|
200
|
-
notification = notification;
|
|
201
|
-
this.addTopicNotification(scope, notificationName, notification);
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
notification = notification;
|
|
205
|
-
this.addFunctionNotification(scope, notificationName, notification);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
addQueueNotification(_scope, notificationName, notification) {
|
|
209
|
-
// Parse notification props
|
|
210
|
-
let notificationProps;
|
|
211
|
-
let queue;
|
|
212
|
-
if (notification instanceof Queue) {
|
|
213
|
-
notification = notification;
|
|
214
|
-
queue = notification;
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
notification = notification;
|
|
218
|
-
notificationProps = {
|
|
219
|
-
events: notification.events,
|
|
220
|
-
filters: notification.filters,
|
|
221
|
-
};
|
|
222
|
-
queue = notification.queue;
|
|
223
|
-
}
|
|
224
|
-
this.notifications[notificationName] = queue;
|
|
225
|
-
// Create Notifications
|
|
226
|
-
const events = notificationProps?.events || [
|
|
227
|
-
"object_created",
|
|
228
|
-
"object_removed",
|
|
229
|
-
];
|
|
230
|
-
const filters = notificationProps?.filters || [];
|
|
231
|
-
events.forEach((event) => this.cdk.bucket.addEventNotification(EventType[event.toUpperCase()], new SqsDestination(queue.cdk.queue), ...filters));
|
|
232
|
-
}
|
|
233
|
-
addTopicNotification(_scope, notificationName, notification) {
|
|
234
|
-
// Parse notification props
|
|
235
|
-
let notificationProps;
|
|
236
|
-
let topic;
|
|
237
|
-
if (notification instanceof Topic) {
|
|
238
|
-
notification = notification;
|
|
239
|
-
topic = notification;
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
notification = notification;
|
|
243
|
-
notificationProps = {
|
|
244
|
-
events: notification.events,
|
|
245
|
-
filters: notification.filters,
|
|
246
|
-
};
|
|
247
|
-
topic = notification.topic;
|
|
248
|
-
}
|
|
249
|
-
this.notifications[notificationName] = topic;
|
|
250
|
-
// Create Notifications
|
|
251
|
-
const events = notificationProps?.events || [
|
|
252
|
-
"object_created",
|
|
253
|
-
"object_removed",
|
|
254
|
-
];
|
|
255
|
-
const filters = notificationProps?.filters || [];
|
|
256
|
-
events.forEach((event) => this.cdk.bucket.addEventNotification(EventType[event.toUpperCase()], new SnsDestination(topic.cdk.topic), ...filters));
|
|
257
|
-
}
|
|
258
|
-
addFunctionNotification(scope, notificationName, notification) {
|
|
259
|
-
// parse notification
|
|
260
|
-
let notificationFunction, notificationProps;
|
|
261
|
-
if (notification.function) {
|
|
262
|
-
notification = notification;
|
|
263
|
-
notificationFunction = notification.function;
|
|
264
|
-
notificationProps = {
|
|
265
|
-
events: notification.events,
|
|
266
|
-
filters: notification.filters,
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
notificationFunction = notification;
|
|
271
|
-
}
|
|
272
|
-
// create function
|
|
273
|
-
const fn = Fn.fromDefinition(scope, `Notification_${this.node.id}_${notificationName}`, notificationFunction, 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 consumers using FunctionProps, so the Table construct can apply the "defaults.function" to them.`);
|
|
274
|
-
this.notifications[notificationName] = fn;
|
|
275
|
-
// create Notifications
|
|
276
|
-
const events = notificationProps?.events || [
|
|
277
|
-
"object_created",
|
|
278
|
-
"object_removed",
|
|
279
|
-
];
|
|
280
|
-
const filters = notificationProps?.filters || [];
|
|
281
|
-
events.forEach((event) => this.cdk.bucket.addEventNotification(EventType[event.toUpperCase()], new LambdaDestination(fn), ...filters));
|
|
282
|
-
// attached permissions
|
|
283
|
-
this.permissionsAttachedForAllNotifications.forEach((permissions) => fn.attachPermissions(permissions));
|
|
284
|
-
fn.bind(this.bindingForAllNotifications);
|
|
285
|
-
}
|
|
286
|
-
buildCorsConfig(cors) {
|
|
287
|
-
if (cors === false) {
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
290
|
-
if (cors === undefined || cors === true) {
|
|
291
|
-
return [
|
|
292
|
-
{
|
|
293
|
-
allowedHeaders: ["*"],
|
|
294
|
-
allowedMethods: [
|
|
295
|
-
HttpMethods.GET,
|
|
296
|
-
HttpMethods.PUT,
|
|
297
|
-
HttpMethods.HEAD,
|
|
298
|
-
HttpMethods.POST,
|
|
299
|
-
HttpMethods.DELETE,
|
|
300
|
-
],
|
|
301
|
-
allowedOrigins: ["*"],
|
|
302
|
-
},
|
|
303
|
-
];
|
|
304
|
-
}
|
|
305
|
-
return cors.map((e) => ({
|
|
306
|
-
allowedMethods: (e.allowedMethods || []).map((method) => HttpMethods[method]),
|
|
307
|
-
allowedOrigins: e.allowedOrigins,
|
|
308
|
-
allowedHeaders: e.allowedHeaders,
|
|
309
|
-
exposedHeaders: e.exposedHeaders,
|
|
310
|
-
id: e.id,
|
|
311
|
-
maxAge: e.maxAge && toCdkDuration(e.maxAge).toSeconds(),
|
|
312
|
-
}));
|
|
313
|
-
}
|
|
314
|
-
buildBlockPublicAccessConfig(config) {
|
|
315
|
-
return config === true
|
|
316
|
-
? BlockPublicAccess.BLOCK_ALL
|
|
317
|
-
: new BlockPublicAccess({
|
|
318
|
-
blockPublicAcls: false,
|
|
319
|
-
ignorePublicAcls: false,
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
buildObjectOwnershipConfig(config) {
|
|
323
|
-
return config === true
|
|
324
|
-
? ObjectOwnership.BUCKET_OWNER_ENFORCED
|
|
325
|
-
: ObjectOwnership.BUCKET_OWNER_PREFERRED;
|
|
326
|
-
}
|
|
327
|
-
}
|