@sst-community/sst 4.21.1 → 5.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -52
- package/package.json +35 -11
- package/platform/js/chunks/chunk-HIZZCEDS.js +328 -0
- package/platform/js/chunks/chunk-HIZZCEDS.js.map +6 -0
- package/platform/js/chunks/chunk-KOKHGKJ2.js +639 -0
- package/platform/js/chunks/chunk-KOKHGKJ2.js.map +6 -0
- package/platform/js/chunks/chunk-MR4XM5XA.js +473 -0
- package/platform/js/chunks/chunk-MR4XM5XA.js.map +6 -0
- package/platform/js/chunks/chunk-ONNI4XNK.js +367 -0
- package/platform/js/chunks/chunk-ONNI4XNK.js.map +6 -0
- package/platform/js/chunks/chunk-VIFHC73J.js +108 -0
- package/platform/js/chunks/chunk-VIFHC73J.js.map +6 -0
- package/platform/js/chunks/chunk-WJ6BVA46.js +10 -0
- package/platform/js/chunks/chunk-WJ6BVA46.js.map +6 -0
- package/platform/js/chunks/component-32FCLIRK.js +26 -0
- package/platform/js/chunks/component-32FCLIRK.js.map +6 -0
- package/platform/js/chunks/config-CRGKEDQW.js +10 -0
- package/platform/js/chunks/config-CRGKEDQW.js.map +6 -0
- package/platform/js/chunks/link-OJ3RNGQ3.js +9 -0
- package/platform/js/chunks/link-OJ3RNGQ3.js.map +6 -0
- package/platform/js/components/aws/index.js +35399 -0
- package/platform/js/components/aws/index.js.map +6 -0
- package/platform/js/components/cloudflare/index.js +3246 -0
- package/platform/js/components/cloudflare/index.js.map +6 -0
- package/platform/js/components/core.js +114 -0
- package/platform/js/components/core.js.map +6 -0
- package/platform/js/components/vercel/index.js +120 -0
- package/platform/js/components/vercel/index.js.map +6 -0
- package/platform/js/testing/index.js +569 -0
- package/platform/js/testing/index.js.map +6 -0
- package/platform/package.json +25 -0
- package/platform/src/ast/add.mjs +190 -0
- package/platform/src/auto/run.ts +109 -0
- package/platform/src/components/README.md +652 -0
- package/platform/src/components/args.ts +133 -0
- package/platform/src/components/aws/alb.ts +577 -0
- package/platform/src/components/aws/analog.ts +462 -0
- package/platform/src/components/aws/apigateway-websocket-route.ts +206 -0
- package/platform/src/components/aws/apigateway-websocket.ts +894 -0
- package/platform/src/components/aws/apigatewayv1-api-key.ts +90 -0
- package/platform/src/components/aws/apigatewayv1-authorizer.ts +178 -0
- package/platform/src/components/aws/apigatewayv1-base-route.ts +78 -0
- package/platform/src/components/aws/apigatewayv1-integration-route.ts +92 -0
- package/platform/src/components/aws/apigatewayv1-lambda-route.ts +152 -0
- package/platform/src/components/aws/apigatewayv1-usage-plan.ts +109 -0
- package/platform/src/components/aws/apigatewayv1.ts +1691 -0
- package/platform/src/components/aws/apigatewayv2-authorizer.ts +199 -0
- package/platform/src/components/aws/apigatewayv2-base-route.ts +69 -0
- package/platform/src/components/aws/apigatewayv2-lambda-route.ts +141 -0
- package/platform/src/components/aws/apigatewayv2-private-route.ts +101 -0
- package/platform/src/components/aws/apigatewayv2-url-route.ts +90 -0
- package/platform/src/components/aws/apigatewayv2.ts +1439 -0
- package/platform/src/components/aws/app-sync-data-source.ts +264 -0
- package/platform/src/components/aws/app-sync-function.ts +79 -0
- package/platform/src/components/aws/app-sync-resolver.ts +110 -0
- package/platform/src/components/aws/app-sync.ts +849 -0
- package/platform/src/components/aws/astro.ts +580 -0
- package/platform/src/components/aws/aurora.ts +1356 -0
- package/platform/src/components/aws/auth-v1.ts +69 -0
- package/platform/src/components/aws/auth.ts +417 -0
- package/platform/src/components/aws/bucket-lambda-subscriber.ts +162 -0
- package/platform/src/components/aws/bucket-notification.ts +254 -0
- package/platform/src/components/aws/bucket-queue-subscriber.ts +122 -0
- package/platform/src/components/aws/bucket-topic-subscriber.ts +144 -0
- package/platform/src/components/aws/bucket.ts +2046 -0
- package/platform/src/components/aws/bus-base-subscriber.ts +52 -0
- package/platform/src/components/aws/bus-lambda-subscriber.ts +125 -0
- package/platform/src/components/aws/bus-queue-subscriber.ts +88 -0
- package/platform/src/components/aws/bus.ts +630 -0
- package/platform/src/components/aws/cdn.ts +561 -0
- package/platform/src/components/aws/cluster-v1.ts +932 -0
- package/platform/src/components/aws/cluster.ts +584 -0
- package/platform/src/components/aws/cognito-identity-pool.ts +433 -0
- package/platform/src/components/aws/cognito-identity-provider.ts +96 -0
- package/platform/src/components/aws/cognito-user-pool-client.ts +114 -0
- package/platform/src/components/aws/cognito-user-pool.ts +1089 -0
- package/platform/src/components/aws/cron-v2.ts +555 -0
- package/platform/src/components/aws/cron.ts +435 -0
- package/platform/src/components/aws/dns-validated-certificate.ts +108 -0
- package/platform/src/components/aws/dns.ts +221 -0
- package/platform/src/components/aws/dsql.ts +741 -0
- package/platform/src/components/aws/dynamo-lambda-subscriber.ts +124 -0
- package/platform/src/components/aws/dynamo.ts +929 -0
- package/platform/src/components/aws/efs.ts +410 -0
- package/platform/src/components/aws/email.ts +673 -0
- package/platform/src/components/aws/fargate.ts +1279 -0
- package/platform/src/components/aws/function.ts +3280 -0
- package/platform/src/components/aws/helpers/apigateway-account.ts +78 -0
- package/platform/src/components/aws/helpers/apigatewayv2-domain.ts +144 -0
- package/platform/src/components/aws/helpers/arn.ts +182 -0
- package/platform/src/components/aws/helpers/bootstrap.ts +16 -0
- package/platform/src/components/aws/helpers/client.ts +76 -0
- package/platform/src/components/aws/helpers/container-builder.ts +33 -0
- package/platform/src/components/aws/helpers/custom-domain.ts +128 -0
- package/platform/src/components/aws/helpers/event-source.ts +41 -0
- package/platform/src/components/aws/helpers/fargate.ts +727 -0
- package/platform/src/components/aws/helpers/function-builder.ts +133 -0
- package/platform/src/components/aws/helpers/function-code.ts +224 -0
- package/platform/src/components/aws/helpers/function-part.ts +212 -0
- package/platform/src/components/aws/helpers/function-permission.ts +29 -0
- package/platform/src/components/aws/helpers/load-balancer-args.ts +88 -0
- package/platform/src/components/aws/helpers/load-balancer.ts +17 -0
- package/platform/src/components/aws/helpers/provider.ts +36 -0
- package/platform/src/components/aws/helpers/queue-policy.ts +33 -0
- package/platform/src/components/aws/helpers/rds.ts +212 -0
- package/platform/src/components/aws/helpers/site-builder.ts +41 -0
- package/platform/src/components/aws/helpers/subscriber.ts +23 -0
- package/platform/src/components/aws/helpers/vpc.ts +27 -0
- package/platform/src/components/aws/https-redirect.ts +216 -0
- package/platform/src/components/aws/iam-edit.ts +50 -0
- package/platform/src/components/aws/index.ts +61 -0
- package/platform/src/components/aws/kinesis-stream-lambda-subscriber.ts +122 -0
- package/platform/src/components/aws/kinesis-stream.ts +416 -0
- package/platform/src/components/aws/linkable.ts +32 -0
- package/platform/src/components/aws/logging.ts +25 -0
- package/platform/src/components/aws/microvm.ts +988 -0
- package/platform/src/components/aws/mysql.ts +1050 -0
- package/platform/src/components/aws/nextjs.ts +1052 -0
- package/platform/src/components/aws/nuxt.ts +527 -0
- package/platform/src/components/aws/open-search.ts +603 -0
- package/platform/src/components/aws/opencontrol.ts +235 -0
- package/platform/src/components/aws/permission.ts +80 -0
- package/platform/src/components/aws/postgres-v1.ts +537 -0
- package/platform/src/components/aws/postgres.ts +1074 -0
- package/platform/src/components/aws/providers/bucket-files.ts +32 -0
- package/platform/src/components/aws/providers/distribution-deployment-waiter.ts +27 -0
- package/platform/src/components/aws/providers/distribution-invalidation.ts +24 -0
- package/platform/src/components/aws/providers/function-environment-update.ts +46 -0
- package/platform/src/components/aws/providers/hosted-zone-lookup.ts +25 -0
- package/platform/src/components/aws/providers/kv-keys.ts +15 -0
- package/platform/src/components/aws/providers/kv-routes-update.ts +24 -0
- package/platform/src/components/aws/providers/microvm-image-prune.ts +48 -0
- package/platform/src/components/aws/providers/origin-access-control.ts +21 -0
- package/platform/src/components/aws/providers/rds-role-lookup.ts +21 -0
- package/platform/src/components/aws/providers/vector-table.ts +25 -0
- package/platform/src/components/aws/queue-lambda-subscriber.ts +135 -0
- package/platform/src/components/aws/queue.ts +712 -0
- package/platform/src/components/aws/react.ts +510 -0
- package/platform/src/components/aws/realtime-lambda-subscriber.ts +129 -0
- package/platform/src/components/aws/realtime.ts +345 -0
- package/platform/src/components/aws/redis-v1.ts +595 -0
- package/platform/src/components/aws/redis.ts +1078 -0
- package/platform/src/components/aws/remix.ts +576 -0
- package/platform/src/components/aws/router-base-route.ts +83 -0
- package/platform/src/components/aws/router-bucket-route.ts +63 -0
- package/platform/src/components/aws/router-url-route.ts +75 -0
- package/platform/src/components/aws/router.ts +3294 -0
- package/platform/src/components/aws/service-v1.ts +876 -0
- package/platform/src/components/aws/service.ts +2994 -0
- package/platform/src/components/aws/sns-topic-lambda-subscriber.ts +127 -0
- package/platform/src/components/aws/sns-topic-queue-subscriber.ts +105 -0
- package/platform/src/components/aws/sns-topic.ts +700 -0
- package/platform/src/components/aws/solid-start.ts +467 -0
- package/platform/src/components/aws/ssr-site.ts +2204 -0
- package/platform/src/components/aws/static-site.ts +1389 -0
- package/platform/src/components/aws/step-functions/choice.ts +123 -0
- package/platform/src/components/aws/step-functions/fail.ts +69 -0
- package/platform/src/components/aws/step-functions/map.ts +264 -0
- package/platform/src/components/aws/step-functions/parallel.ts +170 -0
- package/platform/src/components/aws/step-functions/pass.ts +48 -0
- package/platform/src/components/aws/step-functions/state.ts +376 -0
- package/platform/src/components/aws/step-functions/succeed.ts +31 -0
- package/platform/src/components/aws/step-functions/task.ts +538 -0
- package/platform/src/components/aws/step-functions/wait.ts +105 -0
- package/platform/src/components/aws/step-functions.ts +804 -0
- package/platform/src/components/aws/svelte-kit.ts +563 -0
- package/platform/src/components/aws/takeover/alb.ts +9 -0
- package/platform/src/components/aws/takeover/apigatewayv2.ts +43 -0
- package/platform/src/components/aws/takeover/app-sync.ts +45 -0
- package/platform/src/components/aws/takeover/aurora.ts +19 -0
- package/platform/src/components/aws/takeover/bucket.ts +94 -0
- package/platform/src/components/aws/takeover/bus.ts +43 -0
- package/platform/src/components/aws/takeover/cognito-user-pool.ts +21 -0
- package/platform/src/components/aws/takeover/cron-v2.ts +9 -0
- package/platform/src/components/aws/takeover/dsql.ts +12 -0
- package/platform/src/components/aws/takeover/dynamo.ts +31 -0
- package/platform/src/components/aws/takeover/efs.ts +9 -0
- package/platform/src/components/aws/takeover/function.ts +21 -0
- package/platform/src/components/aws/takeover/helpers.ts +26 -0
- package/platform/src/components/aws/takeover/index.ts +27 -0
- package/platform/src/components/aws/takeover/mysql.ts +17 -0
- package/platform/src/components/aws/takeover/postgres.ts +17 -0
- package/platform/src/components/aws/takeover/queue.ts +21 -0
- package/platform/src/components/aws/takeover/redis.ts +10 -0
- package/platform/src/components/aws/takeover/service.ts +22 -0
- package/platform/src/components/aws/takeover/sns-topic.ts +27 -0
- package/platform/src/components/aws/takeover/task.ts +13 -0
- package/platform/src/components/aws/tan-stack-start.ts +479 -0
- package/platform/src/components/aws/task.ts +571 -0
- package/platform/src/components/aws/v5/alb.ts +310 -0
- package/platform/src/components/aws/v5/apigatewayv2.ts +845 -0
- package/platform/src/components/aws/v5/app-sync.ts +673 -0
- package/platform/src/components/aws/v5/aurora.ts +855 -0
- package/platform/src/components/aws/v5/bucket.ts +1001 -0
- package/platform/src/components/aws/v5/bus.ts +321 -0
- package/platform/src/components/aws/v5/cluster.ts +230 -0
- package/platform/src/components/aws/v5/cognito-user-pool-client.ts +100 -0
- package/platform/src/components/aws/v5/cognito-user-pool.ts +693 -0
- package/platform/src/components/aws/v5/cron-v2.ts +316 -0
- package/platform/src/components/aws/v5/dsql.ts +665 -0
- package/platform/src/components/aws/v5/dynamo.ts +477 -0
- package/platform/src/components/aws/v5/efs.ts +311 -0
- package/platform/src/components/aws/v5/function.ts +1546 -0
- package/platform/src/components/aws/v5/index.ts +26 -0
- package/platform/src/components/aws/v5/mysql.ts +604 -0
- package/platform/src/components/aws/v5/postgres.ts +612 -0
- package/platform/src/components/aws/v5/queue.ts +271 -0
- package/platform/src/components/aws/v5/redis.ts +550 -0
- package/platform/src/components/aws/v5/service.ts +2209 -0
- package/platform/src/components/aws/v5/sns-topic.ts +284 -0
- package/platform/src/components/aws/v5/task.ts +549 -0
- package/platform/src/components/aws/vector.ts +316 -0
- package/platform/src/components/aws/vpc-v1.ts +580 -0
- package/platform/src/components/aws/vpc.ts +1641 -0
- package/platform/src/components/aws/workflow.ts +421 -0
- package/platform/src/components/base/base-site.ts +101 -0
- package/platform/src/components/base/base-ssr-site.ts +120 -0
- package/platform/src/components/base/base-static-site.ts +314 -0
- package/platform/src/components/cloudflare/account-id.ts +1 -0
- package/platform/src/components/cloudflare/ai.ts +77 -0
- package/platform/src/components/cloudflare/astro.ts +355 -0
- package/platform/src/components/cloudflare/auth.ts +69 -0
- package/platform/src/components/cloudflare/binding.ts +132 -0
- package/platform/src/components/cloudflare/bucket.ts +142 -0
- package/platform/src/components/cloudflare/cron.ts +207 -0
- package/platform/src/components/cloudflare/d1.ts +230 -0
- package/platform/src/components/cloudflare/dns.ts +253 -0
- package/platform/src/components/cloudflare/durable-object.ts +144 -0
- package/platform/src/components/cloudflare/experimental/index.ts +3 -0
- package/platform/src/components/cloudflare/experimental/solid-start.ts +288 -0
- package/platform/src/components/cloudflare/experimental/static-site.ts +4 -0
- package/platform/src/components/cloudflare/helpers/compatibility.ts +44 -0
- package/platform/src/components/cloudflare/helpers/fetch.ts +81 -0
- package/platform/src/components/cloudflare/helpers/validation.ts +74 -0
- package/platform/src/components/cloudflare/helpers/worker-builder.ts +57 -0
- package/platform/src/components/cloudflare/helpers/wrangler.ts +222 -0
- package/platform/src/components/cloudflare/hyperdrive.ts +402 -0
- package/platform/src/components/cloudflare/index.ts +25 -0
- package/platform/src/components/cloudflare/kv.ts +218 -0
- package/platform/src/components/cloudflare/providers/dns-record.ts +43 -0
- package/platform/src/components/cloudflare/providers/kv-data.ts +107 -0
- package/platform/src/components/cloudflare/providers/worker-assets.ts +41 -0
- package/platform/src/components/cloudflare/providers/worker-placement.ts +93 -0
- package/platform/src/components/cloudflare/providers/worker-script.ts +47 -0
- package/platform/src/components/cloudflare/providers/worker-url.ts +109 -0
- package/platform/src/components/cloudflare/providers/zone-lookup.ts +85 -0
- package/platform/src/components/cloudflare/queue-worker-subscriber.ts +192 -0
- package/platform/src/components/cloudflare/queue.ts +310 -0
- package/platform/src/components/cloudflare/rate-limit.ts +178 -0
- package/platform/src/components/cloudflare/react-router.ts +322 -0
- package/platform/src/components/cloudflare/ssr-site.ts +293 -0
- package/platform/src/components/cloudflare/static-site-v2.ts +428 -0
- package/platform/src/components/cloudflare/static-site.ts +470 -0
- package/platform/src/components/cloudflare/tan-stack-start.ts +408 -0
- package/platform/src/components/cloudflare/worker.ts +1080 -0
- package/platform/src/components/cloudflare/workflow.ts +319 -0
- package/platform/src/components/component.ts +242 -0
- package/platform/src/components/core.ts +43 -0
- package/platform/src/components/cpu.ts +10 -0
- package/platform/src/components/dns.ts +82 -0
- package/platform/src/components/duration.ts +67 -0
- package/platform/src/components/error.ts +5 -0
- package/platform/src/components/esbuild.ts +15 -0
- package/platform/src/components/experimental/dev-command.ts +127 -0
- package/platform/src/components/experimental/index.ts +1 -0
- package/platform/src/components/groups.ts +9 -0
- package/platform/src/components/index.ts +9 -0
- package/platform/src/components/input.ts +2 -0
- package/platform/src/components/link.ts +201 -0
- package/platform/src/components/linkable.ts +360 -0
- package/platform/src/components/naming-rules.ts +299 -0
- package/platform/src/components/naming.ts +189 -0
- package/platform/src/components/parts-component.ts +662 -0
- package/platform/src/components/parts.ts +299 -0
- package/platform/src/components/path.ts +5 -0
- package/platform/src/components/rpc/rpc.ts +110 -0
- package/platform/src/components/secret.ts +159 -0
- package/platform/src/components/size.ts +28 -0
- package/platform/src/components/takeover.ts +131 -0
- package/platform/src/components/transform.ts +107 -0
- package/platform/src/components/vercel/account-id.ts +1 -0
- package/platform/src/components/vercel/dns.ts +171 -0
- package/platform/src/components/vercel/index.ts +2 -0
- package/platform/src/components/vercel/providers/dns-record.ts +34 -0
- package/platform/src/config.ts +1463 -0
- package/platform/src/global-aliases.d.ts +37 -0
- package/platform/src/global.d.ts +374 -0
- package/platform/src/internal.d.ts +18 -0
- package/platform/src/runtime/worker/unenv.d.ts +14 -0
- package/platform/src/runtime/worker/unenv.mjs +26 -0
- package/platform/src/shim/run.js +25 -0
- package/platform/src/testing/global.ts +83 -0
- package/platform/src/testing/index.ts +103 -0
- package/platform/src/testing/mock.ts +646 -0
- package/platform/src/testing/vitest.ts +36 -0
- package/platform/src/util/compare-semver.ts +23 -0
- package/platform/src/util/fs.ts +49 -0
- package/platform/src/util/lazy.ts +12 -0
- package/platform/src/util/minify.ts +10 -0
- package/platform/src/util/package.ts +29 -0
- package/platform/src/util/semaphore.ts +29 -0
- package/platform/src/util/warn.ts +7 -0
- package/platform/types/auto/run.d.ts +9 -0
- package/platform/types/auto/run.d.ts.map +1 -0
- package/platform/types/components/args.d.ts +77 -0
- package/platform/types/components/args.d.ts.map +1 -0
- package/platform/types/components/aws/alb.d.ts +283 -0
- package/platform/types/components/aws/alb.d.ts.map +1 -0
- package/platform/types/components/aws/analog.d.ts +408 -0
- package/platform/types/components/aws/analog.d.ts.map +1 -0
- package/platform/types/components/aws/apigateway-websocket-route.d.ts +74 -0
- package/platform/types/components/aws/apigateway-websocket-route.d.ts.map +1 -0
- package/platform/types/components/aws/apigateway-websocket.d.ts +560 -0
- package/platform/types/components/aws/apigateway-websocket.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv1-api-key.d.ts +48 -0
- package/platform/types/components/aws/apigatewayv1-api-key.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv1-authorizer.d.ts +55 -0
- package/platform/types/components/aws/apigatewayv1-authorizer.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv1-base-route.d.ts +36 -0
- package/platform/types/components/aws/apigatewayv1-base-route.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv1-integration-route.d.ts +39 -0
- package/platform/types/components/aws/apigatewayv1-integration-route.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv1-lambda-route.d.ts +53 -0
- package/platform/types/components/aws/apigatewayv1-lambda-route.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv1-usage-plan.d.ts +53 -0
- package/platform/types/components/aws/apigatewayv1-usage-plan.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv1.d.ts +1028 -0
- package/platform/types/components/aws/apigatewayv1.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv2-authorizer.d.ts +54 -0
- package/platform/types/components/aws/apigatewayv2-authorizer.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv2-base-route.d.ts +28 -0
- package/platform/types/components/aws/apigatewayv2-base-route.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv2-lambda-route.d.ts +59 -0
- package/platform/types/components/aws/apigatewayv2-lambda-route.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv2-private-route.d.ts +54 -0
- package/platform/types/components/aws/apigatewayv2-private-route.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv2-url-route.d.ts +44 -0
- package/platform/types/components/aws/apigatewayv2-url-route.d.ts.map +1 -0
- package/platform/types/components/aws/apigatewayv2.d.ts +955 -0
- package/platform/types/components/aws/apigatewayv2.d.ts.map +1 -0
- package/platform/types/components/aws/app-sync-data-source.d.ts +52 -0
- package/platform/types/components/aws/app-sync-data-source.d.ts.map +1 -0
- package/platform/types/components/aws/app-sync-function.d.ts +33 -0
- package/platform/types/components/aws/app-sync-function.d.ts.map +1 -0
- package/platform/types/components/aws/app-sync-resolver.d.ts +41 -0
- package/platform/types/components/aws/app-sync-resolver.d.ts.map +1 -0
- package/platform/types/components/aws/app-sync.d.ts +638 -0
- package/platform/types/components/aws/app-sync.d.ts.map +1 -0
- package/platform/types/components/aws/astro.d.ts +409 -0
- package/platform/types/components/aws/astro.d.ts.map +1 -0
- package/platform/types/components/aws/aurora.d.ts +720 -0
- package/platform/types/components/aws/aurora.d.ts.map +1 -0
- package/platform/types/components/aws/auth-v1.d.ts +26 -0
- package/platform/types/components/aws/auth-v1.d.ts.map +1 -0
- package/platform/types/components/aws/auth.d.ts +295 -0
- package/platform/types/components/aws/auth.d.ts.map +1 -0
- package/platform/types/components/aws/bucket-lambda-subscriber.d.ts +61 -0
- package/platform/types/components/aws/bucket-lambda-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/bucket-notification.d.ts +47 -0
- package/platform/types/components/aws/bucket-notification.d.ts.map +1 -0
- package/platform/types/components/aws/bucket-queue-subscriber.d.ts +55 -0
- package/platform/types/components/aws/bucket-queue-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/bucket-topic-subscriber.d.ts +55 -0
- package/platform/types/components/aws/bucket-topic-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/bucket.d.ts +1356 -0
- package/platform/types/components/aws/bucket.d.ts.map +1 -0
- package/platform/types/components/aws/bus-base-subscriber.d.ts +20 -0
- package/platform/types/components/aws/bus-base-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/bus-lambda-subscriber.d.ts +50 -0
- package/platform/types/components/aws/bus-lambda-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/bus-queue-subscriber.d.ts +44 -0
- package/platform/types/components/aws/bus-queue-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/bus.d.ts +447 -0
- package/platform/types/components/aws/bus.d.ts.map +1 -0
- package/platform/types/components/aws/cdn.d.ts +310 -0
- package/platform/types/components/aws/cdn.d.ts.map +1 -0
- package/platform/types/components/aws/cluster-v1.d.ts +885 -0
- package/platform/types/components/aws/cluster-v1.d.ts.map +1 -0
- package/platform/types/components/aws/cluster.d.ts +364 -0
- package/platform/types/components/aws/cluster.d.ts.map +1 -0
- package/platform/types/components/aws/cognito-identity-pool.d.ts +199 -0
- package/platform/types/components/aws/cognito-identity-pool.d.ts.map +1 -0
- package/platform/types/components/aws/cognito-identity-provider.d.ts +38 -0
- package/platform/types/components/aws/cognito-identity-provider.d.ts.map +1 -0
- package/platform/types/components/aws/cognito-user-pool-client.d.ts +50 -0
- package/platform/types/components/aws/cognito-user-pool-client.d.ts.map +1 -0
- package/platform/types/components/aws/cognito-user-pool.d.ts +703 -0
- package/platform/types/components/aws/cognito-user-pool.d.ts.map +1 -0
- package/platform/types/components/aws/cron-v2.d.ts +325 -0
- package/platform/types/components/aws/cron-v2.d.ts.map +1 -0
- package/platform/types/components/aws/cron.d.ts +259 -0
- package/platform/types/components/aws/cron.d.ts.map +1 -0
- package/platform/types/components/aws/dns-validated-certificate.d.ts +27 -0
- package/platform/types/components/aws/dns-validated-certificate.d.ts.map +1 -0
- package/platform/types/components/aws/dns.d.ts +94 -0
- package/platform/types/components/aws/dns.d.ts.map +1 -0
- package/platform/types/components/aws/dsql.d.ts +369 -0
- package/platform/types/components/aws/dsql.d.ts.map +1 -0
- package/platform/types/components/aws/dynamo-lambda-subscriber.d.ts +55 -0
- package/platform/types/components/aws/dynamo-lambda-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/dynamo.d.ts +628 -0
- package/platform/types/components/aws/dynamo.d.ts.map +1 -0
- package/platform/types/components/aws/efs.d.ts +217 -0
- package/platform/types/components/aws/efs.d.ts.map +1 -0
- package/platform/types/components/aws/email.d.ts +370 -0
- package/platform/types/components/aws/email.d.ts.map +1 -0
- package/platform/types/components/aws/fargate.d.ts +894 -0
- package/platform/types/components/aws/fargate.d.ts.map +1 -0
- package/platform/types/components/aws/function.d.ts +1780 -0
- package/platform/types/components/aws/function.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/apigateway-account.d.ts +3 -0
- package/platform/types/components/aws/helpers/apigateway-account.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/apigatewayv2-domain.d.ts +144 -0
- package/platform/types/components/aws/helpers/apigatewayv2-domain.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/arn.d.ts +51 -0
- package/platform/types/components/aws/helpers/arn.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/bootstrap.d.ts +13 -0
- package/platform/types/components/aws/helpers/bootstrap.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/client.d.ts +7 -0
- package/platform/types/components/aws/helpers/client.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/container-builder.d.ts +4 -0
- package/platform/types/components/aws/helpers/container-builder.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/custom-domain.d.ts +111 -0
- package/platform/types/components/aws/helpers/custom-domain.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/event-source.d.ts +26 -0
- package/platform/types/components/aws/helpers/event-source.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/fargate.d.ts +225 -0
- package/platform/types/components/aws/helpers/fargate.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/function-builder.d.ts +14 -0
- package/platform/types/components/aws/helpers/function-builder.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/function-code.d.ts +80 -0
- package/platform/types/components/aws/helpers/function-code.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/function-part.d.ts +61 -0
- package/platform/types/components/aws/helpers/function-part.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/function-permission.d.ts +17 -0
- package/platform/types/components/aws/helpers/function-permission.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/load-balancer-args.d.ts +40 -0
- package/platform/types/components/aws/helpers/load-balancer-args.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/load-balancer.d.ts +9 -0
- package/platform/types/components/aws/helpers/load-balancer.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/provider.d.ts +3 -0
- package/platform/types/components/aws/helpers/provider.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/queue-policy.d.ts +11 -0
- package/platform/types/components/aws/helpers/queue-policy.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/rds.d.ts +98 -0
- package/platform/types/components/aws/helpers/rds.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/site-builder.d.ts +4 -0
- package/platform/types/components/aws/helpers/site-builder.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/subscriber.d.ts +6 -0
- package/platform/types/components/aws/helpers/subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/helpers/vpc.d.ts +14 -0
- package/platform/types/components/aws/helpers/vpc.d.ts.map +1 -0
- package/platform/types/components/aws/https-redirect.d.ts +38 -0
- package/platform/types/components/aws/https-redirect.d.ts.map +1 -0
- package/platform/types/components/aws/iam-edit.d.ts +39 -0
- package/platform/types/components/aws/iam-edit.d.ts.map +1 -0
- package/platform/types/components/aws/index.d.ts +56 -0
- package/platform/types/components/aws/index.d.ts.map +1 -0
- package/platform/types/components/aws/kinesis-stream-lambda-subscriber.d.ts +49 -0
- package/platform/types/components/aws/kinesis-stream-lambda-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/kinesis-stream.d.ts +254 -0
- package/platform/types/components/aws/kinesis-stream.d.ts.map +1 -0
- package/platform/types/components/aws/linkable.d.ts +17 -0
- package/platform/types/components/aws/linkable.d.ts.map +1 -0
- package/platform/types/components/aws/logging.d.ts +26 -0
- package/platform/types/components/aws/logging.d.ts.map +1 -0
- package/platform/types/components/aws/microvm.d.ts +439 -0
- package/platform/types/components/aws/microvm.d.ts.map +1 -0
- package/platform/types/components/aws/mysql.d.ts +528 -0
- package/platform/types/components/aws/mysql.d.ts.map +1 -0
- package/platform/types/components/aws/nextjs.d.ts +534 -0
- package/platform/types/components/aws/nextjs.d.ts.map +1 -0
- package/platform/types/components/aws/nuxt.d.ts +480 -0
- package/platform/types/components/aws/nuxt.d.ts.map +1 -0
- package/platform/types/components/aws/open-search.d.ts +306 -0
- package/platform/types/components/aws/open-search.d.ts.map +1 -0
- package/platform/types/components/aws/opencontrol.d.ts +169 -0
- package/platform/types/components/aws/opencontrol.d.ts.map +1 -0
- package/platform/types/components/aws/permission.d.ts +80 -0
- package/platform/types/components/aws/permission.d.ts.map +1 -0
- package/platform/types/components/aws/postgres-v1.d.ts +328 -0
- package/platform/types/components/aws/postgres-v1.d.ts.map +1 -0
- package/platform/types/components/aws/postgres.d.ts +529 -0
- package/platform/types/components/aws/postgres.d.ts.map +1 -0
- package/platform/types/components/aws/providers/bucket-files.d.ts +18 -0
- package/platform/types/components/aws/providers/bucket-files.d.ts.map +1 -0
- package/platform/types/components/aws/providers/distribution-deployment-waiter.d.ts +13 -0
- package/platform/types/components/aws/providers/distribution-deployment-waiter.d.ts.map +1 -0
- package/platform/types/components/aws/providers/distribution-invalidation.d.ts +11 -0
- package/platform/types/components/aws/providers/distribution-invalidation.d.ts.map +1 -0
- package/platform/types/components/aws/providers/function-environment-update.d.ts +33 -0
- package/platform/types/components/aws/providers/function-environment-update.d.ts.map +1 -0
- package/platform/types/components/aws/providers/hosted-zone-lookup.d.ts +11 -0
- package/platform/types/components/aws/providers/hosted-zone-lookup.d.ts.map +1 -0
- package/platform/types/components/aws/providers/kv-keys.d.ts +11 -0
- package/platform/types/components/aws/providers/kv-keys.d.ts.map +1 -0
- package/platform/types/components/aws/providers/kv-routes-update.d.ts +11 -0
- package/platform/types/components/aws/providers/kv-routes-update.d.ts.map +1 -0
- package/platform/types/components/aws/providers/microvm-image-prune.d.ts +35 -0
- package/platform/types/components/aws/providers/microvm-image-prune.d.ts.map +1 -0
- package/platform/types/components/aws/providers/origin-access-control.d.ts +8 -0
- package/platform/types/components/aws/providers/origin-access-control.d.ts.map +1 -0
- package/platform/types/components/aws/providers/rds-role-lookup.d.ts +8 -0
- package/platform/types/components/aws/providers/rds-role-lookup.d.ts.map +1 -0
- package/platform/types/components/aws/providers/vector-table.d.ts +12 -0
- package/platform/types/components/aws/providers/vector-table.d.ts.map +1 -0
- package/platform/types/components/aws/queue-lambda-subscriber.d.ts +53 -0
- package/platform/types/components/aws/queue-lambda-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/queue.d.ts +494 -0
- package/platform/types/components/aws/queue.d.ts.map +1 -0
- package/platform/types/components/aws/react.d.ts +407 -0
- package/platform/types/components/aws/react.d.ts.map +1 -0
- package/platform/types/components/aws/realtime-lambda-subscriber.d.ts +53 -0
- package/platform/types/components/aws/realtime-lambda-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/realtime.d.ts +237 -0
- package/platform/types/components/aws/realtime.d.ts.map +1 -0
- package/platform/types/components/aws/redis-v1.d.ts +348 -0
- package/platform/types/components/aws/redis-v1.d.ts.map +1 -0
- package/platform/types/components/aws/redis.d.ts +545 -0
- package/platform/types/components/aws/redis.d.ts.map +1 -0
- package/platform/types/components/aws/remix.d.ts +408 -0
- package/platform/types/components/aws/remix.d.ts.map +1 -0
- package/platform/types/components/aws/router-base-route.d.ts +28 -0
- package/platform/types/components/aws/router-base-route.d.ts.map +1 -0
- package/platform/types/components/aws/router-bucket-route.d.ts +29 -0
- package/platform/types/components/aws/router-bucket-route.d.ts.map +1 -0
- package/platform/types/components/aws/router-url-route.d.ts +28 -0
- package/platform/types/components/aws/router-url-route.d.ts.map +1 -0
- package/platform/types/components/aws/router.d.ts +1767 -0
- package/platform/types/components/aws/router.d.ts.map +1 -0
- package/platform/types/components/aws/service-v1.d.ts +78 -0
- package/platform/types/components/aws/service-v1.d.ts.map +1 -0
- package/platform/types/components/aws/service.d.ts +1756 -0
- package/platform/types/components/aws/service.d.ts.map +1 -0
- package/platform/types/components/aws/sns-topic-lambda-subscriber.d.ts +53 -0
- package/platform/types/components/aws/sns-topic-lambda-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/sns-topic-queue-subscriber.d.ts +55 -0
- package/platform/types/components/aws/sns-topic-queue-subscriber.d.ts.map +1 -0
- package/platform/types/components/aws/sns-topic.d.ts +394 -0
- package/platform/types/components/aws/sns-topic.d.ts.map +1 -0
- package/platform/types/components/aws/solid-start.d.ts +399 -0
- package/platform/types/components/aws/solid-start.d.ts.map +1 -0
- package/platform/types/components/aws/ssr-site.d.ts +895 -0
- package/platform/types/components/aws/ssr-site.d.ts.map +1 -0
- package/platform/types/components/aws/static-site.d.ts +744 -0
- package/platform/types/components/aws/static-site.d.ts.map +1 -0
- package/platform/types/components/aws/step-functions/choice.d.ts +73 -0
- package/platform/types/components/aws/step-functions/choice.d.ts.map +1 -0
- package/platform/types/components/aws/step-functions/fail.d.ts +63 -0
- package/platform/types/components/aws/step-functions/fail.d.ts.map +1 -0
- package/platform/types/components/aws/step-functions/map.d.ts +236 -0
- package/platform/types/components/aws/step-functions/map.d.ts.map +1 -0
- package/platform/types/components/aws/step-functions/parallel.d.ts +127 -0
- package/platform/types/components/aws/step-functions/parallel.d.ts.map +1 -0
- package/platform/types/components/aws/step-functions/pass.d.ts +39 -0
- package/platform/types/components/aws/step-functions/pass.d.ts.map +1 -0
- package/platform/types/components/aws/step-functions/state.d.ts +231 -0
- package/platform/types/components/aws/step-functions/state.d.ts.map +1 -0
- package/platform/types/components/aws/step-functions/succeed.d.ts +26 -0
- package/platform/types/components/aws/step-functions/succeed.d.ts.map +1 -0
- package/platform/types/components/aws/step-functions/task.d.ts +485 -0
- package/platform/types/components/aws/step-functions/task.d.ts.map +1 -0
- package/platform/types/components/aws/step-functions/wait.d.ts +91 -0
- package/platform/types/components/aws/step-functions/wait.d.ts.map +1 -0
- package/platform/types/components/aws/step-functions.d.ts +478 -0
- package/platform/types/components/aws/step-functions.d.ts.map +1 -0
- package/platform/types/components/aws/svelte-kit.d.ts +456 -0
- package/platform/types/components/aws/svelte-kit.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/alb.d.ts +2 -0
- package/platform/types/components/aws/takeover/alb.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/apigatewayv2.d.ts +2 -0
- package/platform/types/components/aws/takeover/apigatewayv2.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/app-sync.d.ts +2 -0
- package/platform/types/components/aws/takeover/app-sync.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/aurora.d.ts +2 -0
- package/platform/types/components/aws/takeover/aurora.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/bucket.d.ts +2 -0
- package/platform/types/components/aws/takeover/bucket.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/bus.d.ts +2 -0
- package/platform/types/components/aws/takeover/bus.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/cognito-user-pool.d.ts +2 -0
- package/platform/types/components/aws/takeover/cognito-user-pool.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/cron-v2.d.ts +2 -0
- package/platform/types/components/aws/takeover/cron-v2.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/dsql.d.ts +2 -0
- package/platform/types/components/aws/takeover/dsql.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/dynamo.d.ts +2 -0
- package/platform/types/components/aws/takeover/dynamo.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/efs.d.ts +2 -0
- package/platform/types/components/aws/takeover/efs.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/function.d.ts +2 -0
- package/platform/types/components/aws/takeover/function.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/helpers.d.ts +16 -0
- package/platform/types/components/aws/takeover/helpers.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/index.d.ts +28 -0
- package/platform/types/components/aws/takeover/index.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/mysql.d.ts +2 -0
- package/platform/types/components/aws/takeover/mysql.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/postgres.d.ts +2 -0
- package/platform/types/components/aws/takeover/postgres.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/queue.d.ts +2 -0
- package/platform/types/components/aws/takeover/queue.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/redis.d.ts +2 -0
- package/platform/types/components/aws/takeover/redis.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/service.d.ts +2 -0
- package/platform/types/components/aws/takeover/service.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/sns-topic.d.ts +2 -0
- package/platform/types/components/aws/takeover/sns-topic.d.ts.map +1 -0
- package/platform/types/components/aws/takeover/task.d.ts +2 -0
- package/platform/types/components/aws/takeover/task.d.ts.map +1 -0
- package/platform/types/components/aws/tan-stack-start.d.ts +359 -0
- package/platform/types/components/aws/tan-stack-start.d.ts.map +1 -0
- package/platform/types/components/aws/task.d.ts +342 -0
- package/platform/types/components/aws/task.d.ts.map +1 -0
- package/platform/types/components/aws/v5/alb.d.ts +177 -0
- package/platform/types/components/aws/v5/alb.d.ts.map +1 -0
- package/platform/types/components/aws/v5/apigatewayv2.d.ts +482 -0
- package/platform/types/components/aws/v5/apigatewayv2.d.ts.map +1 -0
- package/platform/types/components/aws/v5/app-sync.d.ts +424 -0
- package/platform/types/components/aws/v5/app-sync.d.ts.map +1 -0
- package/platform/types/components/aws/v5/aurora.d.ts +459 -0
- package/platform/types/components/aws/v5/aurora.d.ts.map +1 -0
- package/platform/types/components/aws/v5/bucket.d.ts +578 -0
- package/platform/types/components/aws/v5/bucket.d.ts.map +1 -0
- package/platform/types/components/aws/v5/bus.d.ts +255 -0
- package/platform/types/components/aws/v5/bus.d.ts.map +1 -0
- package/platform/types/components/aws/v5/cluster.d.ts +167 -0
- package/platform/types/components/aws/v5/cluster.d.ts.map +1 -0
- package/platform/types/components/aws/v5/cognito-user-pool-client.d.ts +69 -0
- package/platform/types/components/aws/v5/cognito-user-pool-client.d.ts.map +1 -0
- package/platform/types/components/aws/v5/cognito-user-pool.d.ts +396 -0
- package/platform/types/components/aws/v5/cognito-user-pool.d.ts.map +1 -0
- package/platform/types/components/aws/v5/cron-v2.d.ts +206 -0
- package/platform/types/components/aws/v5/cron-v2.d.ts.map +1 -0
- package/platform/types/components/aws/v5/dsql.d.ts +453 -0
- package/platform/types/components/aws/v5/dsql.d.ts.map +1 -0
- package/platform/types/components/aws/v5/dynamo.d.ts +328 -0
- package/platform/types/components/aws/v5/dynamo.d.ts.map +1 -0
- package/platform/types/components/aws/v5/efs.d.ts +178 -0
- package/platform/types/components/aws/v5/efs.d.ts.map +1 -0
- package/platform/types/components/aws/v5/function.d.ts +586 -0
- package/platform/types/components/aws/v5/function.d.ts.map +1 -0
- package/platform/types/components/aws/v5/index.d.ts +27 -0
- package/platform/types/components/aws/v5/index.d.ts.map +1 -0
- package/platform/types/components/aws/v5/mysql.d.ts +347 -0
- package/platform/types/components/aws/v5/mysql.d.ts.map +1 -0
- package/platform/types/components/aws/v5/postgres.d.ts +348 -0
- package/platform/types/components/aws/v5/postgres.d.ts.map +1 -0
- package/platform/types/components/aws/v5/queue.d.ts +190 -0
- package/platform/types/components/aws/v5/queue.d.ts.map +1 -0
- package/platform/types/components/aws/v5/redis.d.ts +214 -0
- package/platform/types/components/aws/v5/redis.d.ts.map +1 -0
- package/platform/types/components/aws/v5/service.d.ts +1347 -0
- package/platform/types/components/aws/v5/service.d.ts.map +1 -0
- package/platform/types/components/aws/v5/sns-topic.d.ts +226 -0
- package/platform/types/components/aws/v5/sns-topic.d.ts.map +1 -0
- package/platform/types/components/aws/v5/task.d.ts +346 -0
- package/platform/types/components/aws/v5/task.d.ts.map +1 -0
- package/platform/types/components/aws/vector.d.ts +163 -0
- package/platform/types/components/aws/vector.d.ts.map +1 -0
- package/platform/types/components/aws/vpc-v1.d.ts +208 -0
- package/platform/types/components/aws/vpc-v1.d.ts.map +1 -0
- package/platform/types/components/aws/vpc.d.ts +491 -0
- package/platform/types/components/aws/vpc.d.ts.map +1 -0
- package/platform/types/components/aws/workflow.d.ts +331 -0
- package/platform/types/components/aws/workflow.d.ts.map +1 -0
- package/platform/types/components/base/base-site.d.ts +53 -0
- package/platform/types/components/base/base-site.d.ts.map +1 -0
- package/platform/types/components/base/base-ssr-site.d.ts +13 -0
- package/platform/types/components/base/base-ssr-site.d.ts.map +1 -0
- package/platform/types/components/base/base-static-site.d.ts +199 -0
- package/platform/types/components/base/base-static-site.d.ts.map +1 -0
- package/platform/types/components/cloudflare/account-id.d.ts +2 -0
- package/platform/types/components/cloudflare/account-id.d.ts.map +1 -0
- package/platform/types/components/cloudflare/ai.d.ts +68 -0
- package/platform/types/components/cloudflare/ai.d.ts.map +1 -0
- package/platform/types/components/cloudflare/astro.d.ts +249 -0
- package/platform/types/components/cloudflare/astro.d.ts.map +1 -0
- package/platform/types/components/cloudflare/auth.d.ts +22 -0
- package/platform/types/components/cloudflare/auth.d.ts.map +1 -0
- package/platform/types/components/cloudflare/binding.d.ts +109 -0
- package/platform/types/components/cloudflare/binding.d.ts.map +1 -0
- package/platform/types/components/cloudflare/bucket.d.ts +98 -0
- package/platform/types/components/cloudflare/bucket.d.ts.map +1 -0
- package/platform/types/components/cloudflare/cron.d.ts +151 -0
- package/platform/types/components/cloudflare/cron.d.ts.map +1 -0
- package/platform/types/components/cloudflare/d1.d.ts +142 -0
- package/platform/types/components/cloudflare/d1.d.ts.map +1 -0
- package/platform/types/components/cloudflare/dns.d.ts +100 -0
- package/platform/types/components/cloudflare/dns.d.ts.map +1 -0
- package/platform/types/components/cloudflare/durable-object.d.ts +125 -0
- package/platform/types/components/cloudflare/durable-object.d.ts.map +1 -0
- package/platform/types/components/cloudflare/experimental/index.d.ts +4 -0
- package/platform/types/components/cloudflare/experimental/index.d.ts.map +1 -0
- package/platform/types/components/cloudflare/experimental/solid-start.d.ts +219 -0
- package/platform/types/components/cloudflare/experimental/solid-start.d.ts.map +1 -0
- package/platform/types/components/cloudflare/experimental/static-site.d.ts +3 -0
- package/platform/types/components/cloudflare/experimental/static-site.d.ts.map +1 -0
- package/platform/types/components/cloudflare/helpers/compatibility.d.ts +21 -0
- package/platform/types/components/cloudflare/helpers/compatibility.d.ts.map +1 -0
- package/platform/types/components/cloudflare/helpers/fetch.d.ts +19 -0
- package/platform/types/components/cloudflare/helpers/fetch.d.ts.map +1 -0
- package/platform/types/components/cloudflare/helpers/validation.d.ts +15 -0
- package/platform/types/components/cloudflare/helpers/validation.d.ts.map +1 -0
- package/platform/types/components/cloudflare/helpers/worker-builder.d.ts +10 -0
- package/platform/types/components/cloudflare/helpers/worker-builder.d.ts.map +1 -0
- package/platform/types/components/cloudflare/helpers/wrangler.d.ts +31 -0
- package/platform/types/components/cloudflare/helpers/wrangler.d.ts.map +1 -0
- package/platform/types/components/cloudflare/hyperdrive.d.ts +302 -0
- package/platform/types/components/cloudflare/hyperdrive.d.ts.map +1 -0
- package/platform/types/components/cloudflare/index.d.ts +25 -0
- package/platform/types/components/cloudflare/index.d.ts.map +1 -0
- package/platform/types/components/cloudflare/kv.d.ts +140 -0
- package/platform/types/components/cloudflare/kv.d.ts.map +1 -0
- package/platform/types/components/cloudflare/providers/dns-record.d.ts +21 -0
- package/platform/types/components/cloudflare/providers/dns-record.d.ts.map +1 -0
- package/platform/types/components/cloudflare/providers/kv-data.d.ts +23 -0
- package/platform/types/components/cloudflare/providers/kv-data.d.ts.map +1 -0
- package/platform/types/components/cloudflare/providers/worker-assets.d.ts +19 -0
- package/platform/types/components/cloudflare/providers/worker-assets.d.ts.map +1 -0
- package/platform/types/components/cloudflare/providers/worker-placement.d.ts +27 -0
- package/platform/types/components/cloudflare/providers/worker-placement.d.ts.map +1 -0
- package/platform/types/components/cloudflare/providers/worker-script.d.ts +23 -0
- package/platform/types/components/cloudflare/providers/worker-script.d.ts.map +1 -0
- package/platform/types/components/cloudflare/providers/worker-url.d.ts +24 -0
- package/platform/types/components/cloudflare/providers/worker-url.d.ts.map +1 -0
- package/platform/types/components/cloudflare/providers/zone-lookup.d.ts +22 -0
- package/platform/types/components/cloudflare/providers/zone-lookup.d.ts.map +1 -0
- package/platform/types/components/cloudflare/queue-worker-subscriber.d.ts +122 -0
- package/platform/types/components/cloudflare/queue-worker-subscriber.d.ts.map +1 -0
- package/platform/types/components/cloudflare/queue.d.ts +235 -0
- package/platform/types/components/cloudflare/queue.d.ts.map +1 -0
- package/platform/types/components/cloudflare/rate-limit.d.ts +117 -0
- package/platform/types/components/cloudflare/rate-limit.d.ts.map +1 -0
- package/platform/types/components/cloudflare/react-router.d.ts +262 -0
- package/platform/types/components/cloudflare/react-router.d.ts.map +1 -0
- package/platform/types/components/cloudflare/ssr-site.d.ts +60 -0
- package/platform/types/components/cloudflare/ssr-site.d.ts.map +1 -0
- package/platform/types/components/cloudflare/static-site-v2.d.ts +302 -0
- package/platform/types/components/cloudflare/static-site-v2.d.ts.map +1 -0
- package/platform/types/components/cloudflare/static-site.d.ts +270 -0
- package/platform/types/components/cloudflare/static-site.d.ts.map +1 -0
- package/platform/types/components/cloudflare/tan-stack-start.d.ts +259 -0
- package/platform/types/components/cloudflare/tan-stack-start.d.ts.map +1 -0
- package/platform/types/components/cloudflare/worker.d.ts +483 -0
- package/platform/types/components/cloudflare/worker.d.ts.map +1 -0
- package/platform/types/components/cloudflare/workflow.d.ts +248 -0
- package/platform/types/components/cloudflare/workflow.d.ts.map +1 -0
- package/platform/types/components/component.d.ts +67 -0
- package/platform/types/components/component.d.ts.map +1 -0
- package/platform/types/components/core.d.ts +16 -0
- package/platform/types/components/core.d.ts.map +1 -0
- package/platform/types/components/cpu.d.ts +3 -0
- package/platform/types/components/cpu.d.ts.map +1 -0
- package/platform/types/components/dns.d.ts +63 -0
- package/platform/types/components/dns.d.ts.map +1 -0
- package/platform/types/components/duration.d.ts +9 -0
- package/platform/types/components/duration.d.ts.map +1 -0
- package/platform/types/components/error.d.ts +4 -0
- package/platform/types/components/error.d.ts.map +1 -0
- package/platform/types/components/esbuild.d.ts +3 -0
- package/platform/types/components/esbuild.d.ts.map +1 -0
- package/platform/types/components/experimental/dev-command.d.ts +99 -0
- package/platform/types/components/experimental/dev-command.d.ts.map +1 -0
- package/platform/types/components/experimental/index.d.ts +2 -0
- package/platform/types/components/experimental/index.d.ts.map +1 -0
- package/platform/types/components/groups.d.ts +6 -0
- package/platform/types/components/groups.d.ts.map +1 -0
- package/platform/types/components/index.d.ts +5 -0
- package/platform/types/components/index.d.ts.map +1 -0
- package/platform/types/components/input.d.ts +3 -0
- package/platform/types/components/input.d.ts.map +1 -0
- package/platform/types/components/link.d.ts +41 -0
- package/platform/types/components/link.d.ts.map +1 -0
- package/platform/types/components/linkable.d.ts +301 -0
- package/platform/types/components/linkable.d.ts.map +1 -0
- package/platform/types/components/naming-rules.d.ts +32 -0
- package/platform/types/components/naming-rules.d.ts.map +1 -0
- package/platform/types/components/naming.d.ts +21 -0
- package/platform/types/components/naming.d.ts.map +1 -0
- package/platform/types/components/parts-component.d.ts +242 -0
- package/platform/types/components/parts-component.d.ts.map +1 -0
- package/platform/types/components/parts.d.ts +194 -0
- package/platform/types/components/parts.d.ts.map +1 -0
- package/platform/types/components/path.d.ts +2 -0
- package/platform/types/components/path.d.ts.map +1 -0
- package/platform/types/components/rpc/rpc.d.ts +19 -0
- package/platform/types/components/rpc/rpc.d.ts.map +1 -0
- package/platform/types/components/secret.d.ts +123 -0
- package/platform/types/components/secret.d.ts.map +1 -0
- package/platform/types/components/size.d.ts +5 -0
- package/platform/types/components/size.d.ts.map +1 -0
- package/platform/types/components/takeover.d.ts +88 -0
- package/platform/types/components/takeover.d.ts.map +1 -0
- package/platform/types/components/transform.d.ts +34 -0
- package/platform/types/components/transform.d.ts.map +1 -0
- package/platform/types/components/vercel/account-id.d.ts +2 -0
- package/platform/types/components/vercel/account-id.d.ts.map +1 -0
- package/platform/types/components/vercel/dns.d.ts +73 -0
- package/platform/types/components/vercel/dns.d.ts.map +1 -0
- package/platform/types/components/vercel/index.d.ts +3 -0
- package/platform/types/components/vercel/index.d.ts.map +1 -0
- package/platform/types/components/vercel/providers/dns-record.d.ts +15 -0
- package/platform/types/components/vercel/providers/dns-record.d.ts.map +1 -0
- package/platform/types/config.d.ts +1440 -0
- package/platform/types/config.d.ts.map +1 -0
- package/platform/types/global-aliases.d.ts +37 -0
- package/platform/types/global.d.ts +374 -0
- package/platform/types/internal.d.ts +18 -0
- package/platform/types/runtime/worker/unenv.d.ts +14 -0
- package/platform/types/testing/global.d.ts +11 -0
- package/platform/types/testing/global.d.ts.map +1 -0
- package/platform/types/testing/index.d.ts +80 -0
- package/platform/types/testing/index.d.ts.map +1 -0
- package/platform/types/testing/mock.d.ts +136 -0
- package/platform/types/testing/mock.d.ts.map +1 -0
- package/platform/types/testing/vitest.d.ts +19 -0
- package/platform/types/testing/vitest.d.ts.map +1 -0
- package/platform/types/util/compare-semver.d.ts +4 -0
- package/platform/types/util/compare-semver.d.ts.map +1 -0
- package/platform/types/util/fs.d.ts +5 -0
- package/platform/types/util/fs.d.ts.map +1 -0
- package/platform/types/util/lazy.d.ts +2 -0
- package/platform/types/util/lazy.d.ts.map +1 -0
- package/platform/types/util/minify.d.ts +2 -0
- package/platform/types/util/minify.d.ts.map +1 -0
- package/platform/types/util/package.d.ts +10 -0
- package/platform/types/util/package.d.ts.map +1 -0
- package/platform/types/util/semaphore.d.ts +9 -0
- package/platform/types/util/semaphore.d.ts.map +1 -0
- package/platform/types/util/warn.d.ts +2 -0
- package/platform/types/util/warn.d.ts.map +1 -0
|
@@ -0,0 +1,1078 @@
|
|
|
1
|
+
import {
|
|
2
|
+
all,
|
|
3
|
+
ComponentResourceOptions,
|
|
4
|
+
interpolate,
|
|
5
|
+
jsonStringify,
|
|
6
|
+
Output,
|
|
7
|
+
output,
|
|
8
|
+
} from "@pulumi/pulumi";
|
|
9
|
+
import { RandomPassword } from "@pulumi/random";
|
|
10
|
+
import { Component, Transform, transform } from "../component.js";
|
|
11
|
+
import { Link } from "../link.js";
|
|
12
|
+
import { Input } from "../input.js";
|
|
13
|
+
import { elasticache, secretsmanager } from "@pulumi/aws";
|
|
14
|
+
import { Vpc } from "./vpc.js";
|
|
15
|
+
import { toGBs } from "../size.js";
|
|
16
|
+
import { VisibleError } from "../error.js";
|
|
17
|
+
import { DevCommand } from "../experimental/dev-command.js";
|
|
18
|
+
import { Redis as RedisV1 } from "./redis-v1";
|
|
19
|
+
|
|
20
|
+
export interface RedisArgs {
|
|
21
|
+
/**
|
|
22
|
+
* The Redis engine to use. The following engines are supported:
|
|
23
|
+
*
|
|
24
|
+
* - `"redis"`: The open-source version of Redis.
|
|
25
|
+
* - `"valkey"`: [Valkey](https://valkey.io/) is a Redis-compatible in-memory key-value store.
|
|
26
|
+
*
|
|
27
|
+
* :::danger
|
|
28
|
+
* Changing the engine will cause the database to be destroyed and recreated.
|
|
29
|
+
* :::
|
|
30
|
+
*
|
|
31
|
+
* @default `"redis"`
|
|
32
|
+
*/
|
|
33
|
+
engine?: Input<"redis" | "valkey">;
|
|
34
|
+
/**
|
|
35
|
+
* The version of Redis.
|
|
36
|
+
*
|
|
37
|
+
* The default is `"7.1"` for the `"redis"` engine and `"7.2"` for the `"valkey"` engine.
|
|
38
|
+
*
|
|
39
|
+
* Check out the [supported versions](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/supported-engine-versions.html).
|
|
40
|
+
*
|
|
41
|
+
* :::caution
|
|
42
|
+
* Changing the version will cause the instance to restart on the next `sst deploy`,
|
|
43
|
+
* causing downtime. Learn more about [upgrading databases](/docs/upgrade-aws-databases/).
|
|
44
|
+
* :::
|
|
45
|
+
*
|
|
46
|
+
* @default `"7.1"` for Redis, `"7.2"` for Valkey
|
|
47
|
+
* @example
|
|
48
|
+
* ```js
|
|
49
|
+
* {
|
|
50
|
+
* version: "6.2"
|
|
51
|
+
* }
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
version?: Input<string>;
|
|
55
|
+
/**
|
|
56
|
+
* The type of instance to use for the nodes of the Redis instance. Check out the [supported instance types](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html).
|
|
57
|
+
*
|
|
58
|
+
* :::caution
|
|
59
|
+
* Changing the instance type will cause the instance to restart on the next `sst deploy`,
|
|
60
|
+
* causing downtime. Learn more about [upgrading databases](/docs/upgrade-aws-databases/).
|
|
61
|
+
* :::
|
|
62
|
+
*
|
|
63
|
+
* @default `"t4g.micro"`
|
|
64
|
+
* @example
|
|
65
|
+
* ```js
|
|
66
|
+
* {
|
|
67
|
+
* instance: "m7g.xlarge"
|
|
68
|
+
* }
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
instance?: Input<string>;
|
|
72
|
+
/**
|
|
73
|
+
* @deprecated The `cluster.nodes` prop is now the recommended way to configure the
|
|
74
|
+
* number of nodes in the cluster.
|
|
75
|
+
*/
|
|
76
|
+
nodes?: Input<number>;
|
|
77
|
+
/**
|
|
78
|
+
* Configure cluster mode for Redis.
|
|
79
|
+
*
|
|
80
|
+
* @default `{ nodes: 1 }`
|
|
81
|
+
* @example
|
|
82
|
+
* Disable cluster mode.
|
|
83
|
+
* ```js
|
|
84
|
+
* {
|
|
85
|
+
* cluster: false
|
|
86
|
+
* }
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
cluster?: Input<
|
|
90
|
+
| boolean
|
|
91
|
+
| {
|
|
92
|
+
/**
|
|
93
|
+
* The number of nodes to use for the Redis cluster.
|
|
94
|
+
*
|
|
95
|
+
* @default `1`
|
|
96
|
+
* @example
|
|
97
|
+
* ```js
|
|
98
|
+
* {
|
|
99
|
+
* nodes: 4
|
|
100
|
+
* }
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
nodes: Input<number>;
|
|
104
|
+
}
|
|
105
|
+
>;
|
|
106
|
+
/**
|
|
107
|
+
* Key-value pairs that define custom parameters for the Redis's parameter group.
|
|
108
|
+
* These values override the defaults set by AWS.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```js
|
|
112
|
+
* {
|
|
113
|
+
* parameters: {
|
|
114
|
+
* "maxmemory-policy": "noeviction"
|
|
115
|
+
* }
|
|
116
|
+
* }
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
parameters?: Input<Record<string, Input<string>>>;
|
|
120
|
+
/**
|
|
121
|
+
* Use [Amazon ElastiCache Serverless](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/WhatIs.serverless.html)
|
|
122
|
+
* instead of a provisioned cluster. It scales with your usage and you pay for the data
|
|
123
|
+
* stored and the compute you use.
|
|
124
|
+
*
|
|
125
|
+
* A serverless cache needs `version` 7 or later, which the defaults are. A lower `version`
|
|
126
|
+
* fails with an error. Only the major part of `version` is used, so `"7.2"` is sent as `"7"`
|
|
127
|
+
* and ElastiCache picks the minor version.
|
|
128
|
+
*
|
|
129
|
+
* When this is set, `instance`, `cluster`, `nodes` and `parameters` are ignored, and
|
|
130
|
+
* `transform.subnetGroup`, `transform.parameterGroup` and `transform.cluster` don't run.
|
|
131
|
+
* Use `transform.serverlessCache` instead. The password is set through an ElastiCache user
|
|
132
|
+
* and user group that SST creates for the cache.
|
|
133
|
+
*
|
|
134
|
+
* :::danger
|
|
135
|
+
* Turning this on or off for an existing Redis replaces it with a different kind of cache,
|
|
136
|
+
* and its data is lost.
|
|
137
|
+
* :::
|
|
138
|
+
*
|
|
139
|
+
* A serverless cache always uses TLS. By default SST also gives it a generated password for
|
|
140
|
+
* the `default` user, like a provisioned cluster, so the linked resource has the same `host`,
|
|
141
|
+
* `port`, `username` and `password`, and the code that connects to it doesn't change. Turn it
|
|
142
|
+
* off with `password: false`.
|
|
143
|
+
*
|
|
144
|
+
* :::note
|
|
145
|
+
* `Redis.get` only works with provisioned clusters.
|
|
146
|
+
* :::
|
|
147
|
+
*
|
|
148
|
+
* @default `false`
|
|
149
|
+
* @example
|
|
150
|
+
* Use the default limits.
|
|
151
|
+
* ```js
|
|
152
|
+
* {
|
|
153
|
+
* serverless: true
|
|
154
|
+
* }
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* Set your own limits. These cap how far the cache scales, and so what it can cost.
|
|
158
|
+
* ```js
|
|
159
|
+
* {
|
|
160
|
+
* serverless: {
|
|
161
|
+
* storage: { maximum: "100 GB" },
|
|
162
|
+
* ecpuPerSecond: { maximum: 50000 }
|
|
163
|
+
* }
|
|
164
|
+
* }
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
serverless?:
|
|
168
|
+
| boolean
|
|
169
|
+
| {
|
|
170
|
+
/**
|
|
171
|
+
* Protect the cache with a password. SST generates one for the `default` user and links
|
|
172
|
+
* it as `password`, like a provisioned cluster. Without a password, anything that can
|
|
173
|
+
* reach the cache inside the VPC can read and write it.
|
|
174
|
+
*
|
|
175
|
+
* Set this to `false` for a cache with no password. Then the link has `host`, `port` and
|
|
176
|
+
* `username`, and no `password`.
|
|
177
|
+
*
|
|
178
|
+
* Linked resources get the password, and `sst shell` has it in `Resource.MyRedis.password`.
|
|
179
|
+
*
|
|
180
|
+
* With a password, the deploy role needs these ElastiCache actions, on top of the ones for
|
|
181
|
+
* the cache: `elasticache:CreateUser`, `elasticache:DescribeUsers`, `elasticache:DeleteUser`,
|
|
182
|
+
* `elasticache:CreateUserGroup`, `elasticache:DescribeUserGroups` and
|
|
183
|
+
* `elasticache:DeleteUserGroup`. Changing a setting later may also call the matching
|
|
184
|
+
* `Modify` actions.
|
|
185
|
+
*
|
|
186
|
+
* :::danger
|
|
187
|
+
* Turning this on or off for an existing cache changes how clients connect, so apps
|
|
188
|
+
* that were linked before have to be deployed again.
|
|
189
|
+
* :::
|
|
190
|
+
*
|
|
191
|
+
* @default `true`
|
|
192
|
+
*/
|
|
193
|
+
password?: boolean;
|
|
194
|
+
/**
|
|
195
|
+
* The amount of data the cache can store, in whole GB. A fraction is rounded up. A
|
|
196
|
+
* `minimum` and a `maximum` have to be at least `1 GB`, and the `minimum` can't be above
|
|
197
|
+
* the `maximum`.
|
|
198
|
+
*
|
|
199
|
+
* @default `{ maximum: "10 GB" }`
|
|
200
|
+
* @example
|
|
201
|
+
* ```js
|
|
202
|
+
* {
|
|
203
|
+
* storage: { minimum: "1 GB", maximum: "100 GB" }
|
|
204
|
+
* }
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
storage?: Input<{
|
|
208
|
+
/**
|
|
209
|
+
* The smallest amount of storage the cache keeps available.
|
|
210
|
+
*/
|
|
211
|
+
minimum?: Input<`${number} GB`>;
|
|
212
|
+
/**
|
|
213
|
+
* The most data the cache can store.
|
|
214
|
+
*/
|
|
215
|
+
maximum?: Input<`${number} GB`>;
|
|
216
|
+
}>;
|
|
217
|
+
/**
|
|
218
|
+
* The ElastiCache Processing Units (ECPU) the cache can use per second. A `minimum` and
|
|
219
|
+
* a `maximum` have to be at least `1`, and the `minimum` can't be above the `maximum`.
|
|
220
|
+
*
|
|
221
|
+
* @default `{ maximum: 5000 }`
|
|
222
|
+
* @example
|
|
223
|
+
* ```js
|
|
224
|
+
* {
|
|
225
|
+
* ecpuPerSecond: { minimum: 1000, maximum: 50000 }
|
|
226
|
+
* }
|
|
227
|
+
* ```
|
|
228
|
+
*/
|
|
229
|
+
ecpuPerSecond?: Input<{
|
|
230
|
+
/**
|
|
231
|
+
* The smallest number of ECPUs per second the cache keeps available.
|
|
232
|
+
*/
|
|
233
|
+
minimum?: Input<number>;
|
|
234
|
+
/**
|
|
235
|
+
* The most ECPUs per second the cache can use.
|
|
236
|
+
*/
|
|
237
|
+
maximum?: Input<number>;
|
|
238
|
+
}>;
|
|
239
|
+
};
|
|
240
|
+
/**
|
|
241
|
+
* The VPC to use for the Redis instance.
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* Create a VPC component.
|
|
245
|
+
*
|
|
246
|
+
* ```js
|
|
247
|
+
* const myVpc = new sst.aws.Vpc("MyVpc");
|
|
248
|
+
* ```
|
|
249
|
+
*
|
|
250
|
+
* And pass it in.
|
|
251
|
+
*
|
|
252
|
+
* ```js
|
|
253
|
+
* {
|
|
254
|
+
* vpc: myVpc
|
|
255
|
+
* }
|
|
256
|
+
* ```
|
|
257
|
+
*
|
|
258
|
+
* Or pass in a custom VPC configuration.
|
|
259
|
+
*
|
|
260
|
+
* ```js
|
|
261
|
+
* {
|
|
262
|
+
* vpc: {
|
|
263
|
+
* subnets: ["subnet-0db7376a7ad4db5fd ", "subnet-06fc7ee8319b2c0ce"],
|
|
264
|
+
* securityGroups: ["sg-0399348378a4c256c"]
|
|
265
|
+
* }
|
|
266
|
+
* }
|
|
267
|
+
* ```
|
|
268
|
+
*/
|
|
269
|
+
vpc:
|
|
270
|
+
| Vpc
|
|
271
|
+
| Input<{
|
|
272
|
+
/**
|
|
273
|
+
* A list of subnet IDs in the VPC to deploy the Redis instance in.
|
|
274
|
+
*/
|
|
275
|
+
subnets: Input<Input<string>[]>;
|
|
276
|
+
/**
|
|
277
|
+
* A list of VPC security group IDs.
|
|
278
|
+
*/
|
|
279
|
+
securityGroups: Input<Input<string>[]>;
|
|
280
|
+
}>;
|
|
281
|
+
/**
|
|
282
|
+
* Configure how this component works in `sst dev`.
|
|
283
|
+
*
|
|
284
|
+
* By default, your Redis instance is deployed in `sst dev`. But if you want to instead
|
|
285
|
+
* connect to a locally running Redis server, you can configure the `dev` prop.
|
|
286
|
+
*
|
|
287
|
+
* :::note
|
|
288
|
+
* By default, this creates a new Redis ElastiCache instance even in `sst dev`.
|
|
289
|
+
* :::
|
|
290
|
+
*
|
|
291
|
+
* This will skip deploying a Redis ElastiCache instance and link to the locally running
|
|
292
|
+
* Redis server instead.
|
|
293
|
+
*
|
|
294
|
+
* @example
|
|
295
|
+
*
|
|
296
|
+
* Setting the `dev` prop also means that any linked resources will connect to the right
|
|
297
|
+
* Redis instance both in `sst dev` and `sst deploy`.
|
|
298
|
+
*
|
|
299
|
+
* ```ts
|
|
300
|
+
* {
|
|
301
|
+
* dev: {
|
|
302
|
+
* host: "localhost",
|
|
303
|
+
* port: 6379
|
|
304
|
+
* }
|
|
305
|
+
* }
|
|
306
|
+
* ```
|
|
307
|
+
*/
|
|
308
|
+
dev?: {
|
|
309
|
+
/**
|
|
310
|
+
* The host of the local Redis server to connect to when running in dev.
|
|
311
|
+
* @default `"localhost"`
|
|
312
|
+
*/
|
|
313
|
+
host?: Input<string>;
|
|
314
|
+
/**
|
|
315
|
+
* The port of the local Redis server when running in dev.
|
|
316
|
+
* @default `6379`
|
|
317
|
+
*/
|
|
318
|
+
port?: Input<number>;
|
|
319
|
+
/**
|
|
320
|
+
* The username of the local Redis server to connect to when running in dev.
|
|
321
|
+
* @default `"default"`
|
|
322
|
+
*/
|
|
323
|
+
username?: Input<string>;
|
|
324
|
+
/**
|
|
325
|
+
* The password of the local Redis server to connect to when running in dev.
|
|
326
|
+
* @default No password
|
|
327
|
+
*/
|
|
328
|
+
password?: Input<string>;
|
|
329
|
+
};
|
|
330
|
+
/**
|
|
331
|
+
* [Transform](/docs/components#transform) how this component creates its underlying
|
|
332
|
+
* resources.
|
|
333
|
+
*/
|
|
334
|
+
transform?: {
|
|
335
|
+
/**
|
|
336
|
+
* Transform the Redis subnet group.
|
|
337
|
+
*/
|
|
338
|
+
subnetGroup?: Transform<elasticache.SubnetGroupArgs>;
|
|
339
|
+
/**
|
|
340
|
+
* Transform the Redis parameter group.
|
|
341
|
+
*/
|
|
342
|
+
parameterGroup?: Transform<elasticache.ParameterGroupArgs>;
|
|
343
|
+
/**
|
|
344
|
+
* Transform the Redis cluster.
|
|
345
|
+
*/
|
|
346
|
+
cluster?: Transform<elasticache.ReplicationGroupArgs>;
|
|
347
|
+
/**
|
|
348
|
+
* Transform the Redis serverless cache.
|
|
349
|
+
*/
|
|
350
|
+
serverlessCache?: Transform<elasticache.ServerlessCacheArgs>;
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
interface RedisRef {
|
|
355
|
+
ref: boolean;
|
|
356
|
+
clusterId: Input<string>;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* The `Redis` component lets you add a Redis cluster to your app using
|
|
361
|
+
* [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/WhatIs.html).
|
|
362
|
+
*
|
|
363
|
+
* @example
|
|
364
|
+
*
|
|
365
|
+
* #### Create the cluster
|
|
366
|
+
*
|
|
367
|
+
* ```js title="sst.config.ts"
|
|
368
|
+
* const vpc = new sst.aws.Vpc("MyVpc");
|
|
369
|
+
* const redis = new sst.aws.Redis("MyRedis", { vpc });
|
|
370
|
+
* ```
|
|
371
|
+
*
|
|
372
|
+
* #### Create a serverless Redis
|
|
373
|
+
*
|
|
374
|
+
* You can also create a serverless Redis instance that automatically scales based on usage.
|
|
375
|
+
* Check out the [serverless example](/docs/examples/#aws-redis-serverless). It connects with the same
|
|
376
|
+
* `username` and `password` as a provisioned Redis.
|
|
377
|
+
*
|
|
378
|
+
* ```js title="sst.config.ts"
|
|
379
|
+
* const vpc = new sst.aws.Vpc("MyVpc");
|
|
380
|
+
* const redis = new sst.aws.Redis("MyRedis", {
|
|
381
|
+
* vpc,
|
|
382
|
+
* serverless: true
|
|
383
|
+
* });
|
|
384
|
+
* ```
|
|
385
|
+
*
|
|
386
|
+
* Configure serverless limits.
|
|
387
|
+
*
|
|
388
|
+
* ```js title="sst.config.ts"
|
|
389
|
+
* const redis = new sst.aws.Redis("MyRedis", {
|
|
390
|
+
* vpc,
|
|
391
|
+
* serverless: {
|
|
392
|
+
* storage: { maximum: "100 GB" },
|
|
393
|
+
* ecpuPerSecond: { maximum: 50000 }
|
|
394
|
+
* }
|
|
395
|
+
* });
|
|
396
|
+
* ```
|
|
397
|
+
*
|
|
398
|
+
* #### Link to a resource
|
|
399
|
+
*
|
|
400
|
+
* You can link your cluster to other resources, like a function or your Next.js app.
|
|
401
|
+
*
|
|
402
|
+
* ```ts title="sst.config.ts"
|
|
403
|
+
* new sst.aws.Nextjs("MyWeb", {
|
|
404
|
+
* link: [redis],
|
|
405
|
+
* vpc
|
|
406
|
+
* });
|
|
407
|
+
* ```
|
|
408
|
+
*
|
|
409
|
+
* Once linked, you can connect to it from your function code.
|
|
410
|
+
*
|
|
411
|
+
* ```ts title="app/page.tsx" {1,6,7,12,13}
|
|
412
|
+
* import { Resource } from "sst";
|
|
413
|
+
* import { Cluster } from "ioredis";
|
|
414
|
+
*
|
|
415
|
+
* const client = new Cluster(
|
|
416
|
+
* [{
|
|
417
|
+
* host: Resource.MyRedis.host,
|
|
418
|
+
* port: Resource.MyRedis.port
|
|
419
|
+
* }],
|
|
420
|
+
* {
|
|
421
|
+
* redisOptions: {
|
|
422
|
+
* tls: { checkServerIdentity: () => undefined },
|
|
423
|
+
* username: Resource.MyRedis.username,
|
|
424
|
+
* password: Resource.MyRedis.password
|
|
425
|
+
* }
|
|
426
|
+
* }
|
|
427
|
+
* );
|
|
428
|
+
* ```
|
|
429
|
+
*
|
|
430
|
+
* #### Running locally
|
|
431
|
+
*
|
|
432
|
+
* By default, your Redis cluster is deployed in `sst dev`. But let's say you are running Redis
|
|
433
|
+
* locally.
|
|
434
|
+
*
|
|
435
|
+
* ```bash
|
|
436
|
+
* docker run \
|
|
437
|
+
* --rm \
|
|
438
|
+
* -p 6379:6379 \
|
|
439
|
+
* -v $(pwd)/.sst/storage/redis:/data \
|
|
440
|
+
* redis:latest
|
|
441
|
+
* ```
|
|
442
|
+
*
|
|
443
|
+
* You can connect to it in `sst dev` by configuring the `dev` prop.
|
|
444
|
+
*
|
|
445
|
+
* ```ts title="sst.config.ts" {3-6}
|
|
446
|
+
* const redis = new sst.aws.Redis("MyRedis", {
|
|
447
|
+
* vpc,
|
|
448
|
+
* dev: {
|
|
449
|
+
* host: "localhost",
|
|
450
|
+
* port: 6379
|
|
451
|
+
* }
|
|
452
|
+
* });
|
|
453
|
+
* ```
|
|
454
|
+
*
|
|
455
|
+
* This will skip deploying a Redis ElastiCache cluster and link to the locally running Redis
|
|
456
|
+
* server instead. [Check out the full example](/docs/examples/#aws-redis-local).
|
|
457
|
+
*
|
|
458
|
+
* ---
|
|
459
|
+
*
|
|
460
|
+
* ### Cost
|
|
461
|
+
*
|
|
462
|
+
* By default this component uses _On-demand nodes_ with a single `cache.t4g.micro` instance.
|
|
463
|
+
*
|
|
464
|
+
* The default `redis` engine costs $0.016 per hour. That works out to $0.016 x 24 x 30 or **$12 per month**.
|
|
465
|
+
*
|
|
466
|
+
* If the `valkey` engine is used, the cost is $0.0128 per hour. That works out to $0.0128 x 24 x 30 or **$9 per month**.
|
|
467
|
+
*
|
|
468
|
+
* Adjust this for the `instance` type and number of `nodes` you are using.
|
|
469
|
+
*
|
|
470
|
+
* With `serverless`, you pay for the data stored and the ECPUs used instead. A serverless cache
|
|
471
|
+
* is billed for at least 1 GB of storage, even when idle, and setting a `minimum` raises that floor.
|
|
472
|
+
* The `maximum` limits cap what it can cost. Check out the
|
|
473
|
+
* [ElastiCache Serverless pricing](https://aws.amazon.com/elasticache/pricing/).
|
|
474
|
+
*
|
|
475
|
+
* The above are rough estimates for _us-east-1_, check out the
|
|
476
|
+
* [ElastiCache pricing](https://aws.amazon.com/elasticache/pricing/) for more details.
|
|
477
|
+
*/
|
|
478
|
+
export class Redis extends Component implements Link.Linkable {
|
|
479
|
+
private cluster?: Output<elasticache.ReplicationGroup>;
|
|
480
|
+
private serverlessCache?: elasticache.ServerlessCache;
|
|
481
|
+
private _authToken?: Output<string>;
|
|
482
|
+
private dev?: {
|
|
483
|
+
enabled: boolean;
|
|
484
|
+
host: Output<string>;
|
|
485
|
+
port: Output<number>;
|
|
486
|
+
username: Output<string>;
|
|
487
|
+
password?: Output<string>;
|
|
488
|
+
};
|
|
489
|
+
public static v1 = RedisV1;
|
|
490
|
+
|
|
491
|
+
constructor(name: string, args: RedisArgs, opts?: ComponentResourceOptions) {
|
|
492
|
+
super(__pulumiType, name, args, opts);
|
|
493
|
+
const _version = 2;
|
|
494
|
+
const self = this;
|
|
495
|
+
|
|
496
|
+
if (args && "ref" in args) {
|
|
497
|
+
const ref = reference();
|
|
498
|
+
this.cluster = output(ref.cluster);
|
|
499
|
+
this._authToken = ref.authToken;
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
registerVersion();
|
|
504
|
+
const engine = output(args.engine).apply((v) => v ?? "redis");
|
|
505
|
+
const version = all([engine, args.version]).apply(
|
|
506
|
+
([engine, v]) => v ?? (engine === "redis" ? "7.1" : "7.2"),
|
|
507
|
+
);
|
|
508
|
+
|
|
509
|
+
const dev = registerDev();
|
|
510
|
+
if (dev?.enabled) {
|
|
511
|
+
this.dev = dev;
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
const vpc = normalizeVpc();
|
|
516
|
+
const serverless = normalizeServerless();
|
|
517
|
+
if (serverless) {
|
|
518
|
+
const auth = serverless.password ? createServerlessAuth() : undefined;
|
|
519
|
+
this._authToken = auth?.password;
|
|
520
|
+
this.serverlessCache = createServerlessCache(serverless, auth?.userGroup);
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
const instance = output(args.instance).apply((v) => v ?? "t4g.micro");
|
|
524
|
+
const argsCluster = normalizeCluster();
|
|
525
|
+
|
|
526
|
+
const { authToken, secret } = createAuthToken();
|
|
527
|
+
this._authToken = authToken;
|
|
528
|
+
|
|
529
|
+
const subnetGroup = createSubnetGroup();
|
|
530
|
+
const parameterGroup = createParameterGroup();
|
|
531
|
+
const cluster = createCluster();
|
|
532
|
+
|
|
533
|
+
this.cluster = cluster;
|
|
534
|
+
|
|
535
|
+
function reference() {
|
|
536
|
+
const ref = args as unknown as RedisRef;
|
|
537
|
+
const cluster = elasticache.ReplicationGroup.get(
|
|
538
|
+
`${name}Cluster`,
|
|
539
|
+
ref.clusterId,
|
|
540
|
+
undefined,
|
|
541
|
+
{ parent: self },
|
|
542
|
+
);
|
|
543
|
+
|
|
544
|
+
const input = cluster.tagsAll.apply((tags) => {
|
|
545
|
+
registerVersion(
|
|
546
|
+
tags?.["sst:component-version"]
|
|
547
|
+
? parseInt(tags["sst:component-version"])
|
|
548
|
+
: undefined,
|
|
549
|
+
);
|
|
550
|
+
|
|
551
|
+
if (!tags?.["sst:ref:secret"])
|
|
552
|
+
throw new VisibleError(
|
|
553
|
+
`Failed to lookup secret for Redis cluster "${name}".`,
|
|
554
|
+
);
|
|
555
|
+
|
|
556
|
+
return {
|
|
557
|
+
secretRef: tags?.["sst:ref:secret"],
|
|
558
|
+
};
|
|
559
|
+
});
|
|
560
|
+
|
|
561
|
+
const secret = secretsmanager.getSecretVersionOutput(
|
|
562
|
+
{ secretId: input.secretRef },
|
|
563
|
+
{ parent: self },
|
|
564
|
+
);
|
|
565
|
+
const authToken = secret.secretString.apply((v) => {
|
|
566
|
+
return JSON.parse(v).authToken as string;
|
|
567
|
+
});
|
|
568
|
+
|
|
569
|
+
return { cluster, authToken };
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
function registerVersion(overrideVersion?: number) {
|
|
573
|
+
const oldVersion = overrideVersion ?? $cli.state.version[name];
|
|
574
|
+
self.registerVersion({
|
|
575
|
+
new: _version,
|
|
576
|
+
old: oldVersion,
|
|
577
|
+
message: [
|
|
578
|
+
`There is a new version of "Redis" that has breaking changes.`,
|
|
579
|
+
``,
|
|
580
|
+
`To continue using the previous version, rename "Redis" to "Redis.v${oldVersion}".`,
|
|
581
|
+
`Or recreate this component to update - https://sst-community.github.io/sst/docs/components/#versioning`,
|
|
582
|
+
].join("\n"),
|
|
583
|
+
});
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
function registerDev() {
|
|
587
|
+
if (!args.dev) return undefined;
|
|
588
|
+
|
|
589
|
+
const dev = {
|
|
590
|
+
enabled: $dev,
|
|
591
|
+
host: output(args.dev.host ?? "localhost"),
|
|
592
|
+
port: output(args.dev.port ?? 6379),
|
|
593
|
+
username: output(args.dev.username ?? "default"),
|
|
594
|
+
password: args.dev.password ? output(args.dev.password) : undefined,
|
|
595
|
+
};
|
|
596
|
+
|
|
597
|
+
new DevCommand(`${name}Dev`, {
|
|
598
|
+
dev: {
|
|
599
|
+
title: name,
|
|
600
|
+
autostart: true,
|
|
601
|
+
command: `sst print-and-not-quit`,
|
|
602
|
+
},
|
|
603
|
+
environment: {
|
|
604
|
+
SST_DEV_COMMAND_MESSAGE: interpolate`Make sure your local Redis server is using:
|
|
605
|
+
|
|
606
|
+
username: "${dev.username}"
|
|
607
|
+
password: "${dev.password ?? "\x1b[38;5;8m[no password]\x1b[0m"}"
|
|
608
|
+
|
|
609
|
+
Listening on "${dev.host}:${dev.port}"...`,
|
|
610
|
+
},
|
|
611
|
+
});
|
|
612
|
+
|
|
613
|
+
return dev;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
function normalizeVpc() {
|
|
617
|
+
// "vpc" is a Vpc component
|
|
618
|
+
if (args.vpc instanceof Vpc) {
|
|
619
|
+
return output({
|
|
620
|
+
subnets: args.vpc.privateSubnets,
|
|
621
|
+
securityGroups: args.vpc.securityGroups,
|
|
622
|
+
});
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
// "vpc" is object
|
|
626
|
+
return output(args.vpc);
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
function normalizeCluster() {
|
|
630
|
+
return all([args.cluster, args.nodes]).apply(([v, nodes]) => {
|
|
631
|
+
if (v === false) return undefined;
|
|
632
|
+
if (v === true) return { nodes: 1 };
|
|
633
|
+
if (v === undefined) {
|
|
634
|
+
if (nodes) return { nodes };
|
|
635
|
+
return { nodes: 1 };
|
|
636
|
+
}
|
|
637
|
+
return v;
|
|
638
|
+
});
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
function normalizeServerless() {
|
|
642
|
+
const v = args.serverless;
|
|
643
|
+
if (!v) return undefined;
|
|
644
|
+
const options = v === true ? {} : v;
|
|
645
|
+
return {
|
|
646
|
+
password: options.password ?? true,
|
|
647
|
+
// The limits can be outputs, so flatten them before reading any value
|
|
648
|
+
storage: output(options.storage)
|
|
649
|
+
.apply((v) => all([v?.minimum, v?.maximum]))
|
|
650
|
+
.apply(([min, max]) => {
|
|
651
|
+
const minimum = min ? Math.ceil(toGBs(min)) : undefined;
|
|
652
|
+
const maximum = max ? Math.ceil(toGBs(max)) : 10;
|
|
653
|
+
checkRange(name, "storage", "GB", minimum, maximum, !max);
|
|
654
|
+
return { minimum, maximum };
|
|
655
|
+
}),
|
|
656
|
+
ecpuPerSecond: output(options.ecpuPerSecond)
|
|
657
|
+
.apply((v) => all([v?.minimum, v?.maximum]))
|
|
658
|
+
.apply(([min, max]) => {
|
|
659
|
+
const minimum = min;
|
|
660
|
+
const maximum = max ?? 5000;
|
|
661
|
+
checkRange(name, "ecpuPerSecond", "", minimum, maximum, max === undefined);
|
|
662
|
+
return { minimum, maximum };
|
|
663
|
+
}),
|
|
664
|
+
};
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
function checkRange(
|
|
668
|
+
name: string,
|
|
669
|
+
key: string,
|
|
670
|
+
unit: string,
|
|
671
|
+
minimum: number | undefined,
|
|
672
|
+
maximum: number,
|
|
673
|
+
maximumIsDefault: boolean,
|
|
674
|
+
) {
|
|
675
|
+
const suffix = unit ? ` ${unit}` : "";
|
|
676
|
+
for (const [limit, value] of [
|
|
677
|
+
["minimum", minimum],
|
|
678
|
+
["maximum", maximum],
|
|
679
|
+
] as const) {
|
|
680
|
+
if (value !== undefined && value < 1)
|
|
681
|
+
throw new VisibleError(
|
|
682
|
+
`In the Redis component "${name}", \`serverless.${key}.${limit}\` has to be at least 1${suffix}.`,
|
|
683
|
+
);
|
|
684
|
+
}
|
|
685
|
+
if (minimum !== undefined && minimum > maximum)
|
|
686
|
+
throw new VisibleError(
|
|
687
|
+
`In the Redis component "${name}", \`serverless.${key}.minimum\` (${minimum}${suffix}) is above \`serverless.${key}.maximum\` (${maximum}${suffix}${maximumIsDefault ? ", the default" : ""}). Set a \`maximum\` that is at least the \`minimum\`.`,
|
|
688
|
+
);
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
function createAuthToken() {
|
|
692
|
+
const authToken = new RandomPassword(
|
|
693
|
+
`${name}AuthToken`,
|
|
694
|
+
{
|
|
695
|
+
length: 32,
|
|
696
|
+
special: true,
|
|
697
|
+
overrideSpecial: "!&#$^<>-",
|
|
698
|
+
},
|
|
699
|
+
{ parent: self },
|
|
700
|
+
).result;
|
|
701
|
+
|
|
702
|
+
const secret = new secretsmanager.Secret(
|
|
703
|
+
`${name}ProxySecret`,
|
|
704
|
+
{
|
|
705
|
+
recoveryWindowInDays: 0,
|
|
706
|
+
},
|
|
707
|
+
{ parent: self },
|
|
708
|
+
);
|
|
709
|
+
|
|
710
|
+
new secretsmanager.SecretVersion(
|
|
711
|
+
`${name}ProxySecretVersion`,
|
|
712
|
+
{
|
|
713
|
+
secretId: secret.id,
|
|
714
|
+
secretString: jsonStringify({ authToken }),
|
|
715
|
+
},
|
|
716
|
+
{ parent: self },
|
|
717
|
+
);
|
|
718
|
+
|
|
719
|
+
return { secret, authToken };
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
function createSubnetGroup() {
|
|
723
|
+
return new elasticache.SubnetGroup(
|
|
724
|
+
...transform(
|
|
725
|
+
args.transform?.subnetGroup,
|
|
726
|
+
`${name}SubnetGroup`,
|
|
727
|
+
{
|
|
728
|
+
description: "Managed by SST",
|
|
729
|
+
subnetIds: vpc.subnets,
|
|
730
|
+
},
|
|
731
|
+
{ parent: self },
|
|
732
|
+
),
|
|
733
|
+
);
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
function createParameterGroup() {
|
|
737
|
+
return new elasticache.ParameterGroup(
|
|
738
|
+
...transform(
|
|
739
|
+
args.transform?.parameterGroup,
|
|
740
|
+
`${name}ParameterGroup`,
|
|
741
|
+
{
|
|
742
|
+
description: "Managed by SST",
|
|
743
|
+
family: all([engine, version]).apply(([engine, version]) => {
|
|
744
|
+
const majorVersion = version.split(".")[0];
|
|
745
|
+
const defaultFamily = `${engine}${majorVersion}`;
|
|
746
|
+
return (
|
|
747
|
+
{
|
|
748
|
+
redis4: "redis4.0",
|
|
749
|
+
redis5: "redis5.0",
|
|
750
|
+
redis6: "redis6.x",
|
|
751
|
+
}[defaultFamily] ?? defaultFamily
|
|
752
|
+
);
|
|
753
|
+
}),
|
|
754
|
+
parameters: all([args.parameters ?? {}, argsCluster]).apply(
|
|
755
|
+
([parameters, argsCluster]) => [
|
|
756
|
+
{
|
|
757
|
+
name: "cluster-enabled",
|
|
758
|
+
value: argsCluster ? "yes" : "no",
|
|
759
|
+
},
|
|
760
|
+
...Object.entries(parameters).map(([name, value]) => ({
|
|
761
|
+
name,
|
|
762
|
+
value,
|
|
763
|
+
})),
|
|
764
|
+
],
|
|
765
|
+
),
|
|
766
|
+
},
|
|
767
|
+
{
|
|
768
|
+
parent: self,
|
|
769
|
+
// Necessary for the parameter group to be deleted AFTER upgrading the instance.
|
|
770
|
+
// This is either a Pulumi bug or an undocumented feature.
|
|
771
|
+
deleteBeforeReplace: false,
|
|
772
|
+
},
|
|
773
|
+
),
|
|
774
|
+
);
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
function createCluster() {
|
|
778
|
+
return argsCluster.apply(
|
|
779
|
+
(argsCluster) =>
|
|
780
|
+
new elasticache.ReplicationGroup(
|
|
781
|
+
...transform(
|
|
782
|
+
args.transform?.cluster,
|
|
783
|
+
`${name}Cluster`,
|
|
784
|
+
{
|
|
785
|
+
description: "Managed by SST",
|
|
786
|
+
engine,
|
|
787
|
+
engineVersion: version,
|
|
788
|
+
nodeType: interpolate`cache.${instance}`,
|
|
789
|
+
dataTieringEnabled: instance.apply((v) =>
|
|
790
|
+
v.startsWith("r6gd."),
|
|
791
|
+
),
|
|
792
|
+
port: 6379,
|
|
793
|
+
...(argsCluster
|
|
794
|
+
? {
|
|
795
|
+
clusterMode: "enabled",
|
|
796
|
+
numNodeGroups: argsCluster.nodes,
|
|
797
|
+
replicasPerNodeGroup: 0,
|
|
798
|
+
automaticFailoverEnabled: true,
|
|
799
|
+
}
|
|
800
|
+
: {
|
|
801
|
+
clusterMode: "disabled",
|
|
802
|
+
}),
|
|
803
|
+
multiAzEnabled: false,
|
|
804
|
+
applyImmediately: true,
|
|
805
|
+
autoMinorVersionUpgrade: false,
|
|
806
|
+
atRestEncryptionEnabled: true,
|
|
807
|
+
transitEncryptionEnabled: true,
|
|
808
|
+
transitEncryptionMode: "required",
|
|
809
|
+
authTokenUpdateStrategy: "ROTATE",
|
|
810
|
+
authToken,
|
|
811
|
+
subnetGroupName: subnetGroup.name,
|
|
812
|
+
parameterGroupName: parameterGroup.name,
|
|
813
|
+
securityGroupIds: vpc.securityGroups,
|
|
814
|
+
tags: {
|
|
815
|
+
"sst:component-version": _version.toString(),
|
|
816
|
+
"sst:ref:secret": secret.id,
|
|
817
|
+
},
|
|
818
|
+
},
|
|
819
|
+
{ parent: self },
|
|
820
|
+
),
|
|
821
|
+
),
|
|
822
|
+
);
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
function createServerlessAuth() {
|
|
826
|
+
const password = new RandomPassword(
|
|
827
|
+
`${name}AuthToken`,
|
|
828
|
+
{
|
|
829
|
+
length: 32,
|
|
830
|
+
special: true,
|
|
831
|
+
overrideSpecial: "!&#$^<>-",
|
|
832
|
+
},
|
|
833
|
+
{ parent: self },
|
|
834
|
+
).result;
|
|
835
|
+
|
|
836
|
+
// A serverless cache takes its passwords from a user group. The group needs
|
|
837
|
+
// a user named "default", this one has the password.
|
|
838
|
+
const user = new elasticache.User(
|
|
839
|
+
`${name}User`,
|
|
840
|
+
{
|
|
841
|
+
// the id is named by SST, an empty string leaves it to the naming rule
|
|
842
|
+
userId: "",
|
|
843
|
+
userName: "default",
|
|
844
|
+
engine,
|
|
845
|
+
accessString: "on ~* +@all",
|
|
846
|
+
authenticationMode: {
|
|
847
|
+
type: "password",
|
|
848
|
+
passwords: [password],
|
|
849
|
+
},
|
|
850
|
+
},
|
|
851
|
+
{ parent: self },
|
|
852
|
+
);
|
|
853
|
+
const userGroup = new elasticache.UserGroup(
|
|
854
|
+
`${name}UserGroup`,
|
|
855
|
+
{
|
|
856
|
+
userGroupId: "",
|
|
857
|
+
engine,
|
|
858
|
+
userIds: [user.userId],
|
|
859
|
+
},
|
|
860
|
+
{ parent: self },
|
|
861
|
+
);
|
|
862
|
+
|
|
863
|
+
return { password, userGroup };
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
function createServerlessCache(
|
|
867
|
+
serverless: NonNullable<ReturnType<typeof normalizeServerless>>,
|
|
868
|
+
userGroup: elasticache.UserGroup | undefined,
|
|
869
|
+
) {
|
|
870
|
+
return new elasticache.ServerlessCache(
|
|
871
|
+
...transform(
|
|
872
|
+
args.transform?.serverlessCache,
|
|
873
|
+
`${name}ServerlessCache`,
|
|
874
|
+
{
|
|
875
|
+
description: "Managed by SST",
|
|
876
|
+
engine,
|
|
877
|
+
majorEngineVersion: version.apply((v) => {
|
|
878
|
+
const major = v.split(".")[0];
|
|
879
|
+
if (parseInt(major) < 7)
|
|
880
|
+
throw new VisibleError(
|
|
881
|
+
`In the Redis component "${name}", \`serverless\` needs version 7 or later, but \`version\` is "${v}".`,
|
|
882
|
+
);
|
|
883
|
+
return major;
|
|
884
|
+
}),
|
|
885
|
+
cacheUsageLimits: all([
|
|
886
|
+
serverless.storage,
|
|
887
|
+
serverless.ecpuPerSecond,
|
|
888
|
+
]).apply(([storage, ecpu]) => ({
|
|
889
|
+
dataStorage: {
|
|
890
|
+
minimum: storage.minimum,
|
|
891
|
+
maximum: storage.maximum,
|
|
892
|
+
unit: "GB",
|
|
893
|
+
},
|
|
894
|
+
ecpuPerSeconds: [
|
|
895
|
+
{
|
|
896
|
+
minimum: ecpu.minimum,
|
|
897
|
+
maximum: ecpu.maximum,
|
|
898
|
+
},
|
|
899
|
+
],
|
|
900
|
+
})),
|
|
901
|
+
securityGroupIds: vpc.securityGroups,
|
|
902
|
+
subnetIds: vpc.subnets,
|
|
903
|
+
userGroupId: userGroup?.userGroupId,
|
|
904
|
+
tags: {
|
|
905
|
+
"sst:component-version": _version.toString(),
|
|
906
|
+
},
|
|
907
|
+
},
|
|
908
|
+
{ parent: self },
|
|
909
|
+
),
|
|
910
|
+
);
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
/**
|
|
915
|
+
* The ID of the Redis cluster, or of the serverless cache when `serverless` is set.
|
|
916
|
+
* `Redis.get` only works with the ID of a cluster.
|
|
917
|
+
*/
|
|
918
|
+
public get clusterId() {
|
|
919
|
+
if (this.dev) return output("placeholder");
|
|
920
|
+
if (this.serverlessCache) return this.serverlessCache.id;
|
|
921
|
+
return this.cluster!.id;
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
/**
|
|
925
|
+
* The username to connect to the Redis cluster.
|
|
926
|
+
*/
|
|
927
|
+
public get username() {
|
|
928
|
+
return this.dev ? this.dev.username : output("default");
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
/**
|
|
932
|
+
* The password to connect to the Redis cluster. This is `undefined` for a serverless cache
|
|
933
|
+
* with `password: false`.
|
|
934
|
+
*/
|
|
935
|
+
public get password(): Output<string> | undefined {
|
|
936
|
+
return this.dev ? this.dev.password ?? output("") : this._authToken;
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
/**
|
|
940
|
+
* The host to connect to the Redis cluster.
|
|
941
|
+
*/
|
|
942
|
+
public get host() {
|
|
943
|
+
if (this.dev) return this.dev.host;
|
|
944
|
+
if (this.serverlessCache) {
|
|
945
|
+
return this.serverlessCache.endpoints.apply((endpoints) => {
|
|
946
|
+
const address = endpoints?.[0]?.address;
|
|
947
|
+
if (!address)
|
|
948
|
+
throw new VisibleError(
|
|
949
|
+
"The serverless Redis cache has no endpoint address yet.",
|
|
950
|
+
);
|
|
951
|
+
return address;
|
|
952
|
+
});
|
|
953
|
+
}
|
|
954
|
+
return this.cluster!.clusterEnabled.apply((enabled) =>
|
|
955
|
+
enabled
|
|
956
|
+
? this.cluster!.configurationEndpointAddress
|
|
957
|
+
: this.cluster!.primaryEndpointAddress,
|
|
958
|
+
);
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
/**
|
|
962
|
+
* The port to connect to the Redis cluster.
|
|
963
|
+
*/
|
|
964
|
+
public get port() {
|
|
965
|
+
if (this.dev) return this.dev.port;
|
|
966
|
+
if (this.serverlessCache) {
|
|
967
|
+
return this.serverlessCache.endpoints.apply(
|
|
968
|
+
(endpoints) => endpoints?.[0]?.port ?? 6379,
|
|
969
|
+
);
|
|
970
|
+
}
|
|
971
|
+
return this.cluster!.port.apply((v) => v!);
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
/**
|
|
975
|
+
* The underlying [resources](/docs/components/#nodes) this component creates.
|
|
976
|
+
*/
|
|
977
|
+
public get nodes() {
|
|
978
|
+
const _this = this;
|
|
979
|
+
return {
|
|
980
|
+
/**
|
|
981
|
+
* The ElastiCache Redis cluster. This throws when `serverless` is set, use
|
|
982
|
+
* `serverlessCache` instead.
|
|
983
|
+
*/
|
|
984
|
+
get cluster() {
|
|
985
|
+
if (_this.dev)
|
|
986
|
+
throw new VisibleError("Cannot access `nodes.cluster` in dev mode.");
|
|
987
|
+
if (_this.serverlessCache)
|
|
988
|
+
throw new VisibleError(
|
|
989
|
+
"Cannot access `nodes.cluster` when `serverless` is set, use `nodes.serverlessCache`.",
|
|
990
|
+
);
|
|
991
|
+
return _this.cluster!;
|
|
992
|
+
},
|
|
993
|
+
/**
|
|
994
|
+
* The ElastiCache Redis serverless cache. This throws when `serverless` is not set, use
|
|
995
|
+
* `cluster` instead.
|
|
996
|
+
*/
|
|
997
|
+
get serverlessCache() {
|
|
998
|
+
if (_this.dev)
|
|
999
|
+
throw new VisibleError(
|
|
1000
|
+
"Cannot access `nodes.serverlessCache` in dev mode.",
|
|
1001
|
+
);
|
|
1002
|
+
if (!_this.serverlessCache)
|
|
1003
|
+
throw new VisibleError(
|
|
1004
|
+
"Cannot access `nodes.serverlessCache` when `serverless` is not set, use `nodes.cluster`.",
|
|
1005
|
+
);
|
|
1006
|
+
return _this.serverlessCache;
|
|
1007
|
+
},
|
|
1008
|
+
};
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
/** @internal */
|
|
1012
|
+
public getSSTLink() {
|
|
1013
|
+
return {
|
|
1014
|
+
properties: {
|
|
1015
|
+
host: this.host,
|
|
1016
|
+
port: this.port,
|
|
1017
|
+
username: this.username,
|
|
1018
|
+
...(this.password ? { password: this.password } : {}),
|
|
1019
|
+
},
|
|
1020
|
+
};
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
/**
|
|
1024
|
+
* Reference an existing Redis cluster with the given cluster name. This is useful when you
|
|
1025
|
+
* create a Redis cluster in one stage and want to share it in another. It avoids having to
|
|
1026
|
+
* create a new Redis cluster in the other stage.
|
|
1027
|
+
*
|
|
1028
|
+
* :::tip
|
|
1029
|
+
* You can use the `static get` method to share Redis clusters across stages.
|
|
1030
|
+
* :::
|
|
1031
|
+
*
|
|
1032
|
+
* :::caution
|
|
1033
|
+
* This only works with a provisioned cluster. The `clusterId` of a cache created with
|
|
1034
|
+
* `serverless` can't be used here and fails with a "Failed to lookup secret" error.
|
|
1035
|
+
* :::
|
|
1036
|
+
*
|
|
1037
|
+
* @param name The name of the component.
|
|
1038
|
+
* @param clusterId The id of the existing Redis cluster.
|
|
1039
|
+
* @param opts Resource options.
|
|
1040
|
+
*
|
|
1041
|
+
* @example
|
|
1042
|
+
* Imagine you create a cluster in the `dev` stage. And in your personal stage `frank`,
|
|
1043
|
+
* instead of creating a new cluster, you want to share the same cluster from `dev`.
|
|
1044
|
+
*
|
|
1045
|
+
* ```ts title="sst.config.ts"
|
|
1046
|
+
* const redis = $app.stage === "frank"
|
|
1047
|
+
* ? sst.aws.Redis.get("MyRedis", "app-dev-myredis")
|
|
1048
|
+
* : new sst.aws.Redis("MyRedis");
|
|
1049
|
+
* ```
|
|
1050
|
+
*
|
|
1051
|
+
* Here `app-dev-myredis` is the ID of the cluster created in the `dev` stage.
|
|
1052
|
+
* You can find this by outputting the cluster ID in the `dev` stage.
|
|
1053
|
+
*
|
|
1054
|
+
* ```ts title="sst.config.ts"
|
|
1055
|
+
* return {
|
|
1056
|
+
* cluster: redis.clusterId
|
|
1057
|
+
* };
|
|
1058
|
+
* ```
|
|
1059
|
+
*/
|
|
1060
|
+
public static get(
|
|
1061
|
+
name: string,
|
|
1062
|
+
clusterId: Input<string>,
|
|
1063
|
+
opts?: ComponentResourceOptions,
|
|
1064
|
+
) {
|
|
1065
|
+
return new Redis(
|
|
1066
|
+
name,
|
|
1067
|
+
{
|
|
1068
|
+
ref: true,
|
|
1069
|
+
clusterId,
|
|
1070
|
+
} as unknown as RedisArgs,
|
|
1071
|
+
opts,
|
|
1072
|
+
);
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
const __pulumiType = "sst:aws:Redis";
|
|
1077
|
+
// @ts-expect-error
|
|
1078
|
+
Redis.__pulumiType = __pulumiType;
|