diff --git a/.github/workflows/feature-branch-only-to-main.yml b/.github/workflows/feature-branch-only-to-main.yml new file mode 100644 index 000000000..8a41d1dae --- /dev/null +++ b/.github/workflows/feature-branch-only-to-main.yml @@ -0,0 +1,28 @@ +name: "Restrict Docs PR merges" + +on: + pull_request: + types: [opened, reopened, edited] + +jobs: + validate-refs: + name: "Validate Refs" + runs-on: ubuntu-latest + steps: + - name: Validate + run: | + # We allow merging to a branch which is a feature branch for documentation. + if [[ $GITHUB_BASE_REF == aws-docs-* || $GITHUB_BASE_REF == snowflake-docs-* ]]; then + echo "Merging to a feature branch. Allowing." + exit 0 + fi + + # We allow merging to main so long as it's from a feature branch for documentation. + if [[ $GITHUB_BASE_REF == main && ($GITHUB_HEAD_REF == aws-docs-* || $GITHUB_HEAD_REF == snowflake-docs-*) ]]; then + echo "Merging feature branch to main. Allowing." + exit 0 + fi + + # All other scenarios aren't valid for merging. + echo "Please ensure all changes are merged to a feature branch. Only feature branches can be merged into main. Rejecting." + exit 1 \ No newline at end of file diff --git a/.github/workflows/update-extensions-docs.yml b/.github/workflows/update-extensions-docs.yml new file mode 100644 index 000000000..c32a49fa3 --- /dev/null +++ b/.github/workflows/update-extensions-docs.yml @@ -0,0 +1,73 @@ +name: Update LocalStack Extensions Docs + +on: + schedule: + # Run on the 1st of every month at 00:00 UTC + - cron: "0 0 1 * *" + workflow_dispatch: + inputs: + targetBranch: + description: 'Target branch to create the PR against' + required: false + type: string + default: 'main' + +env: + TARGET_BRANCH: ${{ github.event.inputs.targetBranch || 'main' }} + +jobs: + update-extensions-docs: + name: Update LocalStack Extensions Docs + runs-on: ubuntu-latest + steps: + - name: Checkout docs + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + fetch-depth: 0 + path: docs + ref: ${{ env.TARGET_BRANCH }} + + - name: Set up Python 3.11 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: "3.11" + + - name: Generate Extensions documentation + working-directory: docs + run: | + python3 scripts/generate_extensions_docs.py + env: + LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} + + - name: Check for changes + id: check-for-changes + working-directory: docs + env: + TARGET_BRANCH: ${{ env.TARGET_BRANCH }} + run: | + # Check if there are changed files + # Check against the PR branch if it exists, otherwise against the target branch + mkdir -p resources + FILE_TO_CHECK="src/content/docs/aws/tooling/extensions/official-extensions.md" + (git diff --name-only origin/extensions-docs-auto-updates "$FILE_TO_CHECK" 2>/dev/null || git diff --name-only "origin/$TARGET_BRANCH" "$FILE_TO_CHECK" 2>/dev/null) | tee resources/diff-check.log + echo "diff-count=$(cat resources/diff-check.log | wc -l)" >> $GITHUB_OUTPUT + cat resources/diff-check.log + + - name: Create PR + uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1 + if: ${{ success() && steps.check-for-changes.outputs.diff-count != '0' && steps.check-for-changes.outputs.diff-count != '' }} + with: + path: docs + title: "Update LocalStack Extensions Documentation" + body: | + Automated update of the LocalStack Official Extensions documentation. + + This PR was auto-generated by the `update-extensions-docs` workflow which runs on the 1st of every month. + + **Changes include:** + - Updated list of official and community extensions available on the marketplace + branch: "extensions-docs-auto-updates" + author: "LocalStack Bot " + committer: "LocalStack Bot " + commit-message: "update generated LocalStack Extensions docs" + token: ${{ secrets.PRO_ACCESS_TOKEN }} diff --git a/CODEOWNERS b/CODEOWNERS index be65f2ab0..96aa99b17 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -103,7 +103,7 @@ /src/content/docs/aws/services/eks.mdx @nik-localstack @pinzon @quetzalliwrites @HarshCasper # elasticache -/src/content/docs/aws/services/elasticache.mdx @thrau @giograno @silv-io @quetzalliwrites @HarshCasper +/src/content/docs/aws/services/elasticache.mdx @giograno @silv-io @quetzalliwrites @HarshCasper # elb /src/content/docs/aws/services/elb.mdx @nik-localstack @quetzalliwrites @HarshCasper @@ -132,9 +132,6 @@ # iot /src/content/docs/aws/services/iot.mdx @viren-nadkarni @quetzalliwrites @HarshCasper -# kafka -/src/content/docs/aws/services/kafka.mdx @thrau @quetzalliwrites @HarshCasper - # kinesisanalyticsv2 /src/content/docs/aws/services/kinesisanalyticsv2.mdx @viren-nadkarni @quetzalliwrites @HarshCasper @@ -202,7 +199,7 @@ /src/content/docs/aws/services/sns.mdx @bentsku @baermat @quetzalliwrites @HarshCasper # sqs -/src/content/docs/aws/services/sqs.mdx @baermat @thrau @quetzalliwrites @HarshCasper +/src/content/docs/aws/services/sqs.mdx @baermat @quetzalliwrites @HarshCasper # ssm /src/content/docs/aws/services/ssm.mdx @viren-nadkarni @quetzalliwrites @HarshCasper diff --git a/astro.config.mjs b/astro.config.mjs index 806385428..6095951a4 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -453,6 +453,10 @@ export default defineConfig({ }, ], }, + { + label: 'Credentials', + slug: 'aws/connecting/credentials', + }, ], }, { @@ -483,6 +487,10 @@ export default defineConfig({ label: 'LocalStack MCP Server', slug: 'aws/developer-tools/running-localstack/mcp-server', }, + { + label: 'LocalStack Desktop', + slug: 'aws/developer-tools/running-localstack/localstack-desktop', + }, ], }, { @@ -551,32 +559,92 @@ export default defineConfig({ ], }, { - label: 'Configuration', + label: 'CI Pipelines', + collapsed: true, + items: [{ autogenerate: { directory: '/aws/ci-pipelines' } }], + }, + { + label: 'Customization', collapsed: true, items: [ { label: 'Overview', - slug: 'aws/configuration', + slug: 'aws/customization', + }, + { + label: 'Configuration Options', + slug: 'aws/customization/configuration-options', }, { - label: 'LocalStack Web App', + label: 'Logging', + slug: 'aws/customization/logging', + }, + { + label: 'Kubernetes', collapsed: true, items: [ { autogenerate: { - directory: '/aws/configuration/web-app', + directory: '/aws/customization/kubernetes', }, }, ], }, { - label: 'Config', + label: 'Integrations', collapsed: true, items: [ { - autogenerate: { - directory: '/aws/configuration/config', - }, + label: 'Overview', + slug: 'aws/customization/integrations', + }, + { + label: 'LocalStack Extensions', + collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/customization/integrations/extensions', + }, + }, + { + label: 'Official Extensions', + link: 'https://app.localstack.cloud/extensions/library/', + }, + ], + }, + { + label: 'LocalStack SDKs', + collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/customization/integrations/localstack-sdks', + }, + }, + ], + }, + { + label: 'App Frameworks', + collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/customization/integrations/app-frameworks', + }, + }, + ], + }, + { + label: 'Testing', + collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/customization/integrations/testing', + }, + }, + ], }, ], }, @@ -586,114 +654,52 @@ export default defineConfig({ items: [ { autogenerate: { - directory: '/aws/configuration/networking', + directory: '/aws/customization/networking', }, }, ], }, { - label: 'LocalStack SDKs', + label: 'Other Installations', collapsed: true, items: [ { - autogenerate: { - directory: '/aws/configuration/localstack-sdks', - }, + label: 'Overview', + slug: 'aws/customization/other-installations', }, - ], - }, - { - label: 'Extensions', - items: [ { - autogenerate: { - directory: '/aws/configuration/extensions', - }, + label: 'Docker Images', + slug: 'aws/customization/other-installations/docker-images', }, { - label: 'Official Extensions', - link: 'https://app.localstack.cloud/extensions/library/', + label: 'Enterprise Image', + slug: 'aws/customization/other-installations/enterprise-image', }, - ], - collapsed: true, - }, - { - label: 'DNS Server', - slug: 'aws/configuration/dns-server', - }, - { - label: 'Testing Utils', - slug: 'aws/configuration/testing-utils', - }, - { - label: 'LocalStack Docker Extension', - slug: 'aws/configuration/localstack-docker-extension', - }, - { - label: 'LocalSurf', - slug: 'aws/configuration/localsurf', - }, - ], - }, - { - label: 'Integrations', - collapsed: true, - items: [ - { - label: 'Overview', - slug: 'aws/integrations', - }, - { - label: 'Continuous Integration', - collapsed: true, - items: [ { - autogenerate: { - directory: '/aws/integrations/continuous-integration', - }, + label: 'Podman', + slug: 'aws/customization/other-installations/podman', }, - ], - }, - { - label: 'Containers', - collapsed: true, - items: [ { - autogenerate: { - directory: '/aws/integrations/containers', - }, + label: 'Rancher Desktop', + slug: 'aws/customization/other-installations/rancher-desktop', }, - ], - }, - { - label: 'App Frameworks', - collapsed: true, - items: [ { - autogenerate: { - directory: '/aws/integrations/app-frameworks', - }, + label: 'DevContainers', + slug: 'aws/customization/other-installations/devcontainers', }, - ], - }, - { - label: 'Messaging', - collapsed: true, - items: [ { - autogenerate: { - directory: '/aws/integrations/messaging', - }, + label: 'LocalStack Docker Extension', + slug: 'aws/customization/other-installations/localstack-docker-extension', }, ], }, { - label: 'Testing', + label: 'Advanced Features', collapsed: true, items: [ { autogenerate: { - directory: '/aws/integrations/testing', + directory: '/aws/customization/advanced', }, }, ], @@ -701,31 +707,37 @@ export default defineConfig({ ], }, { - label: 'Enterprise', + label: 'Organizations & Admin', collapsed: true, items: [ { label: 'Overview', - slug: 'aws/enterprise', + slug: 'aws/organizations-admin', }, { - label: 'Kubernetes', - collapsed: true, - items: [ - { - autogenerate: { directory: '/aws/enterprise/kubernetes' }, - }, - ], + label: 'Accounts', + slug: 'aws/organizations-admin/accounts', + }, + { + label: 'Workspace', + slug: 'aws/organizations-admin/workspaces', + }, + { + label: 'Users and Licenses', + slug: 'aws/organizations-admin/managing-users-licenses', }, { label: 'Single Sign-On', + collapsed: true, items: [ - { autogenerate: { directory: '/aws/enterprise/sso' } }, + { + autogenerate: { directory: '/aws/organizations-admin/sso' }, + }, ], }, { - label: 'Enterprise Image', - slug: 'aws/enterprise/enterprise-image', + label: 'Stack Insights', + slug: 'aws/organizations-admin/stack-insights', }, ], }, diff --git a/public/_redirects b/public/_redirects index 2fcbfbf92..036550a0c 100644 --- a/public/_redirects +++ b/public/_redirects @@ -1,824 +1,826 @@ -/legal/third-party-software-tools/ /aws/legal/third-party-software-tools 301 -/references/coverage/coverage_elb/ /aws/services/elb 301 -/user-guide/aws/batch/ /aws/services/batch 301 -/references/coverage/coverage_scheduler/ /aws/services/scheduler 301 -/user-guide/extensions/ /aws/configuration/extensions 301 -/tutorials/s3-static-website-terraform/ /aws/tutorials/s3-static-website-terraform 301 +/legal/third-party-software-tools/ /aws/legal/third-party-software-tools/ 301 +/references/coverage/coverage_elb/ /aws/services/elb/ 301 +/user-guide/aws/batch/ /aws/services/batch/ 301 +/references/coverage/coverage_scheduler/ /aws/services/scheduler/ 301 +/user-guide/extensions/ /aws/customization/integrations/extensions/ 301 +/tutorials/s3-static-website-terraform/ /aws/tutorials/s3-static-website-terraform/ 301 /references/coverage/coverage_sso-admin/ /aws/services/sso-admin/ 301 -/references/coverage/coverage_rds-data/ /aws/services/rds 301 -/references/coverage/coverage_ec2/ /aws/services/ec2 301 -/references/licensing/ /aws/licensing 301 -/legal/ /aws/legal/third-party-software-tools 301 -/references/coverage/coverage_iotwireless/ /aws/services/iotwireless 301 -/references/coverage/coverage_mwaa/ /aws/services/mwaa 301 +/references/coverage/coverage_rds-data/ /aws/services/rds/ 301 +/references/coverage/coverage_ec2/ /aws/services/ec2/ 301 +/references/licensing/ /aws/licensing/ 301 +/legal/ /aws/legal/third-party-software-tools/ 301 +/references/coverage/coverage_iotwireless/ /aws/services/iotwireless/ 301 +/references/coverage/coverage_mwaa/ /aws/services/mwaa/ 301 /applications/amazon-rds-initialization-using-cdk-lambda-ecr-and-secrets-manager/ https://github.com/localstack-samples/sample-cdk-rds 301 -/references/coverage/coverage_pipes/ /aws/services/pipes 301 -/user-guide/state-management/persistence/ /aws/developer-tools/snapshots/persistence 301 -/references/coverage/coverage_mq/ /aws/services/mq 301 +/references/coverage/coverage_pipes/ /aws/services/pipes/ 301 +/user-guide/state-management/persistence/ /aws/developer-tools/snapshots/persistence/ 301 +/references/coverage/coverage_mq/ /aws/services/mq/ 301 /academy/localstack-101/what-is-localstack/ https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=B2EML5L3-tw&feature=youtu.be 301 -/references/coverage/coverage_xray/ /aws/services/xray 301 -/references/coverage/coverage_cognito-identity/ /aws/services/cognito-idp 301 -/user-guide/aws/ecs/ /aws/services/ecs 301 -/references/usage-tracking/ /aws/configuration/config/usage-tracking 301 -/user-guide/aws/dms/ /aws/services/dms 301 -/references/coverage/coverage_managedblockchain/ /aws/services/managedblockchain 301 +/references/coverage/coverage_xray/ /aws/services/xray/ 301 +/references/coverage/coverage_cognito-identity/ /aws/services/cognito-idp/ 301 +/user-guide/aws/ecs/ /aws/services/ecs/ 301 +/references/usage-tracking/ /aws/customization/advanced/usage-tracking/ 301 +/user-guide/aws/dms/ /aws/services/dms/ 301 +/references/coverage/coverage_managedblockchain/ /aws/services/managedblockchain/ 301 /applications/search-application-with-lambda-kinesis-firehose-elasticsearch-s3/ https://github.com/localstack-samples/sample-fuzzy-movie-search-lambda-kinesis-elasticsearch 301 -/references/regions-coverage/ /aws/configuration/config/regions-coverage/ 301 -/tutorials/elb-load-balancing/ /aws/tutorials/elb-load-balancing 301 -/references/docker-images/ /aws/configuration/config/docker-images 301 -/user-guide/aws/eks/ /aws/services/eks 301 +/references/regions-coverage/ /aws/customization/advanced/regions-coverage/ 301 +/tutorials/elb-load-balancing/ /aws/tutorials/elb-load-balancing/ 301 +/references/docker-images/ /aws/customization/other-installations/docker-images/ 301 +/user-guide/aws/eks/ /aws/services/eks/ 301 /applications/appsync-graphql-apis-for-dynamodb-and-rds-aurora-postgresql/ https://github.com/localstack-samples/sample-appsync-graphql-api 301 -/user-guide/aws/cloudfront/ /aws/services/cloudfront 301 +/user-guide/aws/cloudfront/ /aws/services/cloudfront/ 301 /applications/note-taking-application-using-aws-sdk-for-javascript/ https://github.com/localstack-samples/sample-notes-app-dynamodb-lambda-apigateway 301 -/user-guide/state-management/export-import-state/ /aws/developer-tools/snapshots/export-import-state 301 -/references/coverage/coverage_s3control/ /aws/services/s3 301 -/references/custom-tls-certificates/ /aws/developer-tools/security-testing/custom-tls-certificates 301 -/references/coverage/coverage_codecommit/ /aws/services/codecommit 301 -/user-guide/localstack-enterprise/enterprise-image/ /aws/enterprise/enterprise-image 301 -/user-guide/tools/testing-utils/ /aws/configuration/testing-utils 301 -/user-guide/aws/codedeploy/ /aws/services/codedeploy 301 -/references/coverage/coverage_serverlessrepo/ /aws/services/serverlessrepo 301 -/user-guide/aws/resource_groups/ /aws/services/resource_groups 301 -/references/coverage/coverage_glue/ /aws/services/glue 301 -/user-guide/aws/ssm/ /aws/services/ssm 301 -/references/coverage/coverage_sts/ /aws/services/sts 301 +/user-guide/state-management/export-import-state/ /aws/developer-tools/snapshots/export-import-state/ 301 +/references/coverage/coverage_s3control/ /aws/services/s3/ 301 +/references/custom-tls-certificates/ /aws/developer-tools/security-testing/custom-tls-certificates/ 301 +/references/coverage/coverage_codecommit/ /aws/services/codecommit/ 301 +/user-guide/localstack-enterprise/enterprise-image/ /aws/customization/other-installations/enterprise-image/ 301 +/user-guide/tools/testing-utils/ /aws/customization/integrations/localstack-sdks/testing-utils/ 301 +/user-guide/aws/codedeploy/ /aws/services/codedeploy/ 301 +/references/coverage/coverage_serverlessrepo/ /aws/services/serverlessrepo/ 301 +/user-guide/aws/resource_groups/ /aws/services/resource_groups/ 301 +/references/coverage/coverage_glue/ /aws/services/glue/ 301 +/user-guide/aws/ssm/ /aws/services/ssm/ 301 +/references/coverage/coverage_sts/ /aws/services/sts/ 301 /academy/localstack-101/course-overview/ https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=VLL-BI1AWcc&feature=youtu.be 301 -/user-guide/aws/iotwireless/ /aws/services/iotwireless 301 -/user-guide/integrations/sdks/python/ /aws/connecting/aws-sdks/net/python 301 -/user-guide/integrations/crossplane/ /aws/connecting/infrastructure-as-code/crossplane 301 -/references/coverage/coverage_elbv2/ /aws/services/elb 301 -/user-guide/integrations/openshift/ /aws/integrations/containers/openshift 301 -/user-guide/aws/memorydb/ /aws/services/memorydb 301 -/user-guide/integrations/devcontainers/ /aws/integrations/containers/devcontainers 301 -/references/coverage/coverage_secretsmanager/ /aws/services/secretsmanager 301 -/user-guide/ci/travis-ci/ /aws/integrations/continuous-integration/travis-ci 301 +/user-guide/aws/iotwireless/ /aws/services/iotwireless/ 301 +/user-guide/integrations/sdks/python/ /aws/connecting/aws-sdks/net/python/ 301 +/user-guide/integrations/crossplane/ /aws/connecting/infrastructure-as-code/crossplane/ 301 +/references/coverage/coverage_elbv2/ /aws/services/elb/ 301 +/user-guide/integrations/openshift/ /aws/customization/kubernetes/openshift/ 301 +/user-guide/aws/memorydb/ /aws/services/memorydb/ 301 +/user-guide/integrations/devcontainers/ /aws/customization/other-installations/devcontainers/ 301 +/references/coverage/coverage_secretsmanager/ /aws/services/secretsmanager/ 301 +/user-guide/ci/travis-ci/ /aws/ci-pipelines/travis-ci/ 301 /applications/serverless-microservices-with-amazon-api-gateway-dynamodb-sqs-and-lambda/ https://github.com/localstack-samples/sample-microservices-apigateway-lambda-dynamodb-sqs 301 -/user-guide/lambda-tools/ /aws/developer-tools/lambda-tools 301 -/user-guide/integrations/aws-cdk/ /aws/connecting/infrastructure-as-code/aws-cdk 301 -/references/podman/ /aws/configuration/config/podman 301 -/references/coverage/coverage_memorydb/ /aws/services/memorydb 301 -/user-guide/integrations/former2/ /aws/connecting/infrastructure-as-code/former2 301 -/user-guide/localstack-enterprise/k8s-operator/ /aws/enterprise/k8s-operator 301 -/user-guide/integrations/aws-cli/ /aws/connecting/aws-cli 301 -/references/coverage/coverage_kinesisanalyticsv2/ /aws/services/kinesisanalyticsv2 301 -/references/coverage/coverage_amplify/ /aws/services/amplify 301 -/user-guide/aws/events/ /aws/services/events 301 -/user-guide/aws/pipes/ /aws/services/pipes 301 -/user-guide/ci/circle-ci/ /aws/integrations/continuous-integration/circle-ci 301 -/references/network-troubleshooting/transparent-endpoint-injection/ /aws/configuration/networking/transparent-endpoint-injection 301 -/references/coverage/coverage_kafka/ /aws/services/kafka 301 -/references/coverage/coverage_servicediscovery/ /aws/services/servicediscovery 301 -/references/coverage/coverage_apigateway/ /aws/services/apigateway 301 -/tutorials/ /aws/tutorials 301 -/references/coverage/coverage_kinesis/ /aws/services/kinesis 301 -/references/coverage/coverage_autoscaling/ /aws/services/autoscaling 301 -/references/coverage/coverage_kms/ /aws/services/kms 301 +/user-guide/lambda-tools/ /aws/developer-tools/lambda-tools/ 301 +/user-guide/integrations/aws-cdk/ /aws/connecting/infrastructure-as-code/aws-cdk/ 301 +/references/podman/ /aws/customization/other-installations/podman/ 301 +/references/coverage/coverage_memorydb/ /aws/services/memorydb/ 301 +/user-guide/integrations/former2/ /aws/connecting/infrastructure-as-code/former2/ 301 +/user-guide/localstack-enterprise/k8s-operator/ /aws/customization/kubernetes/kubernetes-operator/ 301 +/user-guide/integrations/aws-cli/ /aws/connecting/aws-cli/ 301 +/references/coverage/coverage_kinesisanalyticsv2/ /aws/services/kinesisanalyticsv2/ 301 +/references/coverage/coverage_amplify/ /aws/services/amplify/ 301 +/user-guide/aws/events/ /aws/services/events/ 301 +/user-guide/aws/pipes/ /aws/services/pipes/ 301 +/user-guide/ci/circle-ci/ /aws/ci-pipelines/circleci/ 301 +/references/network-troubleshooting/transparent-endpoint-injection/ /aws/customization/networking/transparent-endpoint-injection/ 301 +/references/coverage/coverage_kafka/ /aws/services/kafka/ 301 +/references/coverage/coverage_servicediscovery/ /aws/services/servicediscovery/ 301 +/references/coverage/coverage_apigateway/ /aws/services/apigateway/ 301 +/tutorials/ /aws/tutorials/ 301 +/references/coverage/coverage_kinesis/ /aws/services/kinesis/ 301 +/references/coverage/coverage_autoscaling/ /aws/services/autoscaling/ 301 +/references/coverage/coverage_kms/ /aws/services/kms/ 301 /applications/step-up-authentication-using-amazon-cognito/ https://github.com/localstack-samples/sample-cdk-cognito-dynamodb-api-gateway 301 -/references/coverage/coverage_athena/ /aws/services/athena 301 -/user-guide/aws/mediastore/ /aws/services/mediastore 301 -/references/coverage/coverage_fis/ /aws/services/fis 301 -/user-guide/aws/logs/ /aws/services/logs 301 +/references/coverage/coverage_athena/ /aws/services/athena/ 301 +/user-guide/aws/mediastore/ /aws/services/mediastore/ 301 +/references/coverage/coverage_fis/ /aws/services/fis/ 301 +/user-guide/aws/logs/ /aws/services/logs/ 301 /academy/localstack-deployment/infra-cloudformation/ https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=K0OgQ5eq588&feature=youtu.be 301 -/user-guide/cloud-sandbox/ /aws/developer-tools/cloud-sandbox 301 -/user-guide/localstack-enterprise/ci-analytics/ /aws/enterprise/ 301 -/aws/enterprise/ci-analytics/ /aws/enterprise/ 301 -/references/changelog/ /aws/changelog 301 -/references/credentials/ /aws/configuration/config/credentials 301 -/references/coverage/coverage_elasticbeanstalk/ /aws/services/elasticbeanstalk 301 -/user-guide/web-application/instance-management/ /aws/configuration/web-app/instance-management 301 -/references/coverage/coverage_qldb/ /aws/services/qldb 301 +/user-guide/cloud-sandbox/ /aws/developer-tools/cloud-sandbox/ 301 +/user-guide/localstack-enterprise/ci-analytics/ /aws/customization/other-installations/ 301 +/aws/enterprise/ci-analytics/ /aws/customization/other-installations/ 301 +/references/changelog/ /aws/changelog/ 301 +/references/credentials/ /aws/connecting/credentials/ 301 +/references/coverage/coverage_elasticbeanstalk/ /aws/services/elasticbeanstalk/ 301 +/user-guide/web-application/instance-management/ /aws/connecting/console/instance-management/ 301 +/references/coverage/coverage_qldb/ /aws/services/qldb/ 301 /academy/localstack-deployment/iam-policy-stream/ https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=TOBLG2Z6xAM&feature=youtu.be 301 -/references/cross-account-access/ /aws/configuration/config/cross-account-access 301 -/tutorials/reproducible-machine-learning-cloud-pods/ /aws/tutorials/reproducible-machine-learning-cloud-pods 301 -/references/coverage/coverage_ecs/ /aws/services/ecs 301 -/references/coverage/coverage_acm/ /aws/services/acm 301 -/references/coverage/coverage_cloudtrail/ /aws/services/cloudtrail 301 +/references/cross-account-access/ /aws/customization/advanced/cross-account-access/ 301 +/tutorials/reproducible-machine-learning-cloud-pods/ /aws/tutorials/reproducible-machine-learning-cloud-pods/ 301 +/references/coverage/coverage_ecs/ /aws/services/ecs/ 301 +/references/coverage/coverage_acm/ /aws/services/acm/ 301 +/references/coverage/coverage_cloudtrail/ /aws/services/cloudtrail/ 301 /user-guide/aws/ /aws/services/ 301 -/references/lambda-provider-v2/ /aws/services/lambda 301 -/user-guide/web-application/ci-keys/ /aws/configuration/web-app/ci-keys 301 +/references/lambda-provider-v2/ /aws/services/lambda/ 301 +/user-guide/web-application/ci-keys/ /aws/organizations-admin/ 301 /academy/localstack-deployment/ls-integrations/ https://www.youtube.com/watch?v=YV0Zs6UNI9I&feature=youtu.be 301 -/references/coverage/coverage_appconfigdata/ /aws/services/appconfig 301 +/references/coverage/coverage_appconfigdata/ /aws/services/appconfig/ 301 /applications/serverless-image-resizer-with-aws-lambda-s3-sns-and-ses/ https://github.com/localstack-samples/sample-serverless-image-resizer-s3-lambda 301 /user-guide/security-testing/ /aws/developer-tools/security-testing/ 301 -/user-guide/aws/applicationautoscaling/ /aws/services/application-autoscaling 301 -/user-guide/aws/bedrock/ /aws/services/bedrock 301 -/user-guide/aws/sts/ /aws/services/sts 301 -/user-guide/aws/docdb/ /aws/services/docdb 301 -/user-guide/tools/transparent-endpoint-injection/ /aws/configuration/networking/transparent-endpoint-injection 301 -/user-guide/aws/account/ /aws/services/account 301 -/references/coverage/coverage_efs/ /aws/services/efs 301 -/user-guide/localstack-enterprise/ /aws/enterprise/ 301 -/getting-started/auth-token/ /aws/getting-started/auth-token 301 -/user-guide/localstack-enterprise/enterprise-support/ /aws/enterprise/enterprise-support 301 -/user-guide/aws/support/ /aws/services/support 301 -/references/coverage/coverage_resourcegroupstaggingapi/ /aws/services/resource-groups 301 -/references/external-ports/ /aws/configuration/networking/external-port-range 301 -/references/coverage/coverage_ce/ /aws/services/ce 301 -/user-guide/extensions/getting-started/ /aws/configuration/extensions/getting-started 301 +/user-guide/aws/applicationautoscaling/ /aws/services/application-autoscaling/ 301 +/user-guide/aws/bedrock/ /aws/services/bedrock/ 301 +/user-guide/aws/sts/ /aws/services/sts/ 301 +/user-guide/aws/docdb/ /aws/services/docdb/ 301 +/user-guide/tools/transparent-endpoint-injection/ /aws/customization/networking/transparent-endpoint-injection/ 301 +/user-guide/aws/account/ /aws/services/account/ 301 +/references/coverage/coverage_efs/ /aws/services/efs/ 301 +/user-guide/localstack-enterprise/ /aws/customization/other-installations/ 301 +/getting-started/auth-token/ /aws/getting-started/auth-token/ 301 +/user-guide/localstack-enterprise/enterprise-support/ /aws/customization/other-installations/ 301 +/user-guide/aws/support/ /aws/services/support/ 301 +/references/coverage/coverage_resourcegroupstaggingapi/ /aws/services/resource-groups/ 301 +/references/external-ports/ /aws/customization/networking/external-port-range/ 301 +/references/coverage/coverage_ce/ /aws/services/ce/ 301 +/user-guide/extensions/getting-started/ /aws/customization/integrations/extensions/ 301 /references/coverage/coverage_codeartifact/ /aws/services/codeartifact/ 301 /user-guide/integrations/sdks/ /aws/connecting/aws-sdks/ 301 -/user-guide/localstack-enterprise/single-sign-on/azure-ad/ /aws/enterprise/sso/azure-ad 301 -/user-guide/tools/localstack-desktop/ /aws/configuration/web-app/localstack-desktop 301 -/references/coverage/coverage_es/ /aws/services/es 301 -/user-guide/integrations/sdks/javascript/ /aws/connecting/aws-sdks/net/javascript 301 -/references/coverage/coverage_iam/ /aws/services/iam 301 -/user-guide/tools/localsurf/ /aws/configuration/localsurf 301 -/user-guide/extensions/extensions-library/ /aws/configuration/extensions/extensions-library 301 -/tutorials/ecs-ecr-container-app/ /aws/tutorials/ecs-ecr-container-app 301 -/references/coverage/coverage_elastictranscoder/ /aws/services/elastictranscoder 301 +/user-guide/localstack-enterprise/single-sign-on/azure-ad/ /aws/organizations-admin/sso/azure-ad/ 301 +/user-guide/tools/localstack-desktop/ /aws/developer-tools/running-localstack/localstack-desktop/ 301 +/references/coverage/coverage_es/ /aws/services/es/ 301 +/user-guide/integrations/sdks/javascript/ /aws/connecting/aws-sdks/net/javascript/ 301 +/references/coverage/coverage_iam/ /aws/services/iam/ 301 +/user-guide/tools/localsurf/ /aws/customization/networking/localsurf/ 301 +/user-guide/extensions/extensions-library/ /aws/customization/integrations/extensions/extensions-library/ 301 +/tutorials/ecs-ecr-container-app/ /aws/tutorials/ecs-ecr-container-app/ 301 +/references/coverage/coverage_elastictranscoder/ /aws/services/elastictranscoder/ 301 /user-guide/aws/feature-coverage/ /aws/services/ 301 -/user-guide/aws/lambda/ /aws/services/lambda 301 +/user-guide/aws/lambda/ /aws/services/lambda/ 301 /references/iam-coverage/ /aws/developer-tools/security-testing/iam-coverage/ 301 -/user-guide/aws/transfer/ /aws/services/transfer 301 -/references/coverage/coverage_batch/ /aws/services/batch 301 -/references/coverage/coverage_neptune/ /aws/services/neptune 301 +/user-guide/aws/transfer/ /aws/services/transfer/ 301 +/references/coverage/coverage_batch/ /aws/services/batch/ 301 +/references/coverage/coverage_neptune/ /aws/services/neptune/ 301 /applications/temp/ /aws/sample-apps/ 301 /applications/serverless-container-based-apis-with-amazon-ecs-api-gateway/ https://github.com/localstack-samples/sample-terraform-ecs-apigateway 301 -/user-guide/aws/s3/ /aws/services/s3 301 -/user-guide/lambda-tools/vscode-extension/ /aws/connecting/ides/vscode-extension 301 +/user-guide/aws/s3/ /aws/services/s3/ 301 +/user-guide/lambda-tools/vscode-extension/ /aws/connecting/ides/vscode-extension/ 301 /user-guide/chaos-engineering/ /aws/developer-tools/chaos-engineering/ 301 -/persistence/supported/ /aws/developer-tools/snapshots/persistence 301 -/user-guide/aws/ce/ /aws/services/ce 301 -/user-guide/aws/kinesisanalyticsv2/ /aws/services/kinesisanalyticsv2 301 -/user-guide/state-management/cloud-pods/ /aws/developer-tools/snapshots/cloud-pods 301 -/references/coverage/coverage_transcribe/ /aws/services/transcribe 301 -/references/coverage/coverage_mediastore-data/ /aws/services/mediastore 301 -/user-guide/aws/route53/ /aws/services/route53 301 -/user-guide/aws/config/ /aws/services/config 301 -/references/coverage/coverage_identitystore/ /aws/services/identitystore 301 -/references/coverage/coverage_codedeploy/ /aws/services/codedeploy 301 -/user-guide/aws/msk/ /aws/services/kafka 301 +/persistence/supported/ /aws/developer-tools/snapshots/persistence/ 301 +/user-guide/aws/ce/ /aws/services/ce/ 301 +/user-guide/aws/kinesisanalyticsv2/ /aws/services/kinesisanalyticsv2/ 301 +/user-guide/state-management/cloud-pods/ /aws/developer-tools/snapshots/cloud-pods/ 301 +/references/coverage/coverage_transcribe/ /aws/services/transcribe/ 301 +/references/coverage/coverage_mediastore-data/ /aws/services/mediastore/ 301 +/user-guide/aws/route53/ /aws/services/route53/ 301 +/user-guide/aws/config/ /aws/services/config/ 301 +/references/coverage/coverage_identitystore/ /aws/services/identitystore/ 301 +/references/coverage/coverage_codedeploy/ /aws/services/codedeploy/ 301 +/user-guide/aws/msk/ /aws/services/kafka/ 301 /user-guide/state-management/ /aws/developer-tools/snapshots/ 301 /user-guide/integrations/copilot/ /aws/connecting/infrastructure-as-code/ 301 -/user-guide/integrations/eksctl/ /aws/integrations/containers/eksctl/ 301 -/getting-started/faq/ /aws/getting-started/faq 301 -/user-guide/aws/elb/ /aws/services/elb 301 -/user-guide/integrations/kubernetes/ /aws/integrations/containers/kubernetes/ 301 -/user-guide/aws/lakeformation/ /aws/services/lakeformation 301 -/developer-hub/ /aws/sample-apps 301 -/references/coverage/coverage_firehose/ /aws/services/firehose 301 -/user-guide/aws/verifiedpermissions/ /aws/services/verifiedpermissions 301 -/references/coverage/coverage_kinesisanalytics/ /aws/services/kinesisanalytics 301 -/user-guide/aws/sns/ /aws/services/sns 301 -/user-guide/tools/aws-replicator/ /aws/developer-tools/aws-replicator 301 -/user-guide/integrations/serverless-framework/ /aws/connecting/infrastructure-as-code/serverless-framework 301 -/references/coverage/coverage_sqs/ /aws/services/sqs 301 -/user-guide/aws/appsync/ /aws/services/appsync 301 -/tutorials/schema-evolution-glue-msk/ /aws/tutorials/schema-evolution-glue-msk 301 -/user-guide/ci/bitbucket/ /aws/integrations/continuous-integration/bitbucket 301 +/user-guide/integrations/eksctl/ /aws/customization/kubernetes/eksctl/ 301 +/getting-started/faq/ /aws/getting-started/faq/ 301 +/user-guide/aws/elb/ /aws/services/elb/ 301 +/user-guide/integrations/kubernetes/ /aws/customization/kubernetes/ 301 +/user-guide/aws/lakeformation/ /aws/services/lakeformation/ 301 +/developer-hub/ /aws/sample-apps/ 301 +/references/coverage/coverage_firehose/ /aws/services/firehose/ 301 +/user-guide/aws/verifiedpermissions/ /aws/services/verifiedpermissions/ 301 +/references/coverage/coverage_kinesisanalytics/ /aws/services/kinesisanalytics/ 301 +/user-guide/aws/sns/ /aws/services/sns/ 301 +/user-guide/tools/aws-replicator/ /aws/developer-tools/aws-replicator/ 301 +/user-guide/integrations/serverless-framework/ /aws/connecting/infrastructure-as-code/serverless-framework/ 301 +/references/coverage/coverage_sqs/ /aws/services/sqs/ 301 +/user-guide/aws/appsync/ /aws/services/appsync/ 301 +/tutorials/schema-evolution-glue-msk/ /aws/tutorials/schema-evolution-glue-msk/ 301 +/user-guide/ci/bitbucket/ /aws/ci-pipelines/bitbucket/ 301 /contributing/ https://github.com/localstack/localstack/blob/main/docs/CONTRIBUTING.md 301 -/user-guide/aws/scheduler/ /aws/services/scheduler 301 -/user-guide/integrations/quarkus/ /aws/integrations/app-frameworks/quarkus 301 -/user-guide/aws/servicediscovery/ /aws/services/servicediscovery 301 +/user-guide/aws/scheduler/ /aws/services/scheduler/ 301 +/user-guide/integrations/quarkus/ /aws/integrations/app-frameworks/quarkus/ 301 +/user-guide/aws/servicediscovery/ /aws/services/servicediscovery/ 301 /academy/localstack-101/ https://www.youtube.com/playlist?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&si=rKhzdxOJsfO_pgyk 301 -/user-guide/aws/xray/ /aws/services/xray 301 -/user-guide/aws/pca/ /aws/services/acm-pca 301 -/user-guide/aws/waf/ /aws/services/waf 301 +/user-guide/aws/xray/ /aws/services/xray/ 301 +/user-guide/aws/pca/ /aws/services/acm-pca/ 301 +/user-guide/aws/waf/ /aws/services/waf/ 301 /applications/event-driven-architecture-with-amazon-sns-fifo-dynamodb-lambda-and-s3/ https://github.com/localstack-samples/sample-sam-sns-fifo-dynamodb-lambda 301 -/user-guide/aws/apigateway/ /aws/services/apigateway 301 +/user-guide/aws/apigateway/ /aws/services/apigateway/ 301 /user-guide/integrations/cloud-custodian/ /aws/connecting/infrastructure-as-code/cloud-custodian/ 301 -/references/coverage/coverage_lambda/ /aws/services/lambda 301 -/user-guide/integrations/sdks/java/ /aws/connecting/aws-sdks/net/java 301 -/references/coverage/coverage_logs/ /aws/services/logs 301 -/references/coverage/coverage_mediastore/ /aws/services/mediastore 301 -/user-guide/integrations/kafka/ /aws/integrations/messaging/selfmanaged-kafka-cluster/ 301 -/user-guide/chaos-engineering/fault-injection-service/ /aws/developer-tools/chaos-engineering/fault-injection-service 301 -/references/logging/ /aws/configuration/config/logging 301 -/tutorials/java-notification-app/ /aws/tutorials/java-notification-app 301 +/references/coverage/coverage_lambda/ /aws/services/lambda/ 301 +/user-guide/integrations/sdks/java/ /aws/connecting/aws-sdks/net/java/ 301 +/references/coverage/coverage_logs/ /aws/services/logs/ 301 +/references/coverage/coverage_mediastore/ /aws/services/mediastore/ 301 +/user-guide/integrations/kafka/ /aws/customization/integrations/app-frameworks/selfmanaged-kafka-cluster/ 301 +/user-guide/chaos-engineering/fault-injection-service/ /aws/developer-tools/chaos-engineering/fault-injection-service/ 301 +/references/logging/ /aws/customization/logging/ 301 +/tutorials/java-notification-app/ /aws/tutorials/java-notification-app/ 301 /applications/serverless-transcription-application-using-transcribe-s3-lambda-sqs-and-ses/ https://github.com/localstack-samples/sample-serverless-transcribe 301 -/user-guide/aws/route53resolver/ /aws/services/route53resolver 301 -/references/coverage/coverage_wafv2/ /aws/services/waf 301 -/user-guide/integrations/sdks/cpp/ /aws/connecting/aws-sdks/net/cpp 301 -/user-guide/integrations/testcontainers/ /aws/integrations/testing/testcontainers 301 -/references/internal-endpoints/ /aws/configuration/networking/internal-endpoints 301 -/tutorials/lambda-ecr-container-images/ /aws/tutorials/lambda-ecr-container-images 301 -/user-guide/aws/fis/ /aws/services/fis 301 -/user-guide/tools/localstack-docker-extension/ /aws/configuration/localstack-docker-extension/ 301 -/user-guide/aws/cloudformation/ /aws/services/cloudformation 301 -/tutorials/route-53-failover/ /aws/tutorials/route-53-failover 301 -/user-guide/web-application/resource-browser/ /aws/connecting/console/resource-browser 301 +/user-guide/aws/route53resolver/ /aws/services/route53resolver/ 301 +/references/coverage/coverage_wafv2/ /aws/services/waf/ 301 +/user-guide/integrations/sdks/cpp/ /aws/connecting/aws-sdks/net/cpp/ 301 +/user-guide/integrations/testcontainers/ /aws/integrations/testing/testcontainers/ 301 +/references/internal-endpoints/ /aws/customization/networking/internal-endpoints/ 301 +/tutorials/lambda-ecr-container-images/ /aws/tutorials/lambda-ecr-container-images/ 301 +/user-guide/aws/fis/ /aws/services/fis/ 301 +/user-guide/tools/localstack-docker-extension/ /aws/customization/other-installations/localstack-docker-extension/ 301 +/user-guide/aws/cloudformation/ /aws/services/cloudformation/ 301 +/tutorials/route-53-failover/ /aws/tutorials/route-53-failover/ 301 +/user-guide/web-application/resource-browser/ /aws/connecting/console/resource-browser/ 301 /applications/loan-broker-application-with-aws-step-functions-dynamodb-lambda-sqs-and-sns/ https://github.com/localstack-samples/sample-loan-broker-stepfunctions-lambda 301 -/references/coverage/coverage_resource-groups/ /aws/services/resource-groups 301 -/user-guide/state-management/support/ /aws/developer-tools/snapshots/persistence-coverage 301 -/references/coverage/coverage_redshift/ /aws/services/redshift 301 +/references/coverage/coverage_resource-groups/ /aws/services/resource-groups/ 301 +/user-guide/state-management/support/ /aws/developer-tools/snapshots/persistence-coverage/ 301 +/references/coverage/coverage_redshift/ /aws/services/redshift/ 301 /user-guide/integrations/lambdatest-hyperexecute/ /aws/integrations/testing/lambdatest-hyperexecute/ 301 /applications/ /aws/sample-apps/ 301 -/user-guide/web-application/users-and-licenses/ /aws/configuration/web-app/users-and-licenses 301 -/user-guide/tools/localstack-sdk/ /aws/configuration/localstack-sdks/ 301 -/references/coverage/coverage_apigatewaymanagementapi/ /aws/services/apigateway 301 -/references/coverage/coverage_transfer/ /aws/services/transfer 301 +/user-guide/web-application/users-and-licenses/ /aws/organizations-admin/managing-users-licenses/ 301 +/user-guide/tools/localstack-sdk/ /aws/customization/integrations/localstack-sdks/ 301 +/references/coverage/coverage_apigatewaymanagementapi/ /aws/services/apigateway/ 301 +/references/coverage/coverage_transfer/ /aws/services/transfer/ 301 /references/coverage/coverage_codeconnections/ /aws/services/codeconnections/ 301 -/user-guide/aws/athena/ /aws/services/athena 301 -/user-guide/extensions/official-extensions/ /aws/configuration/extensions/official-extensions 301 -/user-guide/aws/textract/ /aws/services/textract 301 -/tutorials/iam-policy-stream/ /aws/tutorials/iam-policy-stream 301 -/references/coverage/coverage_ses/ /aws/services/ses 301 -/tutorials/gitlab_ci_testcontainers/ /aws/tutorials/gitlab-ci-testcontainers 301 -/user-guide/integrations/aws-sam/ /aws/connecting/infrastructure-as-code/aws-sam 301 -/user-guide/aws/firehose/ /aws/services/firehose 301 -/user-guide/web-application/ /aws/configuration/web-app/ 301 -/references/coverage/coverage_sagemaker/ /aws/services/sagemaker 301 -/references/arm64-support/ /aws/configuration/config/arm64-support/ 301 -/user-guide/aws/shield/ /aws/services/shield 301 -/user-guide/integrations/terraform/ /aws/connecting/infrastructure-as-code/terraform 301 -/user-guide/aws/es/ /aws/services/es 301 -/references/coverage/coverage_dms/ /aws/services/dms 301 -/user-guide/extensions/developing-extensions/ /aws/configuration/extensions/developing-extensions 301 -/user-guide/security-testing/explainable-iam/ /aws/developer-tools/security-testing/explainable-iam 301 -/user-guide/aws/ram/ /aws/services/ram 301 -/references/coverage/coverage_ssm/ /aws/services/ssm 301 -/references/network-troubleshooting/created-resources/ /aws/configuration/networking/created-resources 301 -/user-guide/aws/swf/ /aws/services/swf 301 -/user-guide/ci/github-actions/ /aws/integrations/continuous-integration/github-actions 301 -/user-guide/aws/serverlessrepo/ /aws/services/serverlessrepo 301 -/user-guide/aws/sqs/ /aws/services/sqs 301 -/references/coverage/coverage_ram/ /aws/services/ram 301 -/user-guide/aws/secretsmanager/ /aws/services/secretsmanager 301 -/user-guide/web-application/stack-insights/ /aws/configuration/web-app/stack-insights 301 -/user-guide/aws/autoscaling/ /aws/services/autoscaling 301 -/references/coverage/coverage_opensearch/ /aws/services/opensearch 301 +/user-guide/aws/athena/ /aws/services/athena/ 301 +/user-guide/extensions/official-extensions/ /aws/customization/integrations/extensions/extensions-library/ 301 +/user-guide/aws/textract/ /aws/services/textract/ 301 +/tutorials/iam-policy-stream/ /aws/tutorials/iam-policy-stream/ 301 +/references/coverage/coverage_ses/ /aws/services/ses/ 301 +/tutorials/gitlab_ci_testcontainers/ /aws/tutorials/gitlab-ci-testcontainers/ 301 +/user-guide/integrations/aws-sam/ /aws/connecting/infrastructure-as-code/aws-sam/ 301 +/user-guide/aws/firehose/ /aws/services/firehose/ 301 +/user-guide/web-application/ /aws/organizations-admin/ 301 +/references/coverage/coverage_sagemaker/ /aws/services/sagemaker/ 301 +/references/arm64-support/ /aws/customization/advanced/arm64-support/ 301 +/user-guide/aws/shield/ /aws/services/shield/ 301 +/user-guide/integrations/terraform/ /aws/connecting/infrastructure-as-code/terraform/ 301 +/user-guide/aws/es/ /aws/services/es/ 301 +/references/coverage/coverage_dms/ /aws/services/dms/ 301 +/user-guide/extensions/developing-extensions/ /aws/customization/integrations/extensions/developing-extensions/ 301 +/user-guide/security-testing/explainable-iam/ /aws/developer-tools/security-testing/explainable-iam/ 301 +/user-guide/aws/ram/ /aws/services/ram/ 301 +/references/coverage/coverage_ssm/ /aws/services/ssm/ 301 +/references/network-troubleshooting/created-resources/ /aws/customization/networking/accessing-resources-created/ 301 +/user-guide/aws/swf/ /aws/services/swf/ 301 +/user-guide/ci/github-actions/ /aws/ci-pipelines/github-actions/ 301 +/user-guide/aws/serverlessrepo/ /aws/services/serverlessrepo/ 301 +/user-guide/aws/sqs/ /aws/services/sqs/ 301 +/references/coverage/coverage_ram/ /aws/services/ram/ 301 +/user-guide/aws/secretsmanager/ /aws/services/secretsmanager/ 301 +/user-guide/web-application/stack-insights/ /aws/organizations-admin/stack-insights/ 301 +/user-guide/aws/autoscaling/ /aws/services/autoscaling/ 301 +/references/coverage/coverage_opensearch/ /aws/services/opensearch/ 301 /academy/localstack-101/cloud-pods/ https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=InqTdSvxuag&feature=youtu.be 301 -/references/coverage/coverage_emr-serverless/ /aws/services/emr 301 -/user-guide/aws/cloudwatch/ /aws/services/cloudwatch 301 -/user-guide/aws/elasticbeanstalk/ /aws/services/elasticbeanstalk 301 -/references/coverage/coverage_mediaconvert/ /aws/services/mediaconvert 301 -/user-guide/state-management/launchpad/ /aws/developer-tools/snapshots/launchpad 301 -/user-guide/ci/codebuild/ /aws/integrations/continuous-integration/codebuild 301 -/user-guide/aws/iot-data/ /aws/services/iot-data 301 -/references/coverage/coverage_textract/ /aws/services/textract 301 -/references/coverage/coverage_codebuild/ /aws/services/codebuild 301 -/user-guide/aws/elastictranscoder/ /aws/services/elastictranscoder 301 -/references/coverage/coverage_glacier/ /aws/services/glacier 301 +/references/coverage/coverage_emr-serverless/ /aws/services/emr/ 301 +/user-guide/aws/cloudwatch/ /aws/services/cloudwatch/ 301 +/user-guide/aws/elasticbeanstalk/ /aws/services/elasticbeanstalk/ 301 +/references/coverage/coverage_mediaconvert/ /aws/services/mediaconvert/ 301 +/user-guide/state-management/launchpad/ /aws/developer-tools/snapshots/launchpad/ 301 +/user-guide/ci/codebuild/ /aws/ci-pipelines/codebuild/ 301 +/user-guide/aws/iot-data/ /aws/services/iot-data/ 301 +/references/coverage/coverage_textract/ /aws/services/textract/ 301 +/references/coverage/coverage_codebuild/ /aws/services/codebuild/ 301 +/user-guide/aws/elastictranscoder/ /aws/services/elastictranscoder/ 301 +/references/coverage/coverage_glacier/ /aws/services/glacier/ 301 /user-guide/tools/ /aws/developer-tools/ 301 -/user-guide/aws/timestream/ /aws/services/timestream-query 301 -/references/coverage/coverage_pinpoint/ /aws/services/pinpoint 301 +/user-guide/aws/timestream/ /aws/services/timestream-query/ 301 +/references/coverage/coverage_pinpoint/ /aws/services/pinpoint/ 301 /applications/serverless-rds-proxy-with-api-gateway-lambda-and-aurora-rds/ https://github.com/localstack-samples/sample-serverless-rds-proxy-demo 301 /academy/localstack-101/why-localstack/ https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=EDGIBpUpYWU&feature=youtu.be 301 -/user-guide/aws/transcribe/ /aws/services/transcribe 301 -/references/coverage/coverage_cloudformation/ /aws/services/cloudformation 301 -/references/coverage/coverage_apigatewayv2/ /aws/services/apigateway 301 -/user-guide/aws/kinesis/ /aws/services/kinesis 301 -/references/coverage/coverage_bedrock-runtime/ /aws/services/bedrock 301 -/references/coverage/coverage_iot-data/ /aws/services/iot-data 301 -/user-guide/cloud-sandbox/ephemeral-instance/ /aws/developer-tools/cloud-sandbox/ephemeral-instance 301 -/references/coverage/coverage_timestream-write/ /aws/services/timestream-query 301 -/user-guide/aws/pinpoint/ /aws/services/pinpoint 301 -/tutorials/cloud-pods-collaborative-debugging/ /aws/tutorials/cloud-pods-collaborative-debugging 301 -/references/coverage/coverage_emr/ /aws/services/emr 301 -/user-guide/aws/iam/ /aws/services/iam 301 +/user-guide/aws/transcribe/ /aws/services/transcribe/ 301 +/references/coverage/coverage_cloudformation/ /aws/services/cloudformation/ 301 +/references/coverage/coverage_apigatewayv2/ /aws/services/apigateway/ 301 +/user-guide/aws/kinesis/ /aws/services/kinesis/ 301 +/references/coverage/coverage_bedrock-runtime/ /aws/services/bedrock/ 301 +/references/coverage/coverage_iot-data/ /aws/services/iot-data/ 301 +/user-guide/cloud-sandbox/ephemeral-instance/ /aws/developer-tools/cloud-sandbox/ephemeral-instance/ 301 +/references/coverage/coverage_timestream-write/ /aws/services/timestream-query/ 301 +/user-guide/aws/pinpoint/ /aws/services/pinpoint/ 301 +/tutorials/cloud-pods-collaborative-debugging/ /aws/tutorials/cloud-pods-collaborative-debugging/ 301 +/references/coverage/coverage_emr/ /aws/services/emr/ 301 +/user-guide/aws/iam/ /aws/services/iam/ 301 /academy/localstack-deployment/course-overview/ https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=XDIat6laW28&feature=youtu.be 301 -/references/coverage/coverage_codepipeline/ /aws/services/codepipeline 301 +/references/coverage/coverage_codepipeline/ /aws/services/codepipeline/ 301 /academy/localstack-deployment/infra-terraform/ https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=lsF3kewOeBU&feature=youtu.be 301 -/references/network-troubleshooting/ /aws/configuration/networking/ 301 -/user-guide/ci/gitlab-ci/ /aws/integrations/continuous-integration/gitlab-ci 301 -/user-guide/aws/kms/ /aws/services/kms 301 -/references/coverage/coverage_stepfunctions/ /aws/services/stepfunctions 301 -/references/coverage/coverage_sesv2/ /aws/services/ses 301 -/references/coverage/coverage_events/ /aws/services/events 301 -/references/coverage/coverage_timestream-query/ /aws/services/timestream-query 301 -/references/network-troubleshooting/endpoint-url/ /aws/configuration/networking/endpoint-url 301 -/tutorials/ephemeral-application-previews/ /aws/tutorials/ephemeral-application-previews 301 -/user-guide/web-application/accounts/ /aws/configuration/web-app/accounts 301 -/references/coverage/coverage_appsync/ /aws/services/appsync 301 -/references/coverage/coverage_ecr/ /aws/services/ecr 301 +/references/network-troubleshooting/ /aws/customization/networking/ 301 +/user-guide/ci/gitlab-ci/ /aws/ci-pipelines/gitlab-ci/ 301 +/user-guide/aws/kms/ /aws/services/kms/ 301 +/references/coverage/coverage_stepfunctions/ /aws/services/stepfunctions/ 301 +/references/coverage/coverage_sesv2/ /aws/services/ses/ 301 +/references/coverage/coverage_events/ /aws/services/events/ 301 +/references/coverage/coverage_timestream-query/ /aws/services/timestream-query/ 301 +/references/network-troubleshooting/endpoint-url/ /aws/customization/networking/accessing-endpoint-url/ 301 +/tutorials/ephemeral-application-previews/ /aws/tutorials/ephemeral-application-previews/ 301 +/user-guide/web-application/accounts/ /aws/organizations-admin/accounts/ 301 +/references/coverage/coverage_appsync/ /aws/services/appsync/ 301 +/references/coverage/coverage_ecr/ /aws/services/ecr/ 301 /academy/localstack-deployment/ https://www.youtube.com/playlist?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&si=R-Ed-JQKOxXP473O 301 -/references/coverage/coverage_application-autoscaling/ /aws/services/application-autoscaling 301 -/user-guide/lambda-tools/debugging/ /aws/developer-tools/lambda-tools/debugging 301 +/references/coverage/coverage_application-autoscaling/ /aws/services/application-autoscaling/ 301 +/user-guide/lambda-tools/debugging/ /aws/developer-tools/lambda-tools/debugging/ 301 /references/coverage/coverage_codestar-connections/ /aws/services/codeconnections/ 301 -/user-guide/integrations/rancher-desktop/ /aws/integrations/containers/rancher-desktop 301 -/user-guide/integrations/sdks/ruby/ /aws/connecting/aws-sdks/net/ruby 301 -/user-guide/aws/mwaa/ /aws/services/mwaa 301 +/user-guide/integrations/rancher-desktop/ /aws/customization/other-installations/rancher-desktop/ 301 +/user-guide/integrations/sdks/ruby/ /aws/connecting/aws-sdks/net/ruby/ 301 +/user-guide/aws/mwaa/ /aws/services/mwaa/ 301 /academy/localstack-deployment/deploy-app-ls/ https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=qIB79b-iw2U&feature=youtu.be 301 -/user-guide/aws/organizations/ /aws/services/organizations 301 +/user-guide/aws/organizations/ /aws/services/organizations/ 301 /academy/localstack-deployment/github-action-ls/ https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=XNh8aSaT9v0&feature=youtu.be 301 -/user-guide/aws/sagemaker/ /aws/services/sagemaker 301 -/references/configuration/ /aws/configuration/config/configuration 301 -/user-guide/chaos-engineering/chaos-api/ /aws/developer-tools/chaos-engineering/chaos-api 301 -/user-guide/aws/glacier/ /aws/services/glacier 301 -/references/coverage/coverage_qldb-session/ /aws/services/qldb 301 -/user-guide/integrations/pulumi/ /aws/connecting/infrastructure-as-code/pulumi 301 -/user-guide/aws/cloudtrail/ /aws/services/cloudtrail 301 -/references/coverage/coverage_s3/ /aws/services/s3 301 -/user-guide/aws/emr/ /aws/services/emr 301 -/user-guide/tools/dns-server/ /aws/configuration/dns-server 301 -/user-guide/chaos-engineering/chaos-application-dashboard/ /aws/developer-tools/chaos-engineering/chaos-application-dashboard 301 -/references/coverage/coverage_route53/ /aws/services/route53 301 -/references/coverage/coverage_dynamodbstreams/ /aws/services/dynamodbstreams 301 -/references/coverage/coverage_dynamodb/ /aws/services/dynamodb 301 -/user-guide/aws/ec2/ /aws/services/ec2 301 +/user-guide/aws/sagemaker/ /aws/services/sagemaker/ 301 +/references/configuration/ /aws/customization/configuration-options/ 301 +/user-guide/chaos-engineering/chaos-api/ /aws/developer-tools/chaos-engineering/chaos-api/ 301 +/user-guide/aws/glacier/ /aws/services/glacier/ 301 +/references/coverage/coverage_qldb-session/ /aws/services/qldb/ 301 +/user-guide/integrations/pulumi/ /aws/connecting/infrastructure-as-code/pulumi/ 301 +/user-guide/aws/cloudtrail/ /aws/services/cloudtrail/ 301 +/references/coverage/coverage_s3/ /aws/services/s3/ 301 +/user-guide/aws/emr/ /aws/services/emr/ 301 +/user-guide/tools/dns-server/ /aws/customization/networking/dns-server/ 301 +/user-guide/chaos-engineering/chaos-application-dashboard/ /aws/developer-tools/chaos-engineering/chaos-application-dashboard/ 301 +/references/coverage/coverage_route53/ /aws/services/route53/ 301 +/references/coverage/coverage_dynamodbstreams/ /aws/services/dynamodbstreams/ 301 +/references/coverage/coverage_dynamodb/ /aws/services/dynamodb/ 301 +/user-guide/aws/ec2/ /aws/services/ec2/ 301 /user-guide/cloud-sandbox/application-previews/ /aws/developer-tools/cloud-sandbox/app-preview/ 301 -/user-guide/integrations/spring-cloud-function/ /aws/integrations/app-frameworks/spring-cloud-function 301 -/references/multi-account-setups/ /aws/configuration/config/multi-account-setups/ 301 -/user-guide/aws/elementalmediaconvert/ /aws/services/mediaconvert 301 -/references/coverage/coverage_shield/ /aws/services/shield 301 -/user-guide/aws/dynamodb/ /aws/services/dynamodb 301 +/user-guide/integrations/spring-cloud-function/ /aws/integrations/app-frameworks/spring-cloud-function/ 301 +/references/multi-account-setups/ /aws/customization/advanced/multi-account-setups/ 301 +/user-guide/aws/elementalmediaconvert/ /aws/services/mediaconvert/ 301 +/references/coverage/coverage_shield/ /aws/services/shield/ 301 +/user-guide/aws/dynamodb/ /aws/services/dynamodb/ 301 /aws/tooling/event-studio/ /aws/developer-tools/app-inspector/ 301 /references/coverage/ /aws/services/ 301 -/references/coverage/coverage_acm-pca/ /aws/services/acm-pca 301 -/user-guide/aws/opensearch/ /aws/services/opensearch 301 -/user-guide/aws/neptune/ /aws/services/neptune 301 -/user-guide/aws/codepipeline/ /aws/services/codepipeline 301 -/references/coverage/coverage_docdb/ /aws/services/docdb 301 -/references/coverage/coverage_appconfig/ /aws/services/appconfig 301 -/references/coverage/coverage_iot/ /aws/services/iot 301 -/getting-started/installation/ /aws/getting-started/installation 301 +/references/coverage/coverage_acm-pca/ /aws/services/acm-pca/ 301 +/user-guide/aws/opensearch/ /aws/services/opensearch/ 301 +/user-guide/aws/neptune/ /aws/services/neptune/ 301 +/user-guide/aws/codepipeline/ /aws/services/codepipeline/ 301 +/references/coverage/coverage_docdb/ /aws/services/docdb/ 301 +/references/coverage/coverage_appconfig/ /aws/services/appconfig/ 301 +/references/coverage/coverage_iot/ /aws/services/iot/ 301 +/getting-started/installation/ /aws/getting-started/installation/ 301 /user-guide/integrations/architect/ /aws/integrations/app-frameworks/architect/ 301 -/user-guide/integrations/gitpod/ /aws/integrations/containers/gitpod/ 301 -/user-guide/aws/managedblockchain/ /aws/services/managedblockchain 301 +/user-guide/integrations/gitpod/ /aws/customization/other-installations/ 301 +/user-guide/aws/managedblockchain/ /aws/services/managedblockchain/ 301 /applications/query-data-in-s3-bucket-with-amazon-athena-glue-catalog-cloudformation/ https://github.com/localstack-samples/sample-query-data-s3-athena-glue 301 /academy/localstack-101/web-app-resource-browser/ https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=SoXtngYp-8k&feature=youtu.be 301 -/user-guide/integrations/ /aws/integrations/ 301 -/user-guide/aws/codebuild/ /aws/services/codebuild 301 -/user-guide/aws/ses/ /aws/services/ses 301 -/references/coverage/coverage_sagemaker-runtime/ /aws/services/sagemaker 301 +/user-guide/integrations/ /aws/customization/integrations/ 301 +/user-guide/aws/codebuild/ /aws/services/codebuild/ 301 +/user-guide/aws/ses/ /aws/services/ses/ 301 +/references/coverage/coverage_sagemaker-runtime/ /aws/services/sagemaker/ 301 /applications/messaging-processing-application-with-sqs-dynamodb-and-fargate/ https://github.com/localstack-samples/sample-cdk-sqs-fargate-dynamodb 301 -/user-guide/aws/mq/ /aws/services/mq 301 -/user-guide/localstack-enterprise/kubernetes-executor/ /aws/enterprise/kubernetes-executor 301 -/user-guide/aws/iot/ /aws/services/iot 301 -/user-guide/aws/backup/ /aws/services/backup 301 -/references/coverage/coverage_organizations/ /aws/services/organizations 301 -/user-guide/aws/kinesisanalytics/ /aws/services/kinesisanalytics 301 -/user-guide/localstack-enterprise/single-sign-on/ /aws/enterprise/sso 301 -/user-guide/aws/redshift/ /aws/services/redshift 301 -/references/coverage/coverage_verifiedpermissions/ /aws/services/verifiedpermissions 301 +/user-guide/aws/mq/ /aws/services/mq/ 301 +/user-guide/localstack-enterprise/kubernetes-executor/ /aws/customization/kubernetes/kubernetes-executor/ 301 +/user-guide/aws/iot/ /aws/services/iot/ 301 +/user-guide/aws/backup/ /aws/services/backup/ 301 +/references/coverage/coverage_organizations/ /aws/services/organizations/ 301 +/user-guide/aws/kinesisanalytics/ /aws/services/kinesisanalytics/ 301 +/user-guide/localstack-enterprise/single-sign-on/ /aws/organizations-admin/sso/ 301 +/user-guide/aws/redshift/ /aws/services/redshift/ 301 +/references/coverage/coverage_verifiedpermissions/ /aws/services/verifiedpermissions/ 301 /academy/localstack-101/full-project-demo/ https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=cQxg3Dnteyc&feature=youtu.be 301 /applications/full-stack-application-with-aws-lambda-dynamodb-s3-for-shipment-validation/ https://github.com/localstack-samples/sample-shipment-list-demo-lambda-dynamodb-s3 301 /user-guide/integrations/chalice/ /aws/connecting/infrastructure-as-code/aws-chalice/ 301 -/user-guide/security-testing/iam-policy-stream/ /aws/developer-tools/security-testing/iam-policy-stream 301 -/user-guide/security-testing/iam-enforcement/ /aws/developer-tools/security-testing/iam-enforcement 301 -/references/coverage/coverage_route53resolver/ /aws/services/route53resolver 301 -/references/coverage/coverage_config/ /aws/services/config 301 -/references/coverage/coverage_account/ /aws/services/account 301 -/user-guide/web-application/stack-overview/ /aws/connecting/console/stack-overview 301 +/user-guide/security-testing/iam-policy-stream/ /aws/developer-tools/security-testing/iam-policy-stream/ 301 +/user-guide/security-testing/iam-enforcement/ /aws/developer-tools/security-testing/iam-enforcement/ 301 +/references/coverage/coverage_route53resolver/ /aws/services/route53resolver/ 301 +/references/coverage/coverage_config/ /aws/services/config/ 301 +/references/coverage/coverage_account/ /aws/services/account/ 301 +/user-guide/web-application/stack-overview/ /aws/connecting/console/stack-overview/ 301 /academy/localstack-deployment/cloud-pods/ https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=ZJP2xfvwR_g&feature=youtu.be 301 -/user-guide/aws/appconfig/ /aws/services/appconfig 301 -/user-guide/aws/cognito/ /aws/services/cognito-idp 301 -/references/coverage/coverage_bedrock/ /aws/services/bedrock 301 -/user-guide/aws/efs/ /aws/services/efs 301 -/references/coverage/coverage_rds/ /aws/services/rds 301 -/references/coverage/coverage_backup/ /aws/services/backup 301 -/user-guide/aws/rds/ /aws/services/rds 301 -/user-guide/aws/identitystore/ /aws/services/identitystore 301 -/references/coverage/coverage_redshift-data/ /aws/services/redshift 301 -/user-guide/aws/elasticache/ /aws/services/elasticache 301 -/tutorials/using-terraform-with-testcontainers-and-localstack/ /aws/tutorials/using-terraform-with-testcontainers-and-localstack 301 -/references/coverage/coverage_cloudfront/ /aws/services/cloudfront 301 -/user-guide/tools/localstack-sdk/java/ /aws/user-guide/tools/localstack-sdk/java 301 -/references/network-troubleshooting/readme/ /aws/configuration/networking/ 301 -/user-guide/aws/codecommit/ /aws/services/codecommit 301 -/references/coverage/coverage_swf/ /aws/services/swf 301 -/user-guide/integrations/sdks/go/ /aws/connecting/aws-sdks/go 301 +/user-guide/aws/appconfig/ /aws/services/appconfig/ 301 +/user-guide/aws/cognito/ /aws/services/cognito-idp/ 301 +/references/coverage/coverage_bedrock/ /aws/services/bedrock/ 301 +/user-guide/aws/efs/ /aws/services/efs/ 301 +/references/coverage/coverage_rds/ /aws/services/rds/ 301 +/references/coverage/coverage_backup/ /aws/services/backup/ 301 +/user-guide/aws/rds/ /aws/services/rds/ 301 +/user-guide/aws/identitystore/ /aws/services/identitystore/ 301 +/references/coverage/coverage_redshift-data/ /aws/services/redshift/ 301 +/user-guide/aws/elasticache/ /aws/services/elasticache/ 301 +/tutorials/using-terraform-with-testcontainers-and-localstack/ /aws/tutorials/using-terraform-with-testcontainers-and-localstack/ 301 +/references/coverage/coverage_cloudfront/ /aws/services/cloudfront/ 301 +/user-guide/tools/localstack-sdk/java/ /aws/user-guide/tools/localstack-sdk/java/ 301 +/references/network-troubleshooting/readme/ /aws/customization/networking/ 301 +/user-guide/aws/codecommit/ /aws/services/codecommit/ 301 +/references/coverage/coverage_swf/ /aws/services/swf/ 301 +/user-guide/integrations/sdks/go/ /aws/connecting/aws-sdks/go/ 301 /persistence/ /aws/developer-tools/snapshots/persistence/ 301 -/references/init-hooks/ /aws/configuration/config/initialization-hooks/ 301 -/references/coverage/coverage_support/ /aws/services/support 301 +/references/init-hooks/ /aws/customization/advanced/initialization-hooks/ 301 +/references/coverage/coverage_support/ /aws/services/support/ 301 /user-guide/ /aws/ 301 -/user-guide/aws/qldb/ /aws/services/qldb 301 -/tutorials/simulating-outages/ /aws/tutorials/simulating-outages 301 -/user-guide/aws/acm/ /aws/services/acm 301 -/user-guide/integrations/sdks/php/ /aws/connecting/aws-sdks/net/php 301 -/references/coverage/coverage_sns/ /aws/services/sns 301 -/getting-started/help-and-support/ /aws/getting-started/help-support 301 -/user-guide/aws/amplify/ /aws/services/amplify 301 -/references/coverage/coverage_lakeformation/ /aws/services/lakeformation 301 -/user-guide/integrations/sdks/dotnet/ /aws/connecting/aws-sdks/net/dotnet 301 +/user-guide/aws/qldb/ /aws/services/qldb/ 301 +/tutorials/simulating-outages/ /aws/tutorials/simulating-outages/ 301 +/user-guide/aws/acm/ /aws/services/acm/ 301 +/user-guide/integrations/sdks/php/ /aws/connecting/aws-sdks/net/php/ 301 +/references/coverage/coverage_sns/ /aws/services/sns/ 301 +/getting-started/help-and-support/ /aws/getting-started/help-support/ 301 +/user-guide/aws/amplify/ /aws/services/amplify/ 301 +/references/coverage/coverage_lakeformation/ /aws/services/lakeformation/ 301 +/user-guide/integrations/sdks/dotnet/ /aws/connecting/aws-sdks/net/dotnet/ 301 /academy/ https://www.youtube.com/playlist?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0 301 -/references/coverage/coverage_cloudwatch/ /aws/services/cloudwatch 301 -/user-guide/aws/ecr/ /aws/services/ecr 301 -/user-guide/aws/stepfunctions/ /aws/services/stepfunctions 301 -/references/coverage/coverage_elasticache/ /aws/services/elasticache 301 +/references/coverage/coverage_cloudwatch/ /aws/services/cloudwatch/ 301 +/user-guide/aws/ecr/ /aws/services/ecr/ 301 +/user-guide/aws/stepfunctions/ /aws/services/stepfunctions/ 301 +/references/coverage/coverage_elasticache/ /aws/services/elasticache/ 301 /applications/mnist-handwritten-digit-recognition-model-running-on-a-local-sagemaker-endpoint/ https://github.com/localstack-samples/sample-mnist-digit-recognition-sagemaker 301 -/user-guide/state-management/pods-cli/ /aws/developer-tools/snapshots/cli-commands 301 -/user-guide/aws/dynamodbstreams/ /aws/services/dynamodbstreams 301 -/references/api-key/ /aws/getting-started/auth-token/#how-do-i-activate-older-versions-of-localstack-before-v30 301 -/references/coverage/coverage_eks/ /aws/services/eks 301 -/references/coverage/coverage_cognito-idp/ /aws/services/cognito-idp 301 -/user-guide/web-application/workspace/ /aws/configuration/web-app/workspace 301 -/references/coverage/coverage_cloudcontrol/ /aws/services/cloudcontrol 301 -/tutorials/replicate-aws-resources-localstack-extension/ /aws/tutorials/replicate-aws-resources-localstack-extension 301 -/user-guide/tools/localstack-sdk/python/ /aws/configuration/localstack-sdks/python 301 -/user-guide/lambda-tools/hot-reloading/ /aws/developer-tools/lambda-tools/hot-reloading 301 -/getting-started/quickstart/ /aws/getting-started/quickstart 301 -/overview/ /aws 301 -/user-guide/aws/glue/ /aws/services/glue 301 -/getting-started/ /aws/getting-started 301 -/user-guide/extensions/managing-extensions/ /aws/configuration/extensions/managing-extensions 301 -/references/filesystem/ /aws/configuration/config/filesystem/ 301 -/references/ /aws/configuration/config/ 301 +/user-guide/state-management/pods-cli/ /aws/developer-tools/snapshots/cli-commands/ 301 +/user-guide/aws/dynamodbstreams/ /aws/services/dynamodbstreams/ 301 +/references/api-key/ /aws/getting-started/auth-token/#how-do-i-activate-older-versions-of-localstack-before-v30/ 301 +/references/coverage/coverage_eks/ /aws/services/eks/ 301 +/references/coverage/coverage_cognito-idp/ /aws/services/cognito-idp/ 301 +/user-guide/web-application/workspace/ /aws/organizations-admin/workspaces/ 301 +/references/coverage/coverage_cloudcontrol/ /aws/services/cloudcontrol/ 301 +/tutorials/replicate-aws-resources-localstack-extension/ /aws/tutorials/replicate-aws-resources-localstack-extension/ 301 +/user-guide/tools/localstack-sdk/python/ /aws/customization/integrations/localstack-sdks/python-sdk/ 301 +/user-guide/lambda-tools/hot-reloading/ /aws/developer-tools/lambda-tools/hot-reloading/ 301 +/getting-started/quickstart/ /aws/getting-started/local-development/ 301 +/aws/getting-started/quickstart/ /aws/getting-started/local-development/ 301 +/overview/ /aws/ 301 +/user-guide/aws/glue/ /aws/services/glue/ 301 +/getting-started/ /aws/getting-started/ 301 +/user-guide/extensions/managing-extensions/ /aws/customization/integrations/extensions/managing-extensions/ 301 +/references/filesystem/ /aws/customization/advanced/filesystem/ 301 +/references/ /aws/customization/ 301 /academy/localstack-101/getting-started/ https://www.youtube.com/watch?v=CzX4mfiS058&feature=youtu.be 301 -/legal/third-party-software-tools /aws/legal/third-party-software-tools 301 -/references/coverage/coverage_elb /aws/services/elb 301 -/user-guide/aws/batch /aws/services/batch 301 -/references/coverage/coverage_scheduler /aws/services/scheduler 301 -/user-guide/extensions /aws/configuration/extensions 301 -/tutorials/s3-static-website-terraform /aws/tutorials/s3-static-website-terraform 301 +/legal/third-party-software-tools /aws/legal/third-party-software-tools/ 301 +/references/coverage/coverage_elb /aws/services/elb/ 301 +/user-guide/aws/batch /aws/services/batch/ 301 +/references/coverage/coverage_scheduler /aws/services/scheduler/ 301 +/user-guide/extensions /aws/customization/integrations/extensions/ 301 +/tutorials/s3-static-website-terraform /aws/tutorials/s3-static-website-terraform/ 301 /references/coverage/coverage_sso-admin /aws/services/sso-admin/ 301 -/references/coverage/coverage_rds-data /aws/services/rds 301 -/references/coverage/coverage_ec2 /aws/services/ec2 301 -/references/licensing /aws/licensing 301 -/legal /aws/legal/third-party-software-tools 301 -/references/coverage/coverage_iotwireless /aws/services/iotwireless 301 -/references/coverage/coverage_mwaa /aws/services/mwaa 301 +/references/coverage/coverage_rds-data /aws/services/rds/ 301 +/references/coverage/coverage_ec2 /aws/services/ec2/ 301 +/references/licensing /aws/licensing/ 301 +/legal /aws/legal/third-party-software-tools/ 301 +/references/coverage/coverage_iotwireless /aws/services/iotwireless/ 301 +/references/coverage/coverage_mwaa /aws/services/mwaa/ 301 /applications/amazon-rds-initialization-using-cdk-lambda-ecr-and-secrets-manager https://github.com/localstack-samples/sample-cdk-rds 301 -/references/coverage/coverage_pipes /aws/services/pipes 301 -/user-guide/state-management/persistence /aws/developer-tools/snapshots/persistence 301 -/references/coverage/coverage_mq /aws/services/mq 301 +/references/coverage/coverage_pipes /aws/services/pipes/ 301 +/user-guide/state-management/persistence /aws/developer-tools/snapshots/persistence/ 301 +/references/coverage/coverage_mq /aws/services/mq/ 301 /academy/localstack-101/what-is-localstack https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=B2EML5L3-tw&feature=youtu.be 301 -/references/coverage/coverage_xray /aws/services/xray 301 -/references/coverage/coverage_cognito-identity /aws/services/cognito-idp 301 -/user-guide/aws/ecs /aws/services/ecs 301 -/references/usage-tracking /aws/configuration/config/usage-tracking 301 -/user-guide/aws/dms /aws/services/dms 301 -/references/coverage/coverage_managedblockchain /aws/services/managedblockchain 301 +/references/coverage/coverage_xray /aws/services/xray/ 301 +/references/coverage/coverage_cognito-identity /aws/services/cognito-idp/ 301 +/user-guide/aws/ecs /aws/services/ecs/ 301 +/references/usage-tracking /aws/customization/advanced/usage-tracking/ 301 +/user-guide/aws/dms /aws/services/dms/ 301 +/references/coverage/coverage_managedblockchain /aws/services/managedblockchain/ 301 /applications/search-application-with-lambda-kinesis-firehose-elasticsearch-s3 https://github.com/localstack-samples/sample-fuzzy-movie-search-lambda-kinesis-elasticsearch 301 -/references/regions-coverage /aws/configuration/config/regions-coverage/ 301 -/tutorials/elb-load-balancing /aws/tutorials/elb-load-balancing 301 -/references/docker-images /aws/configuration/config/docker-images 301 -/user-guide/aws/eks /aws/services/eks 301 +/references/regions-coverage /aws/customization/advanced/regions-coverage/ 301 +/tutorials/elb-load-balancing /aws/tutorials/elb-load-balancing/ 301 +/references/docker-images /aws/customization/other-installations/docker-images/ 301 +/user-guide/aws/eks /aws/services/eks/ 301 /applications/appsync-graphql-apis-for-dynamodb-and-rds-aurora-postgresql https://github.com/localstack-samples/sample-appsync-graphql-api 301 -/user-guide/aws/cloudfront /aws/services/cloudfront 301 +/user-guide/aws/cloudfront /aws/services/cloudfront/ 301 /applications/note-taking-application-using-aws-sdk-for-javascript https://github.com/localstack-samples/sample-notes-app-dynamodb-lambda-apigateway 301 -/user-guide/state-management/export-import-state /aws/developer-tools/snapshots/export-import-state 301 -/references/coverage/coverage_s3control /aws/services/s3 301 -/references/custom-tls-certificates /aws/developer-tools/security-testing/custom-tls-certificates 301 -/references/coverage/coverage_codecommit /aws/services/codecommit 301 -/user-guide/localstack-enterprise/enterprise-image /aws/enterprise/enterprise-image 301 -/user-guide/tools/testing-utils /aws/configuration/testing-utils 301 -/user-guide/aws/codedeploy /aws/services/codedeploy 301 -/references/coverage/coverage_serverlessrepo /aws/services/serverlessrepo 301 -/user-guide/aws/resource_groups /aws/services/resource_groups 301 -/references/coverage/coverage_glue /aws/services/glue 301 -/user-guide/aws/ssm /aws/services/ssm 301 -/references/coverage/coverage_sts /aws/services/sts 301 +/user-guide/state-management/export-import-state /aws/developer-tools/snapshots/export-import-state/ 301 +/references/coverage/coverage_s3control /aws/services/s3/ 301 +/references/custom-tls-certificates /aws/developer-tools/security-testing/custom-tls-certificates/ 301 +/references/coverage/coverage_codecommit /aws/services/codecommit/ 301 +/user-guide/localstack-enterprise/enterprise-image /aws/customization/other-installations/enterprise-image/ 301 +/user-guide/tools/testing-utils /aws/customization/integrations/localstack-sdks/testing-utils/ 301 +/user-guide/aws/codedeploy /aws/services/codedeploy/ 301 +/references/coverage/coverage_serverlessrepo /aws/services/serverlessrepo/ 301 +/user-guide/aws/resource_groups /aws/services/resource_groups/ 301 +/references/coverage/coverage_glue /aws/services/glue/ 301 +/user-guide/aws/ssm /aws/services/ssm/ 301 +/references/coverage/coverage_sts /aws/services/sts/ 301 /academy/localstack-101/course-overview https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=VLL-BI1AWcc&feature=youtu.be 301 -/user-guide/aws/iotwireless /aws/services/iotwireless 301 -/user-guide/integrations/sdks/python /aws/connecting/aws-sdks/net/python 301 -/user-guide/integrations/crossplane /aws/connecting/infrastructure-as-code/crossplane 301 -/references/coverage/coverage_elbv2 /aws/services/elb 301 -/user-guide/integrations/openshift /aws/integrations/containers/openshift 301 -/user-guide/aws/memorydb /aws/services/memorydb 301 -/user-guide/integrations/devcontainers /aws/integrations/containers/devcontainers 301 -/references/coverage/coverage_secretsmanager /aws/services/secretsmanager 301 -/user-guide/ci/travis-ci /aws/integrations/continuous-integration/travis-ci 301 +/user-guide/aws/iotwireless /aws/services/iotwireless/ 301 +/user-guide/integrations/sdks/python /aws/connecting/aws-sdks/net/python/ 301 +/user-guide/integrations/crossplane /aws/connecting/infrastructure-as-code/crossplane/ 301 +/references/coverage/coverage_elbv2 /aws/services/elb/ 301 +/user-guide/integrations/openshift /aws/customization/kubernetes/openshift/ 301 +/user-guide/aws/memorydb /aws/services/memorydb/ 301 +/user-guide/integrations/devcontainers /aws/customization/other-installations/devcontainers/ 301 +/references/coverage/coverage_secretsmanager /aws/services/secretsmanager/ 301 +/user-guide/ci/travis-ci /aws/ci-pipelines/travis-ci/ 301 /applications/serverless-microservices-with-amazon-api-gateway-dynamodb-sqs-and-lambda https://github.com/localstack-samples/sample-microservices-apigateway-lambda-dynamodb-sqs 301 -/user-guide/lambda-tools /aws/developer-tools/lambda-tools 301 -/user-guide/integrations/aws-cdk /aws/connecting/infrastructure-as-code/aws-cdk 301 -/references/podman /aws/configuration/config/podman 301 -/references/coverage/coverage_memorydb /aws/services/memorydb 301 -/user-guide/integrations/former2 /aws/connecting/infrastructure-as-code/former2 301 -/user-guide/localstack-enterprise/k8s-operator /aws/enterprise/k8s-operator 301 -/user-guide/integrations/aws-cli /aws/connecting/aws-cli 301 -/references/coverage/coverage_kinesisanalyticsv2 /aws/services/kinesisanalyticsv2 301 -/references/coverage/coverage_amplify /aws/services/amplify 301 -/user-guide/aws/events /aws/services/events 301 -/user-guide/aws/pipes /aws/services/pipes 301 -/user-guide/ci/circle-ci /aws/integrations/continuous-integration/circle-ci 301 -/references/network-troubleshooting/transparent-endpoint-injection /aws/configuration/networking/transparent-endpoint-injection 301 -/references/coverage/coverage_kafka /aws/services/kafka 301 -/references/coverage/coverage_servicediscovery /aws/services/servicediscovery 301 -/references/coverage/coverage_apigateway /aws/services/apigateway 301 -/tutorials /aws/tutorials 301 -/references/coverage/coverage_kinesis /aws/services/kinesis 301 -/references/coverage/coverage_autoscaling /aws/services/autoscaling 301 -/references/coverage/coverage_kms /aws/services/kms 301 +/user-guide/lambda-tools /aws/developer-tools/lambda-tools/ 301 +/user-guide/integrations/aws-cdk /aws/connecting/infrastructure-as-code/aws-cdk/ 301 +/references/podman /aws/customization/other-installations/podman/ 301 +/references/coverage/coverage_memorydb /aws/services/memorydb/ 301 +/user-guide/integrations/former2 /aws/connecting/infrastructure-as-code/former2/ 301 +/user-guide/localstack-enterprise/k8s-operator /aws/customization/kubernetes/kubernetes-operator/ 301 +/user-guide/integrations/aws-cli /aws/connecting/aws-cli/ 301 +/references/coverage/coverage_kinesisanalyticsv2 /aws/services/kinesisanalyticsv2/ 301 +/references/coverage/coverage_amplify /aws/services/amplify/ 301 +/user-guide/aws/events /aws/services/events/ 301 +/user-guide/aws/pipes /aws/services/pipes/ 301 +/user-guide/ci/circle-ci /aws/ci-pipelines/circleci/ 301 +/references/network-troubleshooting/transparent-endpoint-injection /aws/customization/networking/transparent-endpoint-injection/ 301 +/references/coverage/coverage_kafka /aws/services/kafka/ 301 +/references/coverage/coverage_servicediscovery /aws/services/servicediscovery/ 301 +/references/coverage/coverage_apigateway /aws/services/apigateway/ 301 +/tutorials /aws/tutorials/ 301 +/references/coverage/coverage_kinesis /aws/services/kinesis/ 301 +/references/coverage/coverage_autoscaling /aws/services/autoscaling/ 301 +/references/coverage/coverage_kms /aws/services/kms/ 301 /applications/step-up-authentication-using-amazon-cognito https://github.com/localstack-samples/sample-cdk-cognito-dynamodb-api-gateway 301 -/references/coverage/coverage_athena /aws/services/athena 301 -/user-guide/aws/mediastore /aws/services/mediastore 301 -/references/coverage/coverage_fis /aws/services/fis 301 -/user-guide/aws/logs /aws/services/logs 301 +/references/coverage/coverage_athena /aws/services/athena/ 301 +/user-guide/aws/mediastore /aws/services/mediastore/ 301 +/references/coverage/coverage_fis /aws/services/fis/ 301 +/user-guide/aws/logs /aws/services/logs/ 301 /academy/localstack-deployment/infra-cloudformation https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=K0OgQ5eq588&feature=youtu.be 301 -/user-guide/cloud-sandbox /aws/developer-tools/cloud-sandbox 301 -/user-guide/localstack-enterprise/ci-analytics /aws/enterprise/ 301 -/aws/enterprise/ci-analytics /aws/enterprise/ 301 -/references/changelog /aws/changelog 301 -/references/credentials /aws/configuration/config/credentials 301 -/references/coverage/coverage_elasticbeanstalk /aws/services/elasticbeanstalk 301 -/user-guide/web-application/instance-management /aws/configuration/web-app/instance-management 301 -/references/coverage/coverage_qldb /aws/services/qldb 301 +/user-guide/cloud-sandbox /aws/developer-tools/cloud-sandbox/ 301 +/user-guide/localstack-enterprise/ci-analytics /aws/customization/other-installations/ 301 +/aws/enterprise/ci-analytics /aws/customization/other-installations/ 301 +/references/changelog /aws/changelog/ 301 +/references/credentials /aws/connecting/credentials/ 301 +/references/coverage/coverage_elasticbeanstalk /aws/services/elasticbeanstalk/ 301 +/user-guide/web-application/instance-management /aws/connecting/console/instance-management/ 301 +/references/coverage/coverage_qldb /aws/services/qldb/ 301 /academy/localstack-deployment/iam-policy-stream https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=TOBLG2Z6xAM&feature=youtu.be 301 -/references/cross-account-access /aws/configuration/config/cross-account-access 301 -/tutorials/reproducible-machine-learning-cloud-pods /aws/tutorials/reproducible-machine-learning-cloud-pods 301 -/references/coverage/coverage_ecs /aws/services/ecs 301 -/references/coverage/coverage_acm /aws/services/acm 301 -/references/coverage/coverage_cloudtrail /aws/services/cloudtrail 301 +/references/cross-account-access /aws/customization/advanced/cross-account-access/ 301 +/tutorials/reproducible-machine-learning-cloud-pods /aws/tutorials/reproducible-machine-learning-cloud-pods/ 301 +/references/coverage/coverage_ecs /aws/services/ecs/ 301 +/references/coverage/coverage_acm /aws/services/acm/ 301 +/references/coverage/coverage_cloudtrail /aws/services/cloudtrail/ 301 /user-guide/aws /aws/services/ 301 -/references/lambda-provider-v2 /aws/services/lambda 301 -/user-guide/web-application/ci-keys /aws/configuration/web-app/ci-keys 301 +/references/lambda-provider-v2 /aws/services/lambda/ 301 +/user-guide/web-application/ci-keys /aws/organizations-admin/ 301 /academy/localstack-deployment/ls-integrations https://www.youtube.com/watch?v=YV0Zs6UNI9I&feature=youtu.be 301 -/references/coverage/coverage_appconfigdata /aws/services/appconfig 301 +/references/coverage/coverage_appconfigdata /aws/services/appconfig/ 301 /applications/serverless-image-resizer-with-aws-lambda-s3-sns-and-ses https://github.com/localstack-samples/sample-serverless-image-resizer-s3-lambda 301 /user-guide/security-testing /aws/developer-tools/security-testing/ 301 -/user-guide/aws/applicationautoscaling /aws/services/application-autoscaling 301 -/user-guide/aws/bedrock /aws/services/bedrock 301 -/user-guide/aws/sts /aws/services/sts 301 -/user-guide/aws/docdb /aws/services/docdb 301 -/user-guide/tools/transparent-endpoint-injection /aws/configuration/networking/transparent-endpoint-injection 301 -/user-guide/aws/account /aws/services/account 301 -/references/coverage/coverage_efs /aws/services/efs 301 -/user-guide/localstack-enterprise /aws/enterprise/ 301 -/getting-started/auth-token /aws/getting-started/auth-token 301 -/user-guide/localstack-enterprise/enterprise-support /aws/enterprise/enterprise-support 301 -/user-guide/aws/support /aws/services/support 301 -/references/coverage/coverage_resourcegroupstaggingapi /aws/services/resource-groups 301 -/references/external-ports /aws/configuration/networking/external-port-range 301 -/references/coverage/coverage_ce /aws/services/ce 301 -/user-guide/extensions/getting-started /aws/configuration/extensions/getting-started 301 +/user-guide/aws/applicationautoscaling /aws/services/application-autoscaling/ 301 +/user-guide/aws/bedrock /aws/services/bedrock/ 301 +/user-guide/aws/sts /aws/services/sts/ 301 +/user-guide/aws/docdb /aws/services/docdb/ 301 +/user-guide/tools/transparent-endpoint-injection /aws/customization/networking/transparent-endpoint-injection/ 301 +/user-guide/aws/account /aws/services/account/ 301 +/references/coverage/coverage_efs /aws/services/efs/ 301 +/user-guide/localstack-enterprise /aws/customization/other-installations/ 301 +/getting-started/auth-token /aws/getting-started/auth-token/ 301 +/user-guide/localstack-enterprise/enterprise-support /aws/customization/other-installations/ 301 +/user-guide/aws/support /aws/services/support/ 301 +/references/coverage/coverage_resourcegroupstaggingapi /aws/services/resource-groups/ 301 +/references/external-ports /aws/customization/networking/external-port-range/ 301 +/references/coverage/coverage_ce /aws/services/ce/ 301 +/user-guide/extensions/getting-started /aws/customization/integrations/extensions/ 301 /references/coverage/coverage_codeartifact /aws/services/codeartifact/ 301 /user-guide/integrations/sdks /aws/connecting/aws-sdks/ 301 -/user-guide/localstack-enterprise/single-sign-on/azure-ad /aws/enterprise/sso/azure-ad 301 -/user-guide/tools/localstack-desktop /aws/configuration/web-app/localstack-desktop 301 -/references/coverage/coverage_es /aws/services/es 301 -/user-guide/integrations/sdks/javascript /aws/connecting/aws-sdks/net/javascript 301 -/references/coverage/coverage_iam /aws/services/iam 301 -/user-guide/tools/localsurf /aws/configuration/localsurf 301 -/user-guide/extensions/extensions-library /aws/configuration/extensions/extensions-library 301 -/tutorials/ecs-ecr-container-app /aws/tutorials/ecs-ecr-container-app 301 -/references/coverage/coverage_elastictranscoder /aws/services/elastictranscoder 301 +/user-guide/localstack-enterprise/single-sign-on/azure-ad /aws/organizations-admin/sso/azure-ad/ 301 +/user-guide/tools/localstack-desktop /aws/developer-tools/running-localstack/localstack-desktop/ 301 +/references/coverage/coverage_es /aws/services/es/ 301 +/user-guide/integrations/sdks/javascript /aws/connecting/aws-sdks/net/javascript/ 301 +/references/coverage/coverage_iam /aws/services/iam/ 301 +/user-guide/tools/localsurf /aws/customization/networking/localsurf/ 301 +/user-guide/extensions/extensions-library /aws/customization/integrations/extensions/extensions-library/ 301 +/tutorials/ecs-ecr-container-app /aws/tutorials/ecs-ecr-container-app/ 301 +/references/coverage/coverage_elastictranscoder /aws/services/elastictranscoder/ 301 /user-guide/aws/feature-coverage /aws/services/ 301 -/user-guide/aws/lambda /aws/services/lambda 301 +/user-guide/aws/lambda /aws/services/lambda/ 301 /references/iam-coverage /aws/developer-tools/security-testing/iam-coverage/ 301 -/user-guide/aws/transfer /aws/services/transfer 301 -/references/coverage/coverage_batch /aws/services/batch 301 -/references/coverage/coverage_neptune /aws/services/neptune 301 +/user-guide/aws/transfer /aws/services/transfer/ 301 +/references/coverage/coverage_batch /aws/services/batch/ 301 +/references/coverage/coverage_neptune /aws/services/neptune/ 301 /applications/temp /aws/sample-apps/ 301 /applications/serverless-container-based-apis-with-amazon-ecs-api-gateway https://github.com/localstack-samples/sample-terraform-ecs-apigateway 301 -/user-guide/aws/s3 /aws/services/s3 301 -/user-guide/lambda-tools/vscode-extension /aws/connecting/ides/vscode-extension 301 +/user-guide/aws/s3 /aws/services/s3/ 301 +/user-guide/lambda-tools/vscode-extension /aws/connecting/ides/vscode-extension/ 301 /user-guide/chaos-engineering /aws/developer-tools/chaos-engineering/ 301 -/persistence/supported /aws/developer-tools/snapshots/persistence 301 -/user-guide/aws/ce /aws/services/ce 301 -/user-guide/aws/kinesisanalyticsv2 /aws/services/kinesisanalyticsv2 301 -/user-guide/state-management/cloud-pods /aws/developer-tools/snapshots/cloud-pods 301 -/references/coverage/coverage_transcribe /aws/services/transcribe 301 -/references/coverage/coverage_mediastore-data /aws/services/mediastore 301 -/user-guide/aws/route53 /aws/services/route53 301 -/user-guide/aws/config /aws/services/config 301 -/references/coverage/coverage_identitystore /aws/services/identitystore 301 -/references/coverage/coverage_codedeploy /aws/services/codedeploy 301 -/user-guide/aws/msk /aws/services/kafka 301 +/persistence/supported /aws/developer-tools/snapshots/persistence/ 301 +/user-guide/aws/ce /aws/services/ce/ 301 +/user-guide/aws/kinesisanalyticsv2 /aws/services/kinesisanalyticsv2/ 301 +/user-guide/state-management/cloud-pods /aws/developer-tools/snapshots/cloud-pods/ 301 +/references/coverage/coverage_transcribe /aws/services/transcribe/ 301 +/references/coverage/coverage_mediastore-data /aws/services/mediastore/ 301 +/user-guide/aws/route53 /aws/services/route53/ 301 +/user-guide/aws/config /aws/services/config/ 301 +/references/coverage/coverage_identitystore /aws/services/identitystore/ 301 +/references/coverage/coverage_codedeploy /aws/services/codedeploy/ 301 +/user-guide/aws/msk /aws/services/kafka/ 301 /user-guide/state-management /aws/developer-tools/snapshots/ 301 /user-guide/integrations/copilot /aws/connecting/infrastructure-as-code/ 301 -/user-guide/integrations/eksctl /aws/integrations/containers/eksctl/ 301 -/getting-started/faq /aws/getting-started/faq 301 -/user-guide/aws/elb /aws/services/elb 301 -/user-guide/integrations/kubernetes /aws/integrations/containers/kubernetes/ 301 -/user-guide/aws/lakeformation /aws/services/lakeformation 301 -/developer-hub /aws/sample-apps 301 -/references/coverage/coverage_firehose /aws/services/firehose 301 -/user-guide/aws/verifiedpermissions /aws/services/verifiedpermissions 301 -/references/coverage/coverage_kinesisanalytics /aws/services/kinesisanalytics 301 -/user-guide/aws/sns /aws/services/sns 301 -/user-guide/tools/aws-replicator /aws/developer-tools/aws-replicator 301 -/user-guide/integrations/serverless-framework /aws/connecting/infrastructure-as-code/serverless-framework 301 -/references/coverage/coverage_sqs /aws/services/sqs 301 -/user-guide/aws/appsync /aws/services/appsync 301 -/tutorials/schema-evolution-glue-msk /aws/tutorials/schema-evolution-glue-msk 301 -/user-guide/ci/bitbucket /aws/integrations/continuous-integration/bitbucket 301 +/user-guide/integrations/eksctl /aws/customization/kubernetes/eksctl/ 301 +/getting-started/faq /aws/getting-started/faq/ 301 +/user-guide/aws/elb /aws/services/elb/ 301 +/user-guide/integrations/kubernetes /aws/customization/kubernetes/ 301 +/user-guide/aws/lakeformation /aws/services/lakeformation/ 301 +/developer-hub /aws/sample-apps/ 301 +/references/coverage/coverage_firehose /aws/services/firehose/ 301 +/user-guide/aws/verifiedpermissions /aws/services/verifiedpermissions/ 301 +/references/coverage/coverage_kinesisanalytics /aws/services/kinesisanalytics/ 301 +/user-guide/aws/sns /aws/services/sns/ 301 +/user-guide/tools/aws-replicator /aws/developer-tools/aws-replicator/ 301 +/user-guide/integrations/serverless-framework /aws/connecting/infrastructure-as-code/serverless-framework/ 301 +/references/coverage/coverage_sqs /aws/services/sqs/ 301 +/user-guide/aws/appsync /aws/services/appsync/ 301 +/tutorials/schema-evolution-glue-msk /aws/tutorials/schema-evolution-glue-msk/ 301 +/user-guide/ci/bitbucket /aws/ci-pipelines/bitbucket/ 301 /contributing https://github.com/localstack/localstack/blob/master/docs/CONTRIBUTING.md 301 -/user-guide/aws/scheduler /aws/services/scheduler 301 -/user-guide/integrations/quarkus /aws/integrations/app-frameworks/quarkus 301 -/user-guide/aws/servicediscovery /aws/services/servicediscovery 301 +/user-guide/aws/scheduler /aws/services/scheduler/ 301 +/user-guide/integrations/quarkus /aws/integrations/app-frameworks/quarkus/ 301 +/user-guide/aws/servicediscovery /aws/services/servicediscovery/ 301 /academy/localstack-101 https://www.youtube.com/playlist?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&si=rKhzdxOJsfO_pgyk 301 -/user-guide/aws/xray /aws/services/xray 301 -/user-guide/aws/pca /aws/services/acm-pca 301 -/user-guide/aws/waf /aws/services/waf 301 +/user-guide/aws/xray /aws/services/xray/ 301 +/user-guide/aws/pca /aws/services/acm-pca/ 301 +/user-guide/aws/waf /aws/services/waf/ 301 /applications/event-driven-architecture-with-amazon-sns-fifo-dynamodb-lambda-and-s3 https://github.com/localstack-samples/sample-sam-sns-fifo-dynamodb-lambda 301 -/user-guide/aws/apigateway /aws/services/apigateway 301 +/user-guide/aws/apigateway /aws/services/apigateway/ 301 /user-guide/integrations/cloud-custodian /aws/connecting/infrastructure-as-code/cloud-custodian/ 301 -/references/coverage/coverage_lambda /aws/services/lambda 301 -/user-guide/integrations/sdks/java /aws/connecting/aws-sdks/net/java 301 -/references/coverage/coverage_logs /aws/services/logs 301 -/references/coverage/coverage_mediastore /aws/services/mediastore 301 -/user-guide/integrations/kafka /aws/integrations/messaging/selfmanaged-kafka-cluster/ 301 -/user-guide/chaos-engineering/fault-injection-service /aws/developer-tools/chaos-engineering/fault-injection-service 301 -/references/logging /aws/configuration/config/logging 301 -/tutorials/java-notification-app /aws/tutorials/java-notification-app 301 +/references/coverage/coverage_lambda /aws/services/lambda/ 301 +/user-guide/integrations/sdks/java /aws/connecting/aws-sdks/net/java/ 301 +/references/coverage/coverage_logs /aws/services/logs/ 301 +/references/coverage/coverage_mediastore /aws/services/mediastore/ 301 +/user-guide/integrations/kafka /aws/customization/integrations/app-frameworks/selfmanaged-kafka-cluster/ 301 +/user-guide/chaos-engineering/fault-injection-service /aws/developer-tools/chaos-engineering/fault-injection-service/ 301 +/references/logging /aws/customization/logging/ 301 +/tutorials/java-notification-app /aws/tutorials/java-notification-app/ 301 /applications/serverless-transcription-application-using-transcribe-s3-lambda-sqs-and-ses https://github.com/localstack-samples/sample-serverless-transcribe 301 -/user-guide/aws/route53resolver /aws/services/route53resolver 301 -/references/coverage/coverage_wafv2 /aws/services/waf 301 -/user-guide/integrations/sdks/cpp /aws/connecting/aws-sdks/net/cpp 301 -/user-guide/integrations/testcontainers /aws/integrations/testing/testcontainers 301 -/references/internal-endpoints /aws/configuration/networking/internal-endpoints 301 -/tutorials/lambda-ecr-container-images /aws/tutorials/lambda-ecr-container-images 301 -/user-guide/aws/fis /aws/services/fis 301 -/user-guide/tools/localstack-docker-extension /aws/configuration/localstack-docker-extension/ 301 -/user-guide/aws/cloudformation /aws/services/cloudformation 301 -/tutorials/route-53-failover /aws/tutorials/route-53-failover 301 -/user-guide/web-application/resource-browser /aws/connecting/console/resource-browser 301 +/user-guide/aws/route53resolver /aws/services/route53resolver/ 301 +/references/coverage/coverage_wafv2 /aws/services/waf/ 301 +/user-guide/integrations/sdks/cpp /aws/connecting/aws-sdks/net/cpp/ 301 +/user-guide/integrations/testcontainers /aws/integrations/testing/testcontainers/ 301 +/references/internal-endpoints /aws/customization/networking/internal-endpoints/ 301 +/tutorials/lambda-ecr-container-images /aws/tutorials/lambda-ecr-container-images/ 301 +/user-guide/aws/fis /aws/services/fis/ 301 +/user-guide/tools/localstack-docker-extension /aws/customization/other-installations/localstack-docker-extension/ 301 +/user-guide/aws/cloudformation /aws/services/cloudformation/ 301 +/tutorials/route-53-failover /aws/tutorials/route-53-failover/ 301 +/user-guide/web-application/resource-browser /aws/connecting/console/resource-browser/ 301 /applications/loan-broker-application-with-aws-step-functions-dynamodb-lambda-sqs-and-sns https://github.com/localstack-samples/sample-loan-broker-stepfunctions-lambda 301 -/references/coverage/coverage_resource-groups /aws/services/resource-groups 301 -/user-guide/state-management/support /aws/developer-tools/snapshots/persistence-coverage 301 -/references/coverage/coverage_redshift /aws/services/redshift 301 +/references/coverage/coverage_resource-groups /aws/services/resource-groups/ 301 +/user-guide/state-management/support /aws/developer-tools/snapshots/persistence-coverage/ 301 +/references/coverage/coverage_redshift /aws/services/redshift/ 301 /user-guide/integrations/lambdatest-hyperexecute /aws/integrations/testing/lambdatest-hyperexecute/ 301 /applications /aws/sample-apps/ 301 -/user-guide/web-application/users-and-licenses /aws/configuration/web-app/users-and-licenses 301 -/user-guide/tools/localstack-sdk /aws/configuration/localstack-sdks/ 301 -/references/coverage/coverage_apigatewaymanagementapi /aws/services/apigateway 301 -/references/coverage/coverage_transfer /aws/services/transfer 301 +/user-guide/web-application/users-and-licenses /aws/organizations-admin/managing-users-licenses/ 301 +/user-guide/tools/localstack-sdk /aws/customization/integrations/localstack-sdks/ 301 +/references/coverage/coverage_apigatewaymanagementapi /aws/services/apigateway/ 301 +/references/coverage/coverage_transfer /aws/services/transfer/ 301 /references/coverage/coverage_codeconnections /aws/services/codeconnections/ 301 -/user-guide/aws/athena /aws/services/athena 301 -/user-guide/extensions/official-extensions /aws/configuration/extensions/official-extensions 301 -/user-guide/aws/textract /aws/services/textract 301 -/tutorials/iam-policy-stream /aws/tutorials/iam-policy-stream 301 -/references/coverage/coverage_ses /aws/services/ses 301 -/tutorials/gitlab_ci_testcontainers /aws/tutorials/gitlab-ci-testcontainers 301 -/user-guide/integrations/aws-sam /aws/connecting/infrastructure-as-code/aws-sam 301 -/user-guide/aws/firehose /aws/services/firehose 301 -/user-guide/web-application /aws/configuration/web-app/ 301 -/references/coverage/coverage_sagemaker /aws/services/sagemaker 301 -/references/arm64-support /aws/configuration/config/arm64-support/ 301 -/user-guide/aws/shield /aws/services/shield 301 -/user-guide/integrations/terraform /aws/connecting/infrastructure-as-code/terraform 301 -/user-guide/aws/es /aws/services/es 301 -/references/coverage/coverage_dms /aws/services/dms 301 -/user-guide/extensions/developing-extensions /aws/configuration/extensions/developing-extensions 301 -/user-guide/security-testing/explainable-iam /aws/developer-tools/security-testing/explainable-iam 301 -/user-guide/aws/ram /aws/services/ram 301 -/references/coverage/coverage_ssm /aws/services/ssm 301 -/references/network-troubleshooting/created-resources /aws/configuration/networking/created-resources 301 -/user-guide/aws/swf /aws/services/swf 301 -/user-guide/ci/github-actions /aws/integrations/continuous-integration/github-actions 301 -/user-guide/aws/serverlessrepo /aws/services/serverlessrepo 301 -/user-guide/aws/sqs /aws/services/sqs 301 -/references/coverage/coverage_ram /aws/services/ram 301 -/user-guide/aws/secretsmanager /aws/services/secretsmanager 301 -/user-guide/web-application/stack-insights /aws/configuration/web-app/stack-insights 301 -/user-guide/aws/autoscaling /aws/services/autoscaling 301 -/references/coverage/coverage_opensearch /aws/services/opensearch 301 +/user-guide/aws/athena /aws/services/athena/ 301 +/user-guide/extensions/official-extensions /aws/customization/integrations/extensions/extensions-library/ 301 +/user-guide/aws/textract /aws/services/textract/ 301 +/tutorials/iam-policy-stream /aws/tutorials/iam-policy-stream/ 301 +/references/coverage/coverage_ses /aws/services/ses/ 301 +/tutorials/gitlab_ci_testcontainers /aws/tutorials/gitlab-ci-testcontainers/ 301 +/user-guide/integrations/aws-sam /aws/connecting/infrastructure-as-code/aws-sam/ 301 +/user-guide/aws/firehose /aws/services/firehose/ 301 +/user-guide/web-application /aws/organizations-admin/ 301 +/references/coverage/coverage_sagemaker /aws/services/sagemaker/ 301 +/references/arm64-support /aws/customization/advanced/arm64-support/ 301 +/user-guide/aws/shield /aws/services/shield/ 301 +/user-guide/integrations/terraform /aws/connecting/infrastructure-as-code/terraform/ 301 +/user-guide/aws/es /aws/services/es/ 301 +/references/coverage/coverage_dms /aws/services/dms/ 301 +/user-guide/extensions/developing-extensions /aws/customization/integrations/extensions/developing-extensions/ 301 +/user-guide/security-testing/explainable-iam /aws/developer-tools/security-testing/explainable-iam/ 301 +/user-guide/aws/ram /aws/services/ram/ 301 +/references/coverage/coverage_ssm /aws/services/ssm/ 301 +/references/network-troubleshooting/created-resources /aws/customization/networking/accessing-resources-created/ 301 +/user-guide/aws/swf /aws/services/swf/ 301 +/user-guide/ci/github-actions /aws/ci-pipelines/github-actions/ 301 +/user-guide/aws/serverlessrepo /aws/services/serverlessrepo/ 301 +/user-guide/aws/sqs /aws/services/sqs/ 301 +/references/coverage/coverage_ram /aws/services/ram/ 301 +/user-guide/aws/secretsmanager /aws/services/secretsmanager/ 301 +/user-guide/web-application/stack-insights /aws/organizations-admin/stack-insights/ 301 +/user-guide/aws/autoscaling /aws/services/autoscaling/ 301 +/references/coverage/coverage_opensearch /aws/services/opensearch/ 301 /academy/localstack-101/cloud-pods https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=InqTdSvxuag&feature=youtu.be 301 -/references/coverage/coverage_emr-serverless /aws/services/emr 301 -/user-guide/aws/cloudwatch /aws/services/cloudwatch 301 -/user-guide/aws/elasticbeanstalk /aws/services/elasticbeanstalk 301 -/references/coverage/coverage_mediaconvert /aws/services/mediaconvert 301 -/user-guide/state-management/launchpad /aws/developer-tools/snapshots/launchpad 301 -/user-guide/ci/codebuild /aws/integrations/continuous-integration/codebuild 301 -/user-guide/aws/iot-data /aws/services/iot-data 301 -/references/coverage/coverage_textract /aws/services/textract 301 -/references/coverage/coverage_codebuild /aws/services/codebuild 301 -/user-guide/aws/elastictranscoder /aws/services/elastictranscoder 301 -/references/coverage/coverage_glacier /aws/services/glacier 301 +/references/coverage/coverage_emr-serverless /aws/services/emr/ 301 +/user-guide/aws/cloudwatch /aws/services/cloudwatch/ 301 +/user-guide/aws/elasticbeanstalk /aws/services/elasticbeanstalk/ 301 +/references/coverage/coverage_mediaconvert /aws/services/mediaconvert/ 301 +/user-guide/state-management/launchpad /aws/developer-tools/snapshots/launchpad/ 301 +/user-guide/ci/codebuild /aws/ci-pipelines/codebuild/ 301 +/user-guide/aws/iot-data /aws/services/iot-data/ 301 +/references/coverage/coverage_textract /aws/services/textract/ 301 +/references/coverage/coverage_codebuild /aws/services/codebuild/ 301 +/user-guide/aws/elastictranscoder /aws/services/elastictranscoder/ 301 +/references/coverage/coverage_glacier /aws/services/glacier/ 301 /user-guide/tools /aws/developer-tools/ 301 -/user-guide/aws/timestream /aws/services/timestream-query 301 -/references/coverage/coverage_pinpoint /aws/services/pinpoint 301 +/user-guide/aws/timestream /aws/services/timestream-query/ 301 +/references/coverage/coverage_pinpoint /aws/services/pinpoint/ 301 /applications/serverless-rds-proxy-with-api-gateway-lambda-and-aurora-rds https://github.com/localstack-samples/sample-serverless-rds-proxy-demo 301 /academy/localstack-101/why-localstack https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=EDGIBpUpYWU&feature=youtu.be 301 -/user-guide/aws/transcribe /aws/services/transcribe 301 -/references/coverage/coverage_cloudformation /aws/services/cloudformation 301 -/references/coverage/coverage_apigatewayv2 /aws/services/apigateway 301 -/user-guide/aws/kinesis /aws/services/kinesis 301 -/references/coverage/coverage_bedrock-runtime /aws/services/bedrock 301 -/references/coverage/coverage_iot-data /aws/services/iot-data 301 -/user-guide/cloud-sandbox/ephemeral-instance /aws/developer-tools/cloud-sandbox/ephemeral-instance 301 -/references/coverage/coverage_timestream-write /aws/services/timestream-query 301 -/user-guide/aws/pinpoint /aws/services/pinpoint 301 -/tutorials/cloud-pods-collaborative-debugging /aws/tutorials/cloud-pods-collaborative-debugging 301 -/references/coverage/coverage_emr /aws/services/emr 301 -/user-guide/aws/iam /aws/services/iam 301 +/user-guide/aws/transcribe /aws/services/transcribe/ 301 +/references/coverage/coverage_cloudformation /aws/services/cloudformation/ 301 +/references/coverage/coverage_apigatewayv2 /aws/services/apigateway/ 301 +/user-guide/aws/kinesis /aws/services/kinesis/ 301 +/references/coverage/coverage_bedrock-runtime /aws/services/bedrock/ 301 +/references/coverage/coverage_iot-data /aws/services/iot-data/ 301 +/user-guide/cloud-sandbox/ephemeral-instance /aws/developer-tools/cloud-sandbox/ephemeral-instance/ 301 +/references/coverage/coverage_timestream-write /aws/services/timestream-query/ 301 +/user-guide/aws/pinpoint /aws/services/pinpoint/ 301 +/tutorials/cloud-pods-collaborative-debugging /aws/tutorials/cloud-pods-collaborative-debugging/ 301 +/references/coverage/coverage_emr /aws/services/emr/ 301 +/user-guide/aws/iam /aws/services/iam/ 301 /academy/localstack-deployment/course-overview https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=XDIat6laW28&feature=youtu.be 301 -/references/coverage/coverage_codepipeline /aws/services/codepipeline 301 +/references/coverage/coverage_codepipeline /aws/services/codepipeline/ 301 /academy/localstack-deployment/infra-terraform https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=lsF3kewOeBU&feature=youtu.be 301 -/references/network-troubleshooting /aws/configuration/networking/ 301 -/user-guide/ci/gitlab-ci /aws/integrations/continuous-integration/gitlab-ci 301 -/user-guide/aws/kms /aws/services/kms 301 -/references/coverage/coverage_stepfunctions /aws/services/stepfunctions 301 -/references/coverage/coverage_sesv2 /aws/services/ses 301 -/references/coverage/coverage_events /aws/services/events 301 -/references/coverage/coverage_timestream-query /aws/services/timestream-query 301 -/references/network-troubleshooting/endpoint-url /aws/configuration/networking/endpoint-url 301 -/tutorials/ephemeral-application-previews /aws/tutorials/ephemeral-application-previews 301 -/user-guide/web-application/accounts /aws/configuration/web-app/accounts 301 -/references/coverage/coverage_appsync /aws/services/appsync 301 -/references/coverage/coverage_ecr /aws/services/ecr 301 +/references/network-troubleshooting /aws/customization/networking/ 301 +/user-guide/ci/gitlab-ci /aws/ci-pipelines/gitlab-ci/ 301 +/user-guide/aws/kms /aws/services/kms/ 301 +/references/coverage/coverage_stepfunctions /aws/services/stepfunctions/ 301 +/references/coverage/coverage_sesv2 /aws/services/ses/ 301 +/references/coverage/coverage_events /aws/services/events/ 301 +/references/coverage/coverage_timestream-query /aws/services/timestream-query/ 301 +/references/network-troubleshooting/endpoint-url /aws/customization/networking/accessing-endpoint-url/ 301 +/tutorials/ephemeral-application-previews /aws/tutorials/ephemeral-application-previews/ 301 +/user-guide/web-application/accounts /aws/organizations-admin/accounts/ 301 +/references/coverage/coverage_appsync /aws/services/appsync/ 301 +/references/coverage/coverage_ecr /aws/services/ecr/ 301 /academy/localstack-deployment https://www.youtube.com/playlist?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&si=R-Ed-JQKOxXP473O 301 -/references/coverage/coverage_application-autoscaling /aws/services/application-autoscaling 301 -/user-guide/lambda-tools/debugging /aws/developer-tools/lambda-tools/debugging 301 +/references/coverage/coverage_application-autoscaling /aws/services/application-autoscaling/ 301 +/user-guide/lambda-tools/debugging /aws/developer-tools/lambda-tools/debugging/ 301 /references/coverage/coverage_codestar-connections /aws/services/codeconnections/ 301 -/user-guide/integrations/rancher-desktop /aws/integrations/containers/rancher-desktop 301 -/user-guide/integrations/sdks/ruby /aws/connecting/aws-sdks/net/ruby 301 -/user-guide/aws/mwaa /aws/services/mwaa 301 +/user-guide/integrations/rancher-desktop /aws/customization/other-installations/rancher-desktop/ 301 +/user-guide/integrations/sdks/ruby /aws/connecting/aws-sdks/net/ruby/ 301 +/user-guide/aws/mwaa /aws/services/mwaa/ 301 /academy/localstack-deployment/deploy-app-ls https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=qIB79b-iw2U&feature=youtu.be 301 -/user-guide/aws/organizations /aws/services/organizations 301 +/user-guide/aws/organizations /aws/services/organizations/ 301 /academy/localstack-deployment/github-action-ls https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=XNh8aSaT9v0&feature=youtu.be 301 -/user-guide/aws/sagemaker /aws/services/sagemaker 301 -/references/configuration /aws/configuration/config/configuration 301 -/user-guide/chaos-engineering/chaos-api /aws/developer-tools/chaos-engineering/chaos-api 301 -/user-guide/aws/glacier /aws/services/glacier 301 -/references/coverage/coverage_qldb-session /aws/services/qldb 301 -/user-guide/integrations/pulumi /aws/connecting/infrastructure-as-code/pulumi 301 -/user-guide/aws/cloudtrail /aws/services/cloudtrail 301 -/references/coverage/coverage_s3 /aws/services/s3 301 -/user-guide/aws/emr /aws/services/emr 301 -/user-guide/tools/dns-server /aws/configuration/dns-server 301 -/user-guide/chaos-engineering/chaos-application-dashboard /aws/developer-tools/chaos-engineering/chaos-application-dashboard 301 -/references/coverage/coverage_route53 /aws/services/route53 301 -/references/coverage/coverage_dynamodbstreams /aws/services/dynamodbstreams 301 -/references/coverage/coverage_dynamodb /aws/services/dynamodb 301 -/user-guide/aws/ec2 /aws/services/ec2 301 +/user-guide/aws/sagemaker /aws/services/sagemaker/ 301 +/references/configuration /aws/customization/configuration-options/ 301 +/user-guide/chaos-engineering/chaos-api /aws/developer-tools/chaos-engineering/chaos-api/ 301 +/user-guide/aws/glacier /aws/services/glacier/ 301 +/references/coverage/coverage_qldb-session /aws/services/qldb/ 301 +/user-guide/integrations/pulumi /aws/connecting/infrastructure-as-code/pulumi/ 301 +/user-guide/aws/cloudtrail /aws/services/cloudtrail/ 301 +/references/coverage/coverage_s3 /aws/services/s3/ 301 +/user-guide/aws/emr /aws/services/emr/ 301 +/user-guide/tools/dns-server /aws/customization/networking/dns-server/ 301 +/user-guide/chaos-engineering/chaos-application-dashboard /aws/developer-tools/chaos-engineering/chaos-application-dashboard/ 301 +/references/coverage/coverage_route53 /aws/services/route53/ 301 +/references/coverage/coverage_dynamodbstreams /aws/services/dynamodbstreams/ 301 +/references/coverage/coverage_dynamodb /aws/services/dynamodb/ 301 +/user-guide/aws/ec2 /aws/services/ec2/ 301 /user-guide/cloud-sandbox/application-previews /aws/developer-tools/cloud-sandbox/app-preview/ 301 -/user-guide/integrations/spring-cloud-function /aws/integrations/app-frameworks/spring-cloud-function 301 -/references/multi-account-setups /aws/configuration/config/multi-account-setups/ 301 -/user-guide/aws/elementalmediaconvert /aws/services/mediaconvert 301 -/references/coverage/coverage_shield /aws/services/shield 301 -/user-guide/aws/dynamodb /aws/services/dynamodb 301 +/user-guide/integrations/spring-cloud-function /aws/integrations/app-frameworks/spring-cloud-function/ 301 +/references/multi-account-setups /aws/customization/advanced/multi-account-setups/ 301 +/user-guide/aws/elementalmediaconvert /aws/services/mediaconvert/ 301 +/references/coverage/coverage_shield /aws/services/shield/ 301 +/user-guide/aws/dynamodb /aws/services/dynamodb/ 301 /aws/tooling/event-studio /aws/developer-tools/app-inspector/ 301 /references/coverage /aws/services/ 301 -/references/coverage/coverage_acm-pca /aws/services/acm-pca 301 -/user-guide/aws/opensearch /aws/services/opensearch 301 -/user-guide/aws/neptune /aws/services/neptune 301 -/user-guide/aws/codepipeline /aws/services/codepipeline 301 -/references/coverage/coverage_docdb /aws/services/docdb 301 -/references/coverage/coverage_appconfig /aws/services/appconfig 301 -/references/coverage/coverage_iot /aws/services/iot 301 -/getting-started/installation /aws/getting-started/installation 301 +/references/coverage/coverage_acm-pca /aws/services/acm-pca/ 301 +/user-guide/aws/opensearch /aws/services/opensearch/ 301 +/user-guide/aws/neptune /aws/services/neptune/ 301 +/user-guide/aws/codepipeline /aws/services/codepipeline/ 301 +/references/coverage/coverage_docdb /aws/services/docdb/ 301 +/references/coverage/coverage_appconfig /aws/services/appconfig/ 301 +/references/coverage/coverage_iot /aws/services/iot/ 301 +/getting-started/installation /aws/getting-started/installation/ 301 /user-guide/integrations/architect /aws/integrations/app-frameworks/architect/ 301 -/user-guide/integrations/gitpod /aws/integrations/containers/gitpod/ 301 -/user-guide/aws/managedblockchain /aws/services/managedblockchain 301 +/user-guide/integrations/gitpod /aws/customization/other-installations/ 301 +/user-guide/aws/managedblockchain /aws/services/managedblockchain/ 301 /applications/query-data-in-s3-bucket-with-amazon-athena-glue-catalog-cloudformation https://github.com/localstack-samples/sample-query-data-s3-athena-glue 301 /academy/localstack-101/web-app-resource-browser https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=SoXtngYp-8k&feature=youtu.be 301 -/user-guide/integrations /aws/integrations/ 301 -/user-guide/aws/codebuild /aws/services/codebuild 301 -/user-guide/aws/ses /aws/services/ses 301 -/references/coverage/coverage_sagemaker-runtime /aws/services/sagemaker 301 +/user-guide/integrations /aws/customization/integrations/ 301 +/user-guide/aws/codebuild /aws/services/codebuild/ 301 +/user-guide/aws/ses /aws/services/ses/ 301 +/references/coverage/coverage_sagemaker-runtime /aws/services/sagemaker/ 301 /applications/messaging-processing-application-with-sqs-dynamodb-and-fargate https://github.com/localstack-samples/sample-cdk-sqs-fargate-dynamodb 301 -/user-guide/aws/mq /aws/services/mq 301 -/user-guide/localstack-enterprise/kubernetes-executor /aws/enterprise/kubernetes-executor 301 -/user-guide/aws/iot /aws/services/iot 301 -/user-guide/aws/backup /aws/services/backup 301 -/references/coverage/coverage_organizations /aws/services/organizations 301 -/user-guide/aws/kinesisanalytics /aws/services/kinesisanalytics 301 -/user-guide/localstack-enterprise/single-sign-on /aws/enterprise/sso 301 -/user-guide/aws/redshift /aws/services/redshift 301 -/references/coverage/coverage_verifiedpermissions /aws/services/verifiedpermissions 301 +/user-guide/aws/mq /aws/services/mq/ 301 +/user-guide/localstack-enterprise/kubernetes-executor /aws/customization/kubernetes/kubernetes-executor/ 301 +/user-guide/aws/iot /aws/services/iot/ 301 +/user-guide/aws/backup /aws/services/backup/ 301 +/references/coverage/coverage_organizations /aws/services/organizations/ 301 +/user-guide/aws/kinesisanalytics /aws/services/kinesisanalytics/ 301 +/user-guide/localstack-enterprise/single-sign-on /aws/organizations-admin/sso/ 301 +/user-guide/aws/redshift /aws/services/redshift/ 301 +/references/coverage/coverage_verifiedpermissions /aws/services/verifiedpermissions/ 301 /academy/localstack-101/full-project-demo https://www.youtube.com/watch?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0&v=cQxg3Dnteyc&feature=youtu.be 301 /applications/full-stack-application-with-aws-lambda-dynamodb-s3-for-shipment-validation https://github.com/localstack-samples/sample-shipment-list-demo-lambda-dynamodb-s3 301 /user-guide/integrations/chalice /aws/connecting/infrastructure-as-code/aws-chalice/ 301 -/user-guide/security-testing/iam-policy-stream /aws/developer-tools/security-testing/iam-policy-stream 301 -/user-guide/security-testing/iam-enforcement /aws/developer-tools/security-testing/iam-enforcement 301 -/references/coverage/coverage_route53resolver /aws/services/route53resolver 301 -/references/coverage/coverage_config /aws/services/config 301 -/references/coverage/coverage_account /aws/services/account 301 -/user-guide/web-application/stack-overview /aws/connecting/console/stack-overview 301 +/user-guide/security-testing/iam-policy-stream /aws/developer-tools/security-testing/iam-policy-stream/ 301 +/user-guide/security-testing/iam-enforcement /aws/developer-tools/security-testing/iam-enforcement/ 301 +/references/coverage/coverage_route53resolver /aws/services/route53resolver/ 301 +/references/coverage/coverage_config /aws/services/config/ 301 +/references/coverage/coverage_account /aws/services/account/ 301 +/user-guide/web-application/stack-overview /aws/connecting/console/stack-overview/ 301 /academy/localstack-deployment/cloud-pods https://www.youtube.com/watch?list=PLTew28KOwGxPdtdW00WNXZLZnstvRQyTF&v=ZJP2xfvwR_g&feature=youtu.be 301 -/user-guide/aws/appconfig /aws/services/appconfig 301 -/user-guide/aws/cognito /aws/services/cognito-idp 301 -/references/coverage/coverage_bedrock /aws/services/bedrock 301 -/user-guide/aws/efs /aws/services/efs 301 -/references/coverage/coverage_rds /aws/services/rds 301 -/references/coverage/coverage_backup /aws/services/backup 301 -/user-guide/aws/rds /aws/services/rds 301 -/user-guide/aws/identitystore /aws/services/identitystore 301 -/references/coverage/coverage_redshift-data /aws/services/redshift 301 -/user-guide/aws/elasticache /aws/services/elasticache 301 -/tutorials/using-terraform-with-testcontainers-and-localstack /aws/tutorials/using-terraform-with-testcontainers-and-localstack 301 -/references/coverage/coverage_cloudfront /aws/services/cloudfront 301 -/user-guide/tools/localstack-sdk/java /aws/user-guide/tools/localstack-sdk/java 301 -/references/network-troubleshooting/readme /aws/configuration/networking/ 301 -/user-guide/aws/codecommit /aws/services/codecommit 301 -/references/coverage/coverage_swf /aws/services/swf 301 -/user-guide/integrations/sdks/go /aws/connecting/aws-sdks/go 301 +/user-guide/aws/appconfig /aws/services/appconfig/ 301 +/user-guide/aws/cognito /aws/services/cognito-idp/ 301 +/references/coverage/coverage_bedrock /aws/services/bedrock/ 301 +/user-guide/aws/efs /aws/services/efs/ 301 +/references/coverage/coverage_rds /aws/services/rds/ 301 +/references/coverage/coverage_backup /aws/services/backup/ 301 +/user-guide/aws/rds /aws/services/rds/ 301 +/user-guide/aws/identitystore /aws/services/identitystore/ 301 +/references/coverage/coverage_redshift-data /aws/services/redshift/ 301 +/user-guide/aws/elasticache /aws/services/elasticache/ 301 +/tutorials/using-terraform-with-testcontainers-and-localstack /aws/tutorials/using-terraform-with-testcontainers-and-localstack/ 301 +/references/coverage/coverage_cloudfront /aws/services/cloudfront/ 301 +/user-guide/tools/localstack-sdk/java /aws/user-guide/tools/localstack-sdk/java/ 301 +/references/network-troubleshooting/readme /aws/customization/networking/ 301 +/user-guide/aws/codecommit /aws/services/codecommit/ 301 +/references/coverage/coverage_swf /aws/services/swf/ 301 +/user-guide/integrations/sdks/go /aws/connecting/aws-sdks/go/ 301 /persistence /aws/developer-tools/snapshots/persistence/ 301 -/references/init-hooks /aws/configuration/config/initialization-hooks/ 301 -/references/coverage/coverage_support /aws/services/support 301 +/references/init-hooks /aws/customization/advanced/initialization-hooks/ 301 +/references/coverage/coverage_support /aws/services/support/ 301 /user-guide /aws/ 301 -/user-guide/aws/qldb /aws/services/qldb 301 -/tutorials/simulating-outages /aws/tutorials/simulating-outages 301 -/user-guide/aws/acm /aws/services/acm 301 -/user-guide/integrations/sdks/php /aws/connecting/aws-sdks/net/php 301 -/references/coverage/coverage_sns /aws/services/sns 301 -/getting-started/help-and-support /aws/getting-started/help-support 301 -/user-guide/aws/amplify /aws/services/amplify 301 -/references/coverage/coverage_lakeformation /aws/services/lakeformation 301 -/user-guide/integrations/sdks/dotnet /aws/connecting/aws-sdks/net/dotnet 301 +/user-guide/aws/qldb /aws/services/qldb/ 301 +/tutorials/simulating-outages /aws/tutorials/simulating-outages/ 301 +/user-guide/aws/acm /aws/services/acm/ 301 +/user-guide/integrations/sdks/php /aws/connecting/aws-sdks/net/php/ 301 +/references/coverage/coverage_sns /aws/services/sns/ 301 +/getting-started/help-and-support /aws/getting-started/help-support/ 301 +/user-guide/aws/amplify /aws/services/amplify/ 301 +/references/coverage/coverage_lakeformation /aws/services/lakeformation/ 301 +/user-guide/integrations/sdks/dotnet /aws/connecting/aws-sdks/net/dotnet/ 301 /academy https://www.youtube.com/playlist?list=PLTew28KOwGxPqbkFiW518eeIfiV495bm0 301 -/references/coverage/coverage_cloudwatch /aws/services/cloudwatch 301 -/user-guide/aws/ecr /aws/services/ecr 301 -/user-guide/aws/stepfunctions /aws/services/stepfunctions 301 -/references/coverage/coverage_elasticache /aws/services/elasticache 301 +/references/coverage/coverage_cloudwatch /aws/services/cloudwatch/ 301 +/user-guide/aws/ecr /aws/services/ecr/ 301 +/user-guide/aws/stepfunctions /aws/services/stepfunctions/ 301 +/references/coverage/coverage_elasticache /aws/services/elasticache/ 301 /applications/mnist-handwritten-digit-recognition-model-running-on-a-local-sagemaker-endpoint https://github.com/localstack-samples/sample-mnist-digit-recognition-sagemaker 301 -/user-guide/state-management/pods-cli /aws/developer-tools/snapshots/cli-commands 301 -/user-guide/aws/dynamodbstreams /aws/services/dynamodbstreams 301 -/references/api-key /aws/getting-started/auth-token/#how-do-i-activate-older-versions-of-localstack-before-v30 301 -/references/coverage/coverage_eks /aws/services/eks 301 -/references/coverage/coverage_cognito-idp /aws/services/cognito-idp 301 -/user-guide/web-application/workspace /aws/configuration/web-app/workspace 301 -/references/coverage/coverage_cloudcontrol /aws/services/cloudcontrol 301 -/tutorials/replicate-aws-resources-localstack-extension /aws/tutorials/replicate-aws-resources-localstack-extension 301 -/user-guide/tools/localstack-sdk/python /aws/configuration/localstack-sdks/python 301 -/user-guide/lambda-tools/hot-reloading /aws/developer-tools/lambda-tools/hot-reloading 301 -/getting-started/quickstart /aws/getting-started/quickstart 301 -/overview /aws 301 -/user-guide/aws/glue /aws/services/glue 301 -/getting-started /aws/getting-started 301 -/user-guide/extensions/managing-extensions /aws/configuration/extensions/managing-extensions 301 -/references/filesystem /aws/configuration/config/filesystem/ 301 -/references /aws/configuration/config/ 301 +/user-guide/state-management/pods-cli /aws/developer-tools/snapshots/cli-commands/ 301 +/user-guide/aws/dynamodbstreams /aws/services/dynamodbstreams/ 301 +/references/api-key /aws/getting-started/auth-token/#how-do-i-activate-older-versions-of-localstack-before-v30/ 301 +/references/coverage/coverage_eks /aws/services/eks/ 301 +/references/coverage/coverage_cognito-idp /aws/services/cognito-idp/ 301 +/user-guide/web-application/workspace /aws/organizations-admin/workspaces/ 301 +/references/coverage/coverage_cloudcontrol /aws/services/cloudcontrol/ 301 +/tutorials/replicate-aws-resources-localstack-extension /aws/tutorials/replicate-aws-resources-localstack-extension/ 301 +/user-guide/tools/localstack-sdk/python /aws/customization/integrations/localstack-sdks/python-sdk/ 301 +/user-guide/lambda-tools/hot-reloading /aws/developer-tools/lambda-tools/hot-reloading/ 301 +/getting-started/quickstart /aws/getting-started/local-development/ 301 +/aws/getting-started/quickstart /aws/getting-started/local-development/ 301 +/overview /aws/ 301 +/user-guide/aws/glue /aws/services/glue/ 301 +/getting-started /aws/getting-started/ 301 +/user-guide/extensions/managing-extensions /aws/customization/integrations/extensions/managing-extensions/ 301 +/references/filesystem /aws/customization/advanced/filesystem/ 301 +/references /aws/customization/ 301 /academy/localstack-101/getting-started https://www.youtube.com/watch?v=CzX4mfiS058&feature=youtu.be 301 /user-guide/materalized-views /snowflake/features/materialized-views/ 301 /user-guide/materalized-views/ /snowflake/features/materialized-views/ 301 /snowflake/features/materalized-views/ /snowflake/features/materialized-views/ 301 -/user-guide/ci /aws/integrations/continuous-integration/ 301 -/user-guide/ci/ /aws/integrations/continuous-integration/ 301 -/aws/user-guide/ci /aws/integrations/continuous-integration/ 301 -/aws/user-guide/ci/ /aws/integrations/continuous-integration/ 301 +/user-guide/ci /aws/ci-pipelines/ 301 +/user-guide/ci/ /aws/ci-pipelines/ 301 +/aws/user-guide/ci /aws/ci-pipelines/ 301 +/aws/user-guide/ci/ /aws/ci-pipelines/ 301 /aws/tooling/lambda-tools/vscode-extension/ /aws/connecting/ides/vscode-extension/ 301 /aws/tooling/lambda-tools/vscode-extension /aws/connecting/ides/vscode-extension/ 301 /aws/capabilities/cloud-sandbox/application-previews/ /aws/developer-tools/cloud-sandbox/app-preview/ 301 @@ -875,159 +877,273 @@ /aws/integrations/aws-native-tools /aws/connecting/ 301 /aws/integrations/infrastructure-as-code/ /aws/connecting/infrastructure-as-code/ 301 /aws/integrations/infrastructure-as-code /aws/connecting/infrastructure-as-code/ 301 -/aws/capabilities/state-management/cli-commands /aws/developer-tools/snapshots/cli-commands 301 -/aws/capabilities/state-management/cli-commands/ /aws/developer-tools/snapshots/cli-commands 301 -/aws/capabilities/state-management/export-import-state /aws/developer-tools/snapshots/export-import-state 301 -/aws/capabilities/state-management/export-import-state/ /aws/developer-tools/snapshots/export-import-state 301 +/aws/capabilities/state-management/cli-commands /aws/developer-tools/snapshots/cli-commands/ 301 +/aws/capabilities/state-management/cli-commands/ /aws/developer-tools/snapshots/cli-commands/ 301 +/aws/capabilities/state-management/export-import-state /aws/developer-tools/snapshots/export-import-state/ 301 +/aws/capabilities/state-management/export-import-state/ /aws/developer-tools/snapshots/export-import-state/ 301 /aws/capabilities/state-management/ /aws/developer-tools/snapshots/ 301 -/aws/capabilities/state-management/launchpad /aws/developer-tools/snapshots/launchpad 301 -/aws/capabilities/state-management/launchpad/ /aws/developer-tools/snapshots/launchpad 301 -/aws/capabilities/state-management/cloud-pods /aws/developer-tools/snapshots/cloud-pods 301 -/aws/capabilities/state-management/cloud-pods/ /aws/developer-tools/snapshots/cloud-pods 301 -/aws/capabilities/state-management/persistence /aws/developer-tools/snapshots/persistence 301 -/aws/capabilities/state-management/persistence/ /aws/developer-tools/snapshots/persistence 301 -/aws/capabilities/cloud-sandbox/app-preview /aws/developer-tools/cloud-sandbox/app-preview 301 -/aws/capabilities/cloud-sandbox/app-preview/ /aws/developer-tools/cloud-sandbox/app-preview 301 -/aws/capabilities/cloud-sandbox/ephemeral-instances /aws/developer-tools/cloud-sandbox/ephemeral-instances 301 -/aws/capabilities/cloud-sandbox/ephemeral-instances/ /aws/developer-tools/cloud-sandbox/ephemeral-instances 301 +/aws/capabilities/state-management/launchpad /aws/developer-tools/snapshots/launchpad/ 301 +/aws/capabilities/state-management/launchpad/ /aws/developer-tools/snapshots/launchpad/ 301 +/aws/capabilities/state-management/cloud-pods /aws/developer-tools/snapshots/cloud-pods/ 301 +/aws/capabilities/state-management/cloud-pods/ /aws/developer-tools/snapshots/cloud-pods/ 301 +/aws/capabilities/state-management/persistence /aws/developer-tools/snapshots/persistence/ 301 +/aws/capabilities/state-management/persistence/ /aws/developer-tools/snapshots/persistence/ 301 +/aws/capabilities/cloud-sandbox/app-preview /aws/developer-tools/cloud-sandbox/app-preview/ 301 +/aws/capabilities/cloud-sandbox/app-preview/ /aws/developer-tools/cloud-sandbox/app-preview/ 301 +/aws/capabilities/cloud-sandbox/ephemeral-instances /aws/developer-tools/cloud-sandbox/ephemeral-instances/ 301 +/aws/capabilities/cloud-sandbox/ephemeral-instances/ /aws/developer-tools/cloud-sandbox/ephemeral-instances/ 301 /aws/capabilities/cloud-sandbox/ /aws/developer-tools/cloud-sandbox/ 301 -/aws/capabilities/chaos-engineering/aws-fault-injection /aws/developer-tools/chaos-engineering/aws-fault-injection 301 -/aws/capabilities/chaos-engineering/aws-fault-injection/ /aws/developer-tools/chaos-engineering/aws-fault-injection 301 -/aws/capabilities/chaos-engineering/chaos-api /aws/developer-tools/chaos-engineering/chaos-api 301 -/aws/capabilities/chaos-engineering/chaos-api/ /aws/developer-tools/chaos-engineering/chaos-api 301 -/aws/capabilities/chaos-engineering/chaos-engineering-dashboard /aws/developer-tools/chaos-engineering/chaos-engineering-dashboard 301 -/aws/capabilities/chaos-engineering/chaos-engineering-dashboard/ /aws/developer-tools/chaos-engineering/chaos-engineering-dashboard 301 +/aws/capabilities/chaos-engineering/aws-fault-injection /aws/developer-tools/chaos-engineering/aws-fault-injection/ 301 +/aws/capabilities/chaos-engineering/aws-fault-injection/ /aws/developer-tools/chaos-engineering/aws-fault-injection/ 301 +/aws/capabilities/chaos-engineering/chaos-api /aws/developer-tools/chaos-engineering/chaos-api/ 301 +/aws/capabilities/chaos-engineering/chaos-api/ /aws/developer-tools/chaos-engineering/chaos-api/ 301 +/aws/capabilities/chaos-engineering/chaos-engineering-dashboard /aws/developer-tools/chaos-engineering/chaos-engineering-dashboard/ 301 +/aws/capabilities/chaos-engineering/chaos-engineering-dashboard/ /aws/developer-tools/chaos-engineering/chaos-engineering-dashboard/ 301 /aws/capabilities/chaos-engineering/ /aws/developer-tools/chaos-engineering/ 301 -/aws/capabilities/security-testing/explainable-iam /aws/developer-tools/security-testing/explainable-iam 301 -/aws/capabilities/security-testing/explainable-iam/ /aws/developer-tools/security-testing/explainable-iam 301 -/aws/capabilities/security-testing/iam-coverage /aws/developer-tools/security-testing/iam-coverage 301 -/aws/capabilities/security-testing/iam-coverage/ /aws/developer-tools/security-testing/iam-coverage 301 -/aws/capabilities/security-testing/iam-policy-enforcement /aws/developer-tools/security-testing/iam-policy-enforcement 301 -/aws/capabilities/security-testing/iam-policy-enforcement/ /aws/developer-tools/security-testing/iam-policy-enforcement 301 -/aws/capabilities/security-testing/iam-policy-stream /aws/developer-tools/security-testing/iam-policy-stream 301 -/aws/capabilities/security-testing/iam-policy-stream/ /aws/developer-tools/security-testing/iam-policy-stream 301 +/aws/capabilities/security-testing/explainable-iam /aws/developer-tools/security-testing/explainable-iam/ 301 +/aws/capabilities/security-testing/explainable-iam/ /aws/developer-tools/security-testing/explainable-iam/ 301 +/aws/capabilities/security-testing/iam-coverage /aws/developer-tools/security-testing/iam-coverage/ 301 +/aws/capabilities/security-testing/iam-coverage/ /aws/developer-tools/security-testing/iam-coverage/ 301 +/aws/capabilities/security-testing/iam-policy-enforcement /aws/developer-tools/security-testing/iam-policy-enforcement/ 301 +/aws/capabilities/security-testing/iam-policy-enforcement/ /aws/developer-tools/security-testing/iam-policy-enforcement/ 301 +/aws/capabilities/security-testing/iam-policy-stream /aws/developer-tools/security-testing/iam-policy-stream/ 301 +/aws/capabilities/security-testing/iam-policy-stream/ /aws/developer-tools/security-testing/iam-policy-stream/ 301 /aws/capabilities/security-testing/ /aws/developer-tools/security-testing/ 301 -/aws/capabilities/security-testing/custom-tls-certificates /aws/developer-tools/security-testing/custom-tls-certificates 301 -/aws/capabilities/security-testing/custom-tls-certificates/ /aws/developer-tools/security-testing/custom-tls-certificates 301 +/aws/capabilities/security-testing/custom-tls-certificates /aws/developer-tools/security-testing/custom-tls-certificates/ 301 +/aws/capabilities/security-testing/custom-tls-certificates/ /aws/developer-tools/security-testing/custom-tls-certificates/ 301 /aws/tooling/lambda-tools/ /aws/developer-tools/lambda-tools/ 301 -/aws/tooling/lambda-tools/hot-reloading /aws/developer-tools/lambda-tools/hot-reloading 301 -/aws/tooling/lambda-tools/hot-reloading/ /aws/developer-tools/lambda-tools/hot-reloading 301 -/aws/tooling/lambda-tools/remote-debugging /aws/developer-tools/lambda-tools/remote-debugging 301 -/aws/tooling/lambda-tools/remote-debugging/ /aws/developer-tools/lambda-tools/remote-debugging 301 -/aws/tooling/localstack-sdks/ /aws/configuration/localstack-sdks/ 301 -/aws/tooling/localstack-sdks/java-sdk /aws/configuration/localstack-sdks/java-sdk 301 -/aws/tooling/localstack-sdks/java-sdk/ /aws/configuration/localstack-sdks/java-sdk 301 -/aws/tooling/localstack-sdks/python-sdk /aws/configuration/localstack-sdks/python-sdk 301 -/aws/tooling/localstack-sdks/python-sdk/ /aws/configuration/localstack-sdks/python-sdk 301 -/aws/tooling/extensions/extensions-library /aws/configuration/extensions/extensions-library 301 -/aws/tooling/extensions/extensions-library/ /aws/configuration/extensions/extensions-library 301 -/aws/tooling/extensions/ /aws/configuration/extensions/ 301 -/aws/tooling/extensions/mailhog /aws/configuration/extensions/mailhog 301 -/aws/tooling/extensions/mailhog/ /aws/configuration/extensions/mailhog 301 -/aws/tooling/extensions/developing-extensions /aws/configuration/extensions/developing-extensions 301 -/aws/tooling/extensions/developing-extensions/ /aws/configuration/extensions/developing-extensions 301 -/aws/tooling/extensions/managing-extensions /aws/configuration/extensions/managing-extensions 301 -/aws/tooling/extensions/managing-extensions/ /aws/configuration/extensions/managing-extensions 301 -/aws/capabilities/web-app/app-inspector /aws/developer-tools/app-inspector 301 -/aws/capabilities/web-app/app-inspector/ /aws/developer-tools/app-inspector 301 -/aws/tooling/aws-replicator /aws/developer-tools/aws-replicator 301 -/aws/tooling/aws-replicator/ /aws/developer-tools/aws-replicator 301 -/aws/tooling/localstack-cli /aws/developer-tools/running-localstack/localstack-cli 301 -/aws/tooling/localstack-cli/ /aws/developer-tools/running-localstack/localstack-cli 301 -/aws/tooling/lstk /aws/developer-tools/running-localstack/lstk 301 -/aws/tooling/lstk/ /aws/developer-tools/running-localstack/lstk 301 -/aws/tooling/mcp-server /aws/developer-tools/running-localstack/mcp-server 301 -/aws/tooling/mcp-server/ /aws/developer-tools/running-localstack/mcp-server 301 -/aws/tooling/dns-server /aws/configuration/dns-server 301 -/aws/tooling/dns-server/ /aws/configuration/dns-server 301 -/aws/tooling/testing-utils /aws/configuration/testing-utils 301 -/aws/tooling/testing-utils/ /aws/configuration/testing-utils 301 -/aws/tooling/localstack-docker-extension /aws/configuration/localstack-docker-extension 301 -/aws/tooling/localstack-docker-extension/ /aws/configuration/localstack-docker-extension 301 -/aws/tooling/localsurf /aws/configuration/localsurf 301 -/aws/tooling/localsurf/ /aws/configuration/localsurf 301 -/aws/tooling /aws/developer-tools 301 +/aws/tooling/lambda-tools/hot-reloading /aws/developer-tools/lambda-tools/hot-reloading/ 301 +/aws/tooling/lambda-tools/hot-reloading/ /aws/developer-tools/lambda-tools/hot-reloading/ 301 +/aws/tooling/lambda-tools/remote-debugging /aws/developer-tools/lambda-tools/remote-debugging/ 301 +/aws/tooling/lambda-tools/remote-debugging/ /aws/developer-tools/lambda-tools/remote-debugging/ 301 +/aws/tooling/localstack-sdks/ /aws/customization/integrations/localstack-sdks/ 301 +/aws/tooling/localstack-sdks/java-sdk /aws/customization/integrations/localstack-sdks/java-sdk/ 301 +/aws/tooling/localstack-sdks/java-sdk/ /aws/customization/integrations/localstack-sdks/java-sdk/ 301 +/aws/tooling/localstack-sdks/python-sdk /aws/customization/integrations/localstack-sdks/python-sdk/ 301 +/aws/tooling/localstack-sdks/python-sdk/ /aws/customization/integrations/localstack-sdks/python-sdk/ 301 +/aws/tooling/extensions/extensions-library /aws/customization/integrations/extensions/extensions-library/ 301 +/aws/tooling/extensions/extensions-library/ /aws/customization/integrations/extensions/extensions-library/ 301 +/aws/tooling/extensions/ /aws/customization/integrations/extensions/ 301 +/aws/tooling/extensions/mailhog /aws/customization/integrations/extensions/mailhog/ 301 +/aws/tooling/extensions/mailhog/ /aws/customization/integrations/extensions/mailhog/ 301 +/aws/tooling/extensions/developing-extensions /aws/customization/integrations/extensions/developing-extensions/ 301 +/aws/tooling/extensions/developing-extensions/ /aws/customization/integrations/extensions/developing-extensions/ 301 +/aws/tooling/extensions/managing-extensions /aws/customization/integrations/extensions/managing-extensions/ 301 +/aws/tooling/extensions/managing-extensions/ /aws/customization/integrations/extensions/managing-extensions/ 301 +/aws/capabilities/web-app/app-inspector /aws/developer-tools/app-inspector/ 301 +/aws/capabilities/web-app/app-inspector/ /aws/developer-tools/app-inspector/ 301 +/aws/tooling/aws-replicator /aws/developer-tools/aws-replicator/ 301 +/aws/tooling/aws-replicator/ /aws/developer-tools/aws-replicator/ 301 +/aws/tooling/localstack-cli /aws/developer-tools/running-localstack/localstack-cli/ 301 +/aws/tooling/localstack-cli/ /aws/developer-tools/running-localstack/localstack-cli/ 301 +/aws/tooling/lstk /aws/developer-tools/running-localstack/lstk/ 301 +/aws/tooling/lstk/ /aws/developer-tools/running-localstack/lstk/ 301 +/aws/tooling/mcp-server /aws/developer-tools/running-localstack/mcp-server/ 301 +/aws/tooling/mcp-server/ /aws/developer-tools/running-localstack/mcp-server/ 301 +/aws/tooling/dns-server /aws/customization/networking/dns-server/ 301 +/aws/tooling/dns-server/ /aws/customization/networking/dns-server/ 301 +/aws/tooling/testing-utils /aws/customization/integrations/localstack-sdks/testing-utils/ 301 +/aws/tooling/testing-utils/ /aws/customization/integrations/localstack-sdks/testing-utils/ 301 +/aws/tooling/localstack-docker-extension /aws/customization/other-installations/localstack-docker-extension/ 301 +/aws/tooling/localstack-docker-extension/ /aws/customization/other-installations/localstack-docker-extension/ 301 +/aws/tooling/localsurf /aws/customization/networking/localsurf/ 301 +/aws/tooling/localsurf/ /aws/customization/networking/localsurf/ 301 +/aws/tooling /aws/developer-tools/ 301 /aws/tooling/ /aws/developer-tools/ 301 -/aws/capabilities /aws/configuration 301 -/aws/capabilities/ /aws/configuration 301 -/aws/capabilities/config /aws/configuration/config 301 -/aws/capabilities/config/ /aws/configuration/config 301 -/aws/capabilities/config/arm64-support /aws/configuration/config/arm64-support 301 -/aws/capabilities/config/arm64-support/ /aws/configuration/config/arm64-support 301 -/aws/capabilities/config/configuration /aws/configuration/config/configuration 301 -/aws/capabilities/config/configuration/ /aws/configuration/config/configuration 301 -/aws/capabilities/config/credentials /aws/configuration/config/credentials 301 -/aws/capabilities/config/credentials/ /aws/configuration/config/credentials 301 -/aws/capabilities/config/cross-account-access /aws/configuration/config/cross-account-access 301 -/aws/capabilities/config/cross-account-access/ /aws/configuration/config/cross-account-access 301 -/aws/capabilities/config/docker-images /aws/configuration/config/docker-images 301 -/aws/capabilities/config/docker-images/ /aws/configuration/config/docker-images 301 -/aws/capabilities/config/filesystem /aws/configuration/config/filesystem 301 -/aws/capabilities/config/filesystem/ /aws/configuration/config/filesystem 301 -/aws/capabilities/config/initialization-hooks /aws/configuration/config/initialization-hooks 301 -/aws/capabilities/config/initialization-hooks/ /aws/configuration/config/initialization-hooks 301 -/aws/capabilities/config/internal-endpoints /aws/configuration/config/internal-endpoints 301 -/aws/capabilities/config/internal-endpoints/ /aws/configuration/config/internal-endpoints 301 -/aws/capabilities/config/logging /aws/configuration/config/logging 301 -/aws/capabilities/config/logging/ /aws/configuration/config/logging 301 -/aws/capabilities/config/multi-account-setups /aws/configuration/config/multi-account-setups 301 -/aws/capabilities/config/multi-account-setups/ /aws/configuration/config/multi-account-setups 301 -/aws/capabilities/config/podman /aws/configuration/config/podman 301 -/aws/capabilities/config/podman/ /aws/configuration/config/podman 301 -/aws/capabilities/config/regions-coverage /aws/configuration/config/regions-coverage 301 -/aws/capabilities/config/regions-coverage/ /aws/configuration/config/regions-coverage 301 -/aws/capabilities/config/usage-tracking /aws/configuration/config/usage-tracking 301 -/aws/capabilities/config/usage-tracking/ /aws/configuration/config/usage-tracking 301 -/aws/capabilities/dns-server /aws/configuration/dns-server 301 -/aws/capabilities/dns-server/ /aws/configuration/dns-server 301 -/aws/capabilities/extensions /aws/configuration/extensions 301 -/aws/capabilities/extensions/ /aws/configuration/extensions 301 -/aws/capabilities/extensions/developing-extensions /aws/configuration/extensions/developing-extensions 301 -/aws/capabilities/extensions/developing-extensions/ /aws/configuration/extensions/developing-extensions 301 -/aws/capabilities/extensions/extensions-library /aws/configuration/extensions/extensions-library 301 -/aws/capabilities/extensions/extensions-library/ /aws/configuration/extensions/extensions-library 301 -/aws/capabilities/extensions/mailhog /aws/configuration/extensions/mailhog 301 -/aws/capabilities/extensions/mailhog/ /aws/configuration/extensions/mailhog 301 -/aws/capabilities/extensions/managing-extensions /aws/configuration/extensions/managing-extensions 301 -/aws/capabilities/extensions/managing-extensions/ /aws/configuration/extensions/managing-extensions 301 -/aws/capabilities/localstack-docker-extension /aws/configuration/localstack-docker-extension 301 -/aws/capabilities/localstack-docker-extension/ /aws/configuration/localstack-docker-extension 301 -/aws/capabilities/localstack-sdks /aws/configuration/localstack-sdks 301 -/aws/capabilities/localstack-sdks/ /aws/configuration/localstack-sdks 301 -/aws/capabilities/localstack-sdks/java-sdk /aws/configuration/localstack-sdks/java-sdk 301 -/aws/capabilities/localstack-sdks/java-sdk/ /aws/configuration/localstack-sdks/java-sdk 301 -/aws/capabilities/localstack-sdks/python-sdk /aws/configuration/localstack-sdks/python-sdk 301 -/aws/capabilities/localstack-sdks/python-sdk/ /aws/configuration/localstack-sdks/python-sdk 301 -/aws/capabilities/localsurf /aws/configuration/localsurf 301 -/aws/capabilities/localsurf/ /aws/configuration/localsurf 301 -/aws/capabilities/networking /aws/configuration/networking 301 -/aws/capabilities/networking/ /aws/configuration/networking 301 -/aws/capabilities/networking/accessing-endpoint-url /aws/configuration/networking/accessing-endpoint-url 301 -/aws/capabilities/networking/accessing-endpoint-url/ /aws/configuration/networking/accessing-endpoint-url 301 -/aws/capabilities/networking/accessing-resources-created /aws/configuration/networking/accessing-resources-created 301 -/aws/capabilities/networking/accessing-resources-created/ /aws/configuration/networking/accessing-resources-created 301 -/aws/capabilities/networking/external-port-range /aws/configuration/networking/external-port-range 301 -/aws/capabilities/networking/external-port-range/ /aws/configuration/networking/external-port-range 301 -/aws/capabilities/networking/https-tls-support /aws/configuration/networking/https-tls-support 301 -/aws/capabilities/networking/https-tls-support/ /aws/configuration/networking/https-tls-support 301 -/aws/capabilities/networking/internal-endpoints /aws/configuration/networking/internal-endpoints 301 -/aws/capabilities/networking/internal-endpoints/ /aws/configuration/networking/internal-endpoints 301 -/aws/capabilities/networking/transparent-endpoint-injection /aws/configuration/networking/transparent-endpoint-injection 301 -/aws/capabilities/networking/transparent-endpoint-injection/ /aws/configuration/networking/transparent-endpoint-injection 301 -/aws/capabilities/testing-utils /aws/configuration/testing-utils 301 -/aws/capabilities/testing-utils/ /aws/configuration/testing-utils 301 -/aws/capabilities/web-app /aws/configuration/web-app 301 -/aws/capabilities/web-app/ /aws/configuration/web-app 301 -/aws/capabilities/web-app/accounts /aws/configuration/web-app/accounts 301 -/aws/capabilities/web-app/accounts/ /aws/configuration/web-app/accounts 301 -/aws/capabilities/web-app/instance-management /aws/configuration/web-app/instance-management 301 -/aws/capabilities/web-app/instance-management/ /aws/configuration/web-app/instance-management 301 -/aws/capabilities/web-app/localstack-desktop /aws/configuration/web-app/localstack-desktop 301 -/aws/capabilities/web-app/localstack-desktop/ /aws/configuration/web-app/localstack-desktop 301 -/aws/capabilities/web-app/managing-users-licenses /aws/configuration/web-app/managing-users-licenses 301 -/aws/capabilities/web-app/managing-users-licenses/ /aws/configuration/web-app/managing-users-licenses 301 -/aws/capabilities/web-app/stack-insights /aws/configuration/web-app/stack-insights 301 -/aws/capabilities/web-app/stack-insights/ /aws/configuration/web-app/stack-insights 301 -/aws/capabilities/web-app/workspaces /aws/configuration/web-app/workspaces 301 -/aws/capabilities/web-app/workspaces/ /aws/configuration/web-app/workspaces 301 +/aws/capabilities /aws/customization/ 301 +/aws/capabilities/ /aws/customization/ 301 +/aws/capabilities/config /aws/customization/ 301 +/aws/capabilities/config/ /aws/customization/ 301 +/aws/capabilities/config/arm64-support /aws/customization/advanced/arm64-support/ 301 +/aws/capabilities/config/arm64-support/ /aws/customization/advanced/arm64-support/ 301 +/aws/capabilities/config/configuration /aws/customization/configuration-options/ 301 +/aws/capabilities/config/configuration/ /aws/customization/configuration-options/ 301 +/aws/capabilities/config/credentials /aws/connecting/credentials/ 301 +/aws/capabilities/config/credentials/ /aws/connecting/credentials/ 301 +/aws/capabilities/config/cross-account-access /aws/customization/advanced/cross-account-access/ 301 +/aws/capabilities/config/cross-account-access/ /aws/customization/advanced/cross-account-access/ 301 +/aws/capabilities/config/docker-images /aws/customization/other-installations/docker-images/ 301 +/aws/capabilities/config/docker-images/ /aws/customization/other-installations/docker-images/ 301 +/aws/capabilities/config/filesystem /aws/customization/advanced/filesystem/ 301 +/aws/capabilities/config/filesystem/ /aws/customization/advanced/filesystem/ 301 +/aws/capabilities/config/initialization-hooks /aws/customization/advanced/initialization-hooks/ 301 +/aws/capabilities/config/initialization-hooks/ /aws/customization/advanced/initialization-hooks/ 301 +/aws/capabilities/config/internal-endpoints /aws/customization/networking/internal-endpoints/ 301 +/aws/capabilities/config/internal-endpoints/ /aws/customization/networking/internal-endpoints/ 301 +/aws/capabilities/config/logging /aws/customization/logging/ 301 +/aws/capabilities/config/logging/ /aws/customization/logging/ 301 +/aws/capabilities/config/multi-account-setups /aws/customization/advanced/multi-account-setups/ 301 +/aws/capabilities/config/multi-account-setups/ /aws/customization/advanced/multi-account-setups/ 301 +/aws/capabilities/config/podman /aws/customization/other-installations/podman/ 301 +/aws/capabilities/config/podman/ /aws/customization/other-installations/podman/ 301 +/aws/capabilities/config/regions-coverage /aws/customization/advanced/regions-coverage/ 301 +/aws/capabilities/config/regions-coverage/ /aws/customization/advanced/regions-coverage/ 301 +/aws/capabilities/config/usage-tracking /aws/customization/advanced/usage-tracking/ 301 +/aws/capabilities/config/usage-tracking/ /aws/customization/advanced/usage-tracking/ 301 +/aws/capabilities/dns-server /aws/customization/networking/dns-server/ 301 +/aws/capabilities/dns-server/ /aws/customization/networking/dns-server/ 301 +/aws/capabilities/extensions /aws/customization/integrations/extensions/ 301 +/aws/capabilities/extensions/ /aws/customization/integrations/extensions/ 301 +/aws/capabilities/localstack-docker-extension /aws/customization/other-installations/localstack-docker-extension/ 301 +/aws/capabilities/localstack-docker-extension/ /aws/customization/other-installations/localstack-docker-extension/ 301 +/aws/capabilities/localstack-sdks /aws/customization/integrations/localstack-sdks/ 301 +/aws/capabilities/localstack-sdks/ /aws/customization/integrations/localstack-sdks/ 301 +/aws/capabilities/localsurf /aws/customization/networking/localsurf/ 301 +/aws/capabilities/localsurf/ /aws/customization/networking/localsurf/ 301 +/aws/capabilities/networking /aws/customization/networking/ 301 +/aws/capabilities/networking/ /aws/customization/networking/ 301 +/aws/capabilities/testing-utils /aws/customization/integrations/localstack-sdks/testing-utils/ 301 +/aws/capabilities/testing-utils/ /aws/customization/integrations/localstack-sdks/testing-utils/ 301 +/aws/capabilities/web-app /aws/organizations-admin/ 301 +/aws/capabilities/web-app/ /aws/organizations-admin/ 301 +/aws/capabilities/web-app/accounts /aws/organizations-admin/accounts/ 301 +/aws/capabilities/web-app/accounts/ /aws/organizations-admin/accounts/ 301 +/aws/capabilities/web-app/instance-management /aws/connecting/console/instance-management/ 301 +/aws/capabilities/web-app/instance-management/ /aws/connecting/console/instance-management/ 301 +/aws/capabilities/web-app/localstack-desktop /aws/developer-tools/running-localstack/localstack-desktop/ 301 +/aws/capabilities/web-app/localstack-desktop/ /aws/developer-tools/running-localstack/localstack-desktop/ 301 +/aws/capabilities/web-app/managing-users-licenses /aws/organizations-admin/managing-users-licenses/ 301 +/aws/capabilities/web-app/managing-users-licenses/ /aws/organizations-admin/managing-users-licenses/ 301 +/aws/capabilities/web-app/stack-insights /aws/organizations-admin/stack-insights/ 301 +/aws/capabilities/web-app/stack-insights/ /aws/organizations-admin/stack-insights/ 301 +/aws/capabilities/web-app/workspaces /aws/organizations-admin/workspaces/ 301 +/aws/capabilities/web-app/workspaces/ /aws/organizations-admin/workspaces/ 301 + +/aws/configuration/networking/* /aws/customization/networking/:splat 301 +/aws/configuration/networking /aws/customization/networking/ 301 +/aws/configuration/config/configuration /aws/customization/configuration-options/ 301 +/aws/configuration/config/logging /aws/customization/logging/ 301 +/aws/configuration/config/arm64-support /aws/customization/advanced/arm64-support/ 301 +/aws/configuration/config/cross-account-access /aws/customization/advanced/cross-account-access/ 301 +/aws/configuration/config/multi-account-setups /aws/customization/advanced/multi-account-setups/ 301 +/aws/configuration/config/filesystem /aws/customization/advanced/filesystem/ 301 +/aws/configuration/config/initialization-hooks /aws/customization/advanced/initialization-hooks/ 301 +/aws/configuration/config/regions-coverage /aws/customization/advanced/regions-coverage/ 301 +/aws/configuration/config/usage-tracking /aws/customization/advanced/usage-tracking/ 301 +/aws/configuration/config/internal-endpoints /aws/customization/networking/internal-endpoints/ 301 +/aws/configuration/config/credentials /aws/connecting/credentials/ 301 +/aws/configuration/config/docker-images /aws/customization/other-installations/docker-images/ 301 +/aws/configuration/config/podman /aws/customization/other-installations/podman/ 301 +/aws/configuration/config /aws/customization/ 301 +/aws/configuration/dns-server /aws/customization/networking/dns-server/ 301 +/aws/configuration/localsurf /aws/customization/networking/localsurf/ 301 +/aws/configuration/testing-utils /aws/customization/integrations/localstack-sdks/testing-utils/ 301 +/aws/configuration/localstack-docker-extension /aws/customization/other-installations/localstack-docker-extension/ 301 +/aws/configuration/localstack-sdks/* /aws/customization/integrations/localstack-sdks/:splat 301 +/aws/configuration/localstack-sdks /aws/customization/integrations/localstack-sdks/ 301 +/aws/configuration/extensions/* /aws/customization/integrations/extensions/:splat 301 +/aws/configuration/extensions /aws/customization/integrations/extensions/ 301 +/aws/configuration/web-app/accounts /aws/organizations-admin/accounts/ 301 +/aws/configuration/web-app/workspaces /aws/organizations-admin/workspaces/ 301 +/aws/configuration/web-app/managing-users-licenses /aws/organizations-admin/managing-users-licenses/ 301 +/aws/configuration/web-app/stack-insights /aws/organizations-admin/stack-insights/ 301 +/aws/configuration/web-app/instance-management /aws/connecting/console/instance-management/ 301 +/aws/configuration/web-app/localstack-desktop /aws/developer-tools/running-localstack/localstack-desktop/ 301 +/aws/configuration/web-app /aws/organizations-admin/ 301 +/aws/configuration /aws/customization/ 301 +/aws/configuration/ /aws/customization/ 301 +/aws/configuration/chaos-engineering/ /aws/developer-tools/chaos-engineering/ 301 +/aws/configuration/chaos-engineering/aws-fault-injection /aws/developer-tools/chaos-engineering/aws-fault-injection/ 301 +/aws/configuration/chaos-engineering/aws-fault-injection/ /aws/developer-tools/chaos-engineering/aws-fault-injection/ 301 +/aws/configuration/chaos-engineering/chaos-api /aws/developer-tools/chaos-engineering/chaos-api/ 301 +/aws/configuration/chaos-engineering/chaos-api/ /aws/developer-tools/chaos-engineering/chaos-api/ 301 +/aws/configuration/chaos-engineering/chaos-engineering-dashboard /aws/developer-tools/chaos-engineering/chaos-engineering-dashboard/ 301 +/aws/configuration/chaos-engineering/chaos-engineering-dashboard/ /aws/developer-tools/chaos-engineering/chaos-engineering-dashboard/ 301 +/aws/configuration/cloud-sandbox/ /aws/developer-tools/cloud-sandbox/ 301 +/aws/configuration/cloud-sandbox/app-preview /aws/developer-tools/cloud-sandbox/app-preview/ 301 +/aws/configuration/cloud-sandbox/app-preview/ /aws/developer-tools/cloud-sandbox/app-preview/ 301 +/aws/configuration/cloud-sandbox/application-previews /aws/developer-tools/cloud-sandbox/app-preview/ 301 +/aws/configuration/cloud-sandbox/application-previews/ /aws/developer-tools/cloud-sandbox/app-preview/ 301 +/aws/configuration/cloud-sandbox/ephemeral-instances /aws/developer-tools/cloud-sandbox/ephemeral-instances/ 301 +/aws/configuration/cloud-sandbox/ephemeral-instances/ /aws/developer-tools/cloud-sandbox/ephemeral-instances/ 301 +/aws/configuration/config/ /aws/customization/ 301 +/aws/configuration/config/arm64-support/ /aws/customization/advanced/arm64-support/ 301 +/aws/configuration/config/configuration/ /aws/customization/configuration-options/ 301 +/aws/configuration/config/credentials/ /aws/connecting/credentials/ 301 +/aws/configuration/config/cross-account-access/ /aws/customization/advanced/cross-account-access/ 301 +/aws/configuration/config/docker-images/ /aws/customization/other-installations/docker-images/ 301 +/aws/configuration/config/filesystem/ /aws/customization/advanced/filesystem/ 301 +/aws/configuration/config/initialization-hooks/ /aws/customization/advanced/initialization-hooks/ 301 +/aws/configuration/config/internal-endpoints/ /aws/customization/networking/internal-endpoints/ 301 +/aws/configuration/config/logging/ /aws/customization/logging/ 301 +/aws/configuration/config/multi-account-setups/ /aws/customization/advanced/multi-account-setups/ 301 +/aws/configuration/config/podman/ /aws/customization/other-installations/podman/ 301 +/aws/configuration/config/regions-coverage/ /aws/customization/advanced/regions-coverage/ 301 +/aws/configuration/config/usage-tracking/ /aws/customization/advanced/usage-tracking/ 301 +/aws/configuration/dns-server/ /aws/customization/networking/dns-server/ 301 +/aws/configuration/extensions/ /aws/customization/integrations/extensions/ 301 +/aws/configuration/localstack-docker-extension/ /aws/customization/other-installations/localstack-docker-extension/ 301 +/aws/configuration/localstack-sdks/ /aws/customization/integrations/localstack-sdks/ 301 +/aws/configuration/localsurf/ /aws/customization/networking/localsurf/ 301 +/aws/configuration/networking/ /aws/customization/networking/ 301 +/aws/configuration/security-testing/ /aws/developer-tools/security-testing/ 301 +/aws/configuration/security-testing/custom-tls-certificates /aws/developer-tools/security-testing/custom-tls-certificates/ 301 +/aws/configuration/security-testing/custom-tls-certificates/ /aws/developer-tools/security-testing/custom-tls-certificates/ 301 +/aws/configuration/security-testing/explainable-iam /aws/developer-tools/security-testing/explainable-iam/ 301 +/aws/configuration/security-testing/explainable-iam/ /aws/developer-tools/security-testing/explainable-iam/ 301 +/aws/configuration/security-testing/iam-coverage /aws/developer-tools/security-testing/iam-coverage/ 301 +/aws/configuration/security-testing/iam-coverage/ /aws/developer-tools/security-testing/iam-coverage/ 301 +/aws/configuration/security-testing/iam-policy-enforcement /aws/developer-tools/security-testing/iam-policy-enforcement/ 301 +/aws/configuration/security-testing/iam-policy-enforcement/ /aws/developer-tools/security-testing/iam-policy-enforcement/ 301 +/aws/configuration/security-testing/iam-policy-stream /aws/developer-tools/security-testing/iam-policy-stream/ 301 +/aws/configuration/security-testing/iam-policy-stream/ /aws/developer-tools/security-testing/iam-policy-stream/ 301 +/aws/configuration/state-management/ /aws/developer-tools/snapshots/ 301 +/aws/configuration/state-management/cli-commands /aws/developer-tools/snapshots/cli-commands/ 301 +/aws/configuration/state-management/cli-commands/ /aws/developer-tools/snapshots/cli-commands/ 301 +/aws/configuration/state-management/cloud-pods /aws/developer-tools/snapshots/cloud-pods/ 301 +/aws/configuration/state-management/cloud-pods/ /aws/developer-tools/snapshots/cloud-pods/ 301 +/aws/configuration/state-management/export-import-state /aws/developer-tools/snapshots/export-import-state/ 301 +/aws/configuration/state-management/export-import-state/ /aws/developer-tools/snapshots/export-import-state/ 301 +/aws/configuration/state-management/launchpad /aws/developer-tools/snapshots/launchpad/ 301 +/aws/configuration/state-management/launchpad/ /aws/developer-tools/snapshots/launchpad/ 301 +/aws/configuration/state-management/persistence /aws/developer-tools/snapshots/persistence/ 301 +/aws/configuration/state-management/persistence/ /aws/developer-tools/snapshots/persistence/ 301 +/aws/configuration/testing-utils/ /aws/customization/integrations/localstack-sdks/testing-utils/ 301 +/aws/configuration/web-app/ /aws/organizations-admin/ 301 +/aws/configuration/web-app/accounts/ /aws/organizations-admin/accounts/ 301 +/aws/configuration/web-app/app-inspector /aws/developer-tools/app-inspector/ 301 +/aws/configuration/web-app/app-inspector/ /aws/developer-tools/app-inspector/ 301 +/aws/configuration/web-app/instance-management/ /aws/connecting/console/instance-management/ 301 +/aws/configuration/web-app/localstack-desktop/ /aws/developer-tools/running-localstack/localstack-desktop/ 301 +/aws/configuration/web-app/managing-users-licenses/ /aws/organizations-admin/managing-users-licenses/ 301 +/aws/configuration/web-app/resource-browser /aws/connecting/console/resource-browser/ 301 +/aws/configuration/web-app/resource-browser/ /aws/connecting/console/resource-browser/ 301 +/aws/configuration/web-app/stack-insights/ /aws/organizations-admin/stack-insights/ 301 +/aws/configuration/web-app/stack-overview /aws/connecting/console/stack-overview/ 301 +/aws/configuration/web-app/stack-overview/ /aws/connecting/console/stack-overview/ 301 +/aws/configuration/web-app/workspaces/ /aws/organizations-admin/workspaces/ 301 + +/aws/enterprise/enterprise-image /aws/customization/other-installations/enterprise-image/ 301 +/aws/enterprise/enterprise-image/ /aws/customization/other-installations/enterprise-image/ 301 +/aws/enterprise /aws/customization/other-installations/ 301 +/aws/enterprise/ /aws/customization/other-installations/ 301 +/aws/enterprise/kubernetes /aws/customization/kubernetes/ 301 +/aws/enterprise/kubernetes/ /aws/customization/kubernetes/ 301 +/aws/enterprise/sso /aws/organizations-admin/sso/ 301 +/aws/enterprise/sso/ /aws/organizations-admin/sso/ 301 +/aws/integrations/containers/devcontainers /aws/customization/other-installations/devcontainers/ 301 +/aws/integrations/containers/devcontainers/ /aws/customization/other-installations/devcontainers/ 301 +/aws/integrations/containers/eksctl /aws/customization/kubernetes/eksctl/ 301 +/aws/integrations/containers/eksctl/ /aws/customization/kubernetes/eksctl/ 301 +/aws/integrations/containers /aws/customization/other-installations/ 301 +/aws/integrations/containers/ /aws/customization/other-installations/ 301 +/aws/integrations/containers/openshift /aws/customization/kubernetes/openshift/ 301 +/aws/integrations/containers/openshift/ /aws/customization/kubernetes/openshift/ 301 +/aws/integrations/containers/rancher-desktop /aws/customization/other-installations/rancher-desktop/ 301 +/aws/integrations/containers/rancher-desktop/ /aws/customization/other-installations/rancher-desktop/ 301 +/aws/integrations/messaging/docker-compose /aws/customization/integrations/app-frameworks/docker-compose/ 301 +/aws/integrations/messaging/docker-compose/ /aws/customization/integrations/app-frameworks/docker-compose/ 301 +/aws/integrations/messaging /aws/customization/integrations/app-frameworks/ 301 +/aws/integrations/messaging/ /aws/customization/integrations/app-frameworks/ 301 +/aws/integrations/messaging/selfmanaged-kafka-cluster /aws/customization/integrations/app-frameworks/selfmanaged-kafka-cluster/ 301 +/aws/integrations/messaging/selfmanaged-kafka-cluster/ /aws/customization/integrations/app-frameworks/selfmanaged-kafka-cluster/ 301 +/aws/integrations/continuous-integration /aws/ci-pipelines/ 301 +/aws/integrations/continuous-integration/ /aws/ci-pipelines/ 301 + +/aws/capabilities/networking/* /aws/customization/networking/:splat 301 +/aws/capabilities/extensions/* /aws/customization/integrations/extensions/:splat 301 +/aws/capabilities/localstack-sdks/* /aws/customization/integrations/localstack-sdks/:splat 301 +/aws/enterprise/kubernetes/* /aws/customization/kubernetes/:splat 301 +/aws/enterprise/sso/* /aws/organizations-admin/sso/:splat 301 +/aws/integrations/continuous-integration/* /aws/ci-pipelines/:splat 301 diff --git a/public/images/aws/localstack-resource-browser.png b/public/images/aws/localstack-resource-browser.png new file mode 100644 index 000000000..a228b2b7e Binary files /dev/null and b/public/images/aws/localstack-resource-browser.png differ diff --git a/public/js/icon-loader.js b/public/js/icon-loader.js index 835a97294..e2d20a348 100644 --- a/public/js/icon-loader.js +++ b/public/js/icon-loader.js @@ -13,9 +13,11 @@ Connecting: 'plug-icon', 'Developer Tools': 'wrench-icon', Capabilities: 'starburst-icon', - Configuration: 'starburst-icon', + Customization: 'starburst-icon', Tooling: 'wrench-icon', + 'CI Pipelines': 'change-icon', Integrations: 'connections-icon', + 'Organizations & Admin': 'users-icon', Enterprise: 'buildings-icon', Tutorials: 'book-icon', Changelog: 'change-icon', @@ -40,7 +42,13 @@ const navElements = []; for (const topLevelNav of topLevelNavs) { - navElements.push(...topLevelNav.querySelectorAll('span')); + for (const span of topLevelNav.querySelectorAll('span')) { + // Only consider labels that belong directly to this top-level list, + // not labels nested inside a collapsed sub-section's own list. + if (span.closest('ul') === topLevelNav) { + navElements.push(span); + } + } } for (const element of navElements) { diff --git a/scripts/generate_extensions_docs.py b/scripts/generate_extensions_docs.py new file mode 100644 index 000000000..392ef721c --- /dev/null +++ b/scripts/generate_extensions_docs.py @@ -0,0 +1,239 @@ +#!/usr/bin/env python3 +""" +Script to auto-generate the LocalStack Official Extensions documentation. + +This script queries the LocalStack Platform API for the list of extensions +available on the marketplace and generates a markdown documentation page with +auto-updating tables of the official and community extensions. + +Usage: + export LOCALSTACK_AUTH_TOKEN=ls-... + python3 scripts/generate_extensions_docs.py + +Requirements: + - A valid LocalStack auth token exposed via the LOCALSTACK_AUTH_TOKEN + environment variable. +""" + +from __future__ import annotations + +import argparse +import base64 +import json +import os +import sys +import urllib.error +import urllib.request +from dataclasses import dataclass +from pathlib import Path + +# Output path for the generated documentation +DEFAULT_OUTPUT_PATH = Path("src/content/docs/aws/tooling/extensions/official-extensions.md") + +# LocalStack Platform API endpoint that returns the extensions marketplace. +MARKETPLACE_URL = "https://api.localstack.cloud/v1/extensions/marketplace" + +REQUEST_TIMEOUT = 30 + + +@dataclass +class Extension: + """Represents a single marketplace extension.""" + + name: str + display_name: str + description: str + author: str + version: str + official: bool + + @classmethod + def from_api(cls, item: dict) -> "Extension": + name = (item.get("name") or "").strip() + return cls( + name=name, + display_name=(item.get("display_name") or name or "Unknown").strip(), + description=(item.get("description") or "").strip() or "No description provided.", + author=(item.get("author") or "Unknown").strip(), + version=(item.get("version") or "").strip() or "—", + official=bool(item.get("official")), + ) + + +def get_auth_token() -> str: + """Read the LocalStack auth token from the environment.""" + token = os.environ.get("LOCALSTACK_AUTH_TOKEN", "").strip() + if not token: + print( + "Error: LOCALSTACK_AUTH_TOKEN is not set. Export a valid LocalStack " + "auth token before running this script.", + file=sys.stderr, + ) + sys.exit(1) + return token + + +def fetch_marketplace(token: str) -> list[Extension]: + """Fetch the marketplace extensions from the LocalStack Platform API.""" + encoded = base64.b64encode(f":{token}".encode()).decode() + request = urllib.request.Request( + MARKETPLACE_URL, + headers={ + "Authorization": f"Basic {encoded}", + "Accept": "application/json", + }, + ) + + try: + with urllib.request.urlopen(request, timeout=REQUEST_TIMEOUT) as response: + payload = json.loads(response.read().decode()) + except urllib.error.HTTPError as exc: + if exc.code in (401, 403): + print( + "Error: Authentication failed when contacting the marketplace API. " + "Ensure LOCALSTACK_AUTH_TOKEN is set correctly.", + file=sys.stderr, + ) + else: + print(f"Error: Marketplace request failed with HTTP {exc.code}.", file=sys.stderr) + sys.exit(1) + except (urllib.error.URLError, TimeoutError) as exc: + print(f"Error: Could not reach the marketplace API: {exc}", file=sys.stderr) + sys.exit(1) + + if not isinstance(payload, list): + print("Error: Unexpected marketplace response format (expected a list).", file=sys.stderr) + sys.exit(1) + + extensions = [ + Extension.from_api(item) + for item in payload + if isinstance(item, dict) and item.get("published", True) + ] + extensions.sort(key=lambda ext: ext.display_name.lower()) + return extensions + + +def _escape_cell(value: str) -> str: + """Escape characters that would break a markdown table cell.""" + return value.replace("|", "\\|").replace("\n", " ").strip() + + +def generate_table(extensions: list[Extension]) -> list[str]: + """Generate a markdown table for a list of extensions.""" + lines = [ + "| Extension | Description | Author | Install |", + "|-----------|-------------|--------|---------|", + ] + for ext in extensions: + name = _escape_cell(ext.display_name) + description = _escape_cell(ext.description) + author = _escape_cell(ext.author) + install = f"`localstack extensions install {ext.name}`" if ext.name else "—" + lines.append(f"| {name} | {description} | {author} | {install} |") + return lines + + +def generate_documentation(extensions: list[Extension]) -> str: + """Generate the complete markdown documentation.""" + official = [ext for ext in extensions if ext.official] + community = [ext for ext in extensions if not ext.official] + + doc_lines = [ + "---", + "title: Official Extensions", + "description: Browse the official and community LocalStack Extensions available on the marketplace.", + "template: doc", + "sidebar:", + " order: 5", + "tags: ['Hobby']", + "---", + "", + "## Introduction", + "", + "The tables below list the extensions currently available on the " + "[LocalStack marketplace](https://app.localstack.cloud/extensions/library), " + "and are kept up to date automatically.", + "", + "You can install any of the extensions below with the LocalStack CLI:", + "", + "```bash", + "localstack extensions install ", + "```", + "", + "See [Managing extensions](/aws/tooling/extensions/managing-extensions) for more details " + "on installing, listing, and removing extensions.", + "", + ":::note", + "This page is auto-generated from the LocalStack marketplace API.", + ":::", + "", + ] + + if official: + doc_lines.extend([ + "## Official Extensions", + "", + "Extensions built and maintained by the LocalStack team.", + "", + ]) + doc_lines.extend(generate_table(official)) + doc_lines.append("") + + if community: + doc_lines.extend([ + "## Community Extensions", + "", + "Extensions contributed and maintained by the LocalStack community and partners.", + "", + ]) + doc_lines.extend(generate_table(community)) + doc_lines.append("") + + return "\n".join(doc_lines) + + +def create_argument_parser() -> argparse.ArgumentParser: + """Create the argument parser for the script.""" + parser = argparse.ArgumentParser( + description="Generate the LocalStack Official Extensions documentation from the marketplace API." + ) + parser.add_argument( + "--output", + "-o", + type=Path, + default=DEFAULT_OUTPUT_PATH, + help=f"Output path for the generated documentation (default: {DEFAULT_OUTPUT_PATH})", + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Print the documentation to stdout instead of writing to file", + ) + return parser + + +def main() -> None: + """Main entry point for the script.""" + parser = create_argument_parser() + args = parser.parse_args() + + token = get_auth_token() + + print("Fetching extensions from the LocalStack marketplace...", file=sys.stderr) + extensions = fetch_marketplace(token) + print(f"Found {len(extensions)} published extensions.", file=sys.stderr) + + print("Generating documentation...", file=sys.stderr) + documentation = generate_documentation(extensions) + + if args.dry_run: + print(documentation) + else: + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(documentation.rstrip() + "\n", encoding="utf-8") + print(f"Documentation written to: {args.output}", file=sys.stderr) + + +if __name__ == "__main__": + main() diff --git a/scripts/redirects/redirects_config.json b/scripts/redirects/redirects_config.json index 6f3580563..6ed8fdf08 100644 --- a/scripts/redirects/redirects_config.json +++ b/scripts/redirects/redirects_config.json @@ -1975,7 +1975,12 @@ }, { "old_link": "/getting-started/quickstart/", - "new_link": "/aws/getting-started/quickstart", + "new_link": "/aws/getting-started/local-development/", + "status_code": 301 + }, + { + "old_link": "/aws/getting-started/quickstart/", + "new_link": "/aws/getting-started/local-development/", "status_code": 301 }, { diff --git a/src/assets/images/CIPipelines_Color.svg b/src/assets/images/CIPipelines_Color.svg new file mode 100644 index 000000000..cf1dedf23 --- /dev/null +++ b/src/assets/images/CIPipelines_Color.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/images/Connecting_Color.svg b/src/assets/images/Connecting_Color.svg new file mode 100644 index 000000000..0bfee5240 --- /dev/null +++ b/src/assets/images/Connecting_Color.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/OrganizationsAdmin_Color.svg b/src/assets/images/OrganizationsAdmin_Color.svg new file mode 100644 index 000000000..99da59e54 --- /dev/null +++ b/src/assets/images/OrganizationsAdmin_Color.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/images/Tutorials_Color.svg b/src/assets/images/Tutorials_Color.svg new file mode 100644 index 000000000..37105ba61 --- /dev/null +++ b/src/assets/images/Tutorials_Color.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/images/users.svg b/src/assets/images/users.svg new file mode 100644 index 000000000..a8025466f --- /dev/null +++ b/src/assets/images/users.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/components/replicator-coverage/ReplicatorCoverage.tsx b/src/components/replicator-coverage/ReplicatorCoverage.tsx index 63cc2d410..184f3812e 100644 --- a/src/components/replicator-coverage/ReplicatorCoverage.tsx +++ b/src/components/replicator-coverage/ReplicatorCoverage.tsx @@ -1,261 +1,433 @@ -import React from 'react'; +import React, { useState } from 'react'; import data from '@/data/replicator/coverage.json'; -import { - Table, - TableHeader, - TableBody, - TableRow, - TableHead, - TableCell, -} from '@/components/ui/table'; -import { - useReactTable, - getCoreRowModel, - flexRender, -} from '@tanstack/react-table'; -import type { ColumnDef, ColumnSizingState } from '@tanstack/react-table'; -import { useTableColumnSizing } from '@/hooks/useTableColumnSizing'; -import { useState } from 'react'; +import { ChevronRight } from 'lucide-react'; -const coverage = Object.values(data); +type ReplicationTypeInfo = { + policy_statements: string[]; + identifier: string | null; +}; -const columns: ColumnDef[] = [ - { - accessorKey: 'resource_type', - header: () => 'Resource Type', - cell: ({ row }) => row.original.resource_type, - size: 150, - minSize: 120, - maxSize: 200, - }, - { - accessorKey: 'service', - header: () => 'Service', - cell: ({ row }) => row.original.service, - size: 120, - minSize: 100, - maxSize: 150, - }, - { - accessorKey: 'identifier', - header: () => 'Identifier', - cell: ({ row }) => row.original.single.identifier, - size: 150, - minSize: 120, - maxSize: 200, +type ResourceTreeInfo = { + resources: string[]; + extra_policy_statements: string[]; +}; + +type ExtraConfigField = { + type: string; + default: unknown; + description: string; +}; + +type ResourceCoverage = { + resource_type: string; + service: string; + single?: ReplicationTypeInfo; + batch?: ReplicationTypeInfo; + resource_tree?: ResourceTreeInfo; + extra_config?: Record; +}; + +const coverage = data as ResourceCoverage[]; + +type StrategyKey = 'single' | 'batch' | 'tree'; + +const STRATEGY_META: Record< + StrategyKey, + { label: string; color: string; description: string } +> = { + single: { + label: 'Single', + color: '#2563eb', + description: 'Replicate one resource at a time by identifier or ARN.', }, - { - accessorKey: 'policy_statements', - header: () => 'Required Actions', - cell: ({ row }) => ( - <> - {row.original.single.policy_statements.map((s: string, i: number) => ( -
{s}
- ))} - - ), - size: 300, - minSize: 200, - maxSize: 500, + batch: { + label: 'Batch', + color: '#7c3aed', + description: 'Discover and replicate many matching resources in one job.', }, - { - id: 'arn_support', - header: () => 'Arn Support', - cell: () => '✔️', - size: 100, - minSize: 80, - maxSize: 120, + tree: { + label: 'Tree', + color: '#0d9488', + description: + 'Use the TREE explore strategy to also replicate related child resources.', }, -]; +}; -export default function ReplicatorCoverage() { - // Use the reusable hook for column sizing - const { columnSizing, setColumnSizing } = useTableColumnSizing(columns); +function StrategyBadge({ + strategy, + active, +}: { + strategy: StrategyKey; + active: boolean; +}) { + const meta = STRATEGY_META[strategy]; + return ( + + {meta.label} + + ); +} - const table = useReactTable({ - data: coverage, - columns, - state: { - columnSizing, - }, - onColumnSizingChange: setColumnSizing, - columnResizeMode: 'onChange', - getCoreRowModel: getCoreRowModel(), - debugTable: false, - }); +function PolicyList({ statements }: { statements: string[] }) { + if (!statements.length) { + return ( + + No additional actions required + + ); + } + return ( +
+ {statements.map((statement) => ( + + {statement} + + ))} +
+ ); +} - // For testing purposes, we can log the column sizing state - // console.log('Column sizing state:', columnSizing); +function Identifier({ value }: { value: string | null }) { + if (!value) { + return ( + None required + ); + } + return ( + + {value} + + ); +} - // Add CSS for resizer - const resizerStyle = ` - .resizer { - position: absolute; - right: 0; - top: 0; - height: 100%; - width: 5px; - background: rgba(0, 0, 0, 0.1); - cursor: col-resize; - user-select: none; - touch-action: none; - } - .resizer.isResizing { - background: rgba(0, 0, 0, 0.2); - opacity: 1; - } - @media (hover: hover) { - .resizer { - opacity: 0; - } - *:hover > .resizer { - opacity: 1; - } - } - `; +function DetailSection({ + strategy, + children, +}: { + strategy: StrategyKey; + children: React.ReactNode; +}) { + const meta = STRATEGY_META[strategy]; + return ( +
+
+ + + {meta.description} + +
+ {children} +
+ ); +} + +function Field({ label, children }: { label: string; children: React.ReactNode }) { + return ( +
+
+ {label} +
+ {children} +
+ ); +} +function ResourceDetails({ resource }: { resource: ResourceCoverage }) { return ( -
- -
- + {resource.single && ( + + + + + + + + + )} + + {resource.batch && ( + + + + + + + + + )} + + {resource.resource_tree && ( + + +
+ {resource.resource_tree.resources.map((r) => ( + + {r} + + ))} +
+
+ + + +
+ )} + + {resource.extra_config && ( + + +
+ {Object.entries(resource.extra_config).map(([name, field]) => ( +
+ + {name} + {' '} + + ({field.type} + {field.default !== null && field.default !== undefined + ? `, default: ${JSON.stringify(field.default)}` + : ''} + ) + +
{field.description}
+
+ ))} +
+
+
+ )} + + ); +} + +export default function ReplicatorCoverage() { + const [expanded, setExpanded] = useState>({}); + + const toggle = (resourceType: string) => + setExpanded((prev) => ({ ...prev, [resourceType]: !prev[resourceType] })); + + return ( +
+
+ {(Object.keys(STRATEGY_META) as StrategyKey[]).map((key) => ( + + + {STRATEGY_META[key].description} + + ))} +
+ +
+
- - {table.getHeaderGroups().map((headerGroup) => ( - - {headerGroup.headers.map((header) => { - const meta = header.column.columnDef.meta as - | { className?: string } - | undefined; - - const getColumnWidth = (columnId: string) => { - switch (columnId) { - case 'resource_type': - return '20%'; - case 'service': - return '15%'; - case 'identifier': - return '20%'; - case 'policy_statements': - return '35%'; - case 'arn_support': - return '10%'; - default: - return 'auto'; - } - }; - - return ( - - {flexRender( - header.column.columnDef.header, - header.getContext() - )} - {header.column.getCanResize() && ( -
- )} -
- ); - })} -
- ))} -
- - {table.getRowModel().rows.map((row) => ( - - {row.getVisibleCells().map((cell) => { - const meta = cell.column.columnDef.meta as - | { className?: string } - | undefined; - - const getColumnWidth = (columnId: string) => { - switch (columnId) { - case 'resource_type': - return '20%'; - case 'service': - return '15%'; - case 'identifier': - return '20%'; - case 'policy_statements': - return '35%'; - case 'arn_support': - return '10%'; - default: - return 'auto'; - } - }; - - return ( - - {flexRender( - cell.column.columnDef.cell, - cell.getContext() - )} - - ); - })} - - ))} - -
+
+ + {coverage.map((resource, idx) => { + const isOpen = !!expanded[resource.resource_type]; + return ( +
+ + {isOpen && } +
+ ); + })}
); } - -// Testing instructions: -// 1. Verify that the table expands to 100% width of its container -// 2. Check that columns maintain their widths during pagination -// 3. Test with different viewport sizes to ensure responsive behavior -// 4. Try resizing columns to ensure the resize functionality works -// 5. Verify that content in cells is properly displayed with ellipsis for overflow diff --git a/src/content/docs/aws/integrations/continuous-integration/bitbucket.md b/src/content/docs/aws/ci-pipelines/bitbucket.md similarity index 100% rename from src/content/docs/aws/integrations/continuous-integration/bitbucket.md rename to src/content/docs/aws/ci-pipelines/bitbucket.md diff --git a/src/content/docs/aws/integrations/continuous-integration/circleci.md b/src/content/docs/aws/ci-pipelines/circleci.md similarity index 99% rename from src/content/docs/aws/integrations/continuous-integration/circleci.md rename to src/content/docs/aws/ci-pipelines/circleci.md index 38534133c..f304bbd80 100644 --- a/src/content/docs/aws/integrations/continuous-integration/circleci.md +++ b/src/content/docs/aws/ci-pipelines/circleci.md @@ -92,7 +92,7 @@ workflows: To configure LocalStack use the `environment` key on the job level or a shell command, where the latter takes higher precedence. -Read more about the [configuration options](/aws/configuration/config/configuration) of LocalStack. +Read more about the [configuration options](/aws/customization/configuration-options) of LocalStack. #### Job level diff --git a/src/content/docs/aws/integrations/continuous-integration/codebuild.md b/src/content/docs/aws/ci-pipelines/codebuild.md similarity index 98% rename from src/content/docs/aws/integrations/continuous-integration/codebuild.md rename to src/content/docs/aws/ci-pipelines/codebuild.md index ce63c923f..f4e7060e8 100644 --- a/src/content/docs/aws/integrations/continuous-integration/codebuild.md +++ b/src/content/docs/aws/ci-pipelines/codebuild.md @@ -56,7 +56,7 @@ phases: ### Configuration -Get know more about the LocalStack [config options](/aws/configuration/config/configuration). +Get know more about the LocalStack [config options](/aws/customization/configuration-options). #### Native Runner diff --git a/src/content/docs/aws/integrations/continuous-integration/github-actions.md b/src/content/docs/aws/ci-pipelines/github-actions.md similarity index 100% rename from src/content/docs/aws/integrations/continuous-integration/github-actions.md rename to src/content/docs/aws/ci-pipelines/github-actions.md diff --git a/src/content/docs/aws/integrations/continuous-integration/gitlab-ci.md b/src/content/docs/aws/ci-pipelines/gitlab-ci.md similarity index 100% rename from src/content/docs/aws/integrations/continuous-integration/gitlab-ci.md rename to src/content/docs/aws/ci-pipelines/gitlab-ci.md diff --git a/src/content/docs/aws/integrations/continuous-integration/index.md b/src/content/docs/aws/ci-pipelines/index.md similarity index 100% rename from src/content/docs/aws/integrations/continuous-integration/index.md rename to src/content/docs/aws/ci-pipelines/index.md diff --git a/src/content/docs/aws/integrations/continuous-integration/travis-ci.md b/src/content/docs/aws/ci-pipelines/travis-ci.md similarity index 100% rename from src/content/docs/aws/integrations/continuous-integration/travis-ci.md rename to src/content/docs/aws/ci-pipelines/travis-ci.md diff --git a/src/content/docs/aws/configuration/config/index.md b/src/content/docs/aws/configuration/config/index.md deleted file mode 100644 index 363d4bbcd..000000000 --- a/src/content/docs/aws/configuration/config/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Overview -description: This section describes the configuration options available for LocalStack, and how to configure them to suit your needs. -template: doc ---- - -LocalStack offers configuration options for customizing how services behave, how components interact, and how your local cloud environment is initialized. - -This section explains key configuration mechanisms (including environment variables, configuration files, and runtime hooks) along with internal features that let you adapt LocalStack to fit a variety of development and testing scenarios. - -The diagram below provides a high-level overview of what’s covered. - -![Understanding LocalStack configuration](/images/aws/understanding-localstack-overview.png) diff --git a/src/content/docs/aws/configuration/config/internal-endpoints.md b/src/content/docs/aws/configuration/config/internal-endpoints.md deleted file mode 100644 index 9ad73a3fe..000000000 --- a/src/content/docs/aws/configuration/config/internal-endpoints.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Internal Endpoints -description: Overview of LocalStack and AWS specific internal endpoints for local development and testing -template: doc ---- - -LocalStack provides several internal endpoints for various local AWS services and LocalStack-specific features. -These endpoints are not part of the official AWS API and are available in the `/_localstack` and `/_aws` paths. -You can use [curl](https://curl.se/) or your favourite HTTP REST client to access endpoints. - -You can start your LocalStack instance and go to [http://localhost.localstack.cloud:4566/\_localstack/swagger](http://localhost.localstack.cloud:4566/_localstack/swagger) -to browse the Swagger UI, visualize and interact with all the API's resources implemented in LocalStack. - -### LocalStack endpoints - -The API path for the LocalStack internal resources is `/_localstack`. -Several endpoints are available under this path. -For instance, `/_localstack/health` checks the available and running AWS services in LocalStack while -`/_localstack/diagnose` (enable with the `DEBUG=1` configuration variable), reports extensive and sensitive data from -the LocalStack instance. - -:::note -You can use the `/_localstack/health` endpoint to restart or kill the services. -You can use [curl](https://curl.se/) or your HTTP REST client to access the endpoint: - -```bash -curl -v --request POST --header "Content-Type: application/json" --data '{"action":"restart"}' http://localhost.localstack.cloud:4566/_localstack/health -curl -v --request POST --header "Content-Type: application/json" --data '{"action":"kill"}' http://localhost.localstack.cloud:4566/_localstack/health -``` - -::: - -### AWS endpoints - -The API path for the AWS internal resources is `/_aws`. -These endpoints offer LocalStack-specific features in addition to the ones offered by the AWS services. -For instance, `/aws/services/sqs/messages` conveniently access all messages within a SQS queue, without deleting them. diff --git a/src/content/docs/aws/configuration/index.mdx b/src/content/docs/aws/configuration/index.mdx deleted file mode 100644 index ed3684e56..000000000 --- a/src/content/docs/aws/configuration/index.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Overview -description: Configure your LocalStack installation in various ways, including configuration options, networking, SDKs, and extensions. -template: doc -editUrl: false -sidebar: - order: 5 ---- - -import SectionCards from '../../../../components/SectionCards.astro'; - -LocalStack provides a number of configuration options and supporting tools that help you set up and manage your local cloud environment. - -It brings together the configuration options that control LocalStack's behavior, networking setup for reaching your services, the LocalStack Web App, the LocalStack SDKs for programmatic access, and the extensions mechanism for adding new functionality. - -You will also find guides for several standalone tools: the [DNS Server](/aws/configuration/dns-server), [Testing Utils](/aws/configuration/testing-utils), the [LocalStack Docker Extension](/aws/configuration/localstack-docker-extension), and [LocalSurf](/aws/configuration/localsurf). - - diff --git a/src/content/docs/aws/configuration/web-app/index.md b/src/content/docs/aws/configuration/web-app/index.md deleted file mode 100644 index 823b15c5b..000000000 --- a/src/content/docs/aws/configuration/web-app/index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Overview -description: The LocalStack web app allows you to access additional features of LocalStack as well as to manage subscription and licenses, workspace members and permissions. -template: doc -sidebar: - order: 1 ---- - -The [LocalStack Web Application](https://app.localstack.cloud/) provides a visual interface for managing your LocalStack account and platform features. - -From here, you can handle subscriptions and licenses, explore your local cloud environment with the Resource Browser, enable powerful features like Cloud Pods and Extensions, view Stack Insights, and more. All in one place. diff --git a/src/content/docs/aws/connecting/aws-sdks/dotnet.md b/src/content/docs/aws/connecting/aws-sdks/dotnet.md index 3faa8eda3..590a70873 100644 --- a/src/content/docs/aws/connecting/aws-sdks/dotnet.md +++ b/src/content/docs/aws/connecting/aws-sdks/dotnet.md @@ -133,7 +133,7 @@ var amazonS3Client = session.CreateClientByImplementation(); If you are building cloud-native applications with [Aspire](https://aspire.dev/), LocalStack provides first-class integration through the Aspire orchestration framework. The [`LocalStack.Aspire.Hosting`](https://github.com/localstack-dotnet/dotnet-aspire-for-localstack) package enables seamless local development with automatic container lifecycle management, service discovery, and observability integration. -For detailed guidance on using LocalStack with Aspire, including configuration options and example projects, see the [Aspire integration guide](/aws/integrations/app-frameworks/aspire). +For detailed guidance on using LocalStack with Aspire, including configuration options and example projects, see the [Aspire integration guide](/aws/customization/integrations/app-frameworks/aspire). ## Resources diff --git a/src/content/docs/aws/connecting/aws-sdks/index.mdx b/src/content/docs/aws/connecting/aws-sdks/index.mdx index c338ea3f9..f9941bed0 100644 --- a/src/content/docs/aws/connecting/aws-sdks/index.mdx +++ b/src/content/docs/aws/connecting/aws-sdks/index.mdx @@ -21,7 +21,7 @@ To connect to LocalStack services using AWS SDKs, you can use one of the followi This can also be specified using a [profile or an environment variable](https://docs.aws.amazon.com/sdkref/latest/guide/feature-ss-endpoints.html). - **Transparent endpoint injection (recommended):** Connect to LocalStack services without modifying your application code. Transparent endpoint injection uses the integrated DNS server to resolve AWS API calls to target LocalStack. - Refer to the [Transparent Endpoint Injection](/aws/configuration/networking/transparent-endpoint-injection/) guide for more information. + Refer to the [Transparent Endpoint Injection](/aws/customization/networking/transparent-endpoint-injection/) guide for more information. ## Supported SDKs diff --git a/src/content/docs/aws/connecting/aws-sdks/python-boto3.md b/src/content/docs/aws/connecting/aws-sdks/python-boto3.md index 4ba1d6ab9..0900ad786 100644 --- a/src/content/docs/aws/connecting/aws-sdks/python-boto3.md +++ b/src/content/docs/aws/connecting/aws-sdks/python-boto3.md @@ -29,7 +29,7 @@ if __name__ == "__main__": :::note -If you're connecting from within a Python **Lambda function** handler in LocalStack, you can create a default client without configuring the `endpoint_url` - LocalStack will automatically forward the invocations to the local API endpoints (available in Pro, see [here](/aws/configuration/networking/transparent-endpoint-injection) for more details). +If you're connecting from within a Python **Lambda function** handler in LocalStack, you can create a default client without configuring the `endpoint_url` - LocalStack will automatically forward the invocations to the local API endpoints (available in Pro, see [here](/aws/customization/networking/transparent-endpoint-injection) for more details). ::: ```python diff --git a/src/content/docs/aws/configuration/web-app/instance-management.md b/src/content/docs/aws/connecting/console/instance-management.md similarity index 75% rename from src/content/docs/aws/configuration/web-app/instance-management.md rename to src/content/docs/aws/connecting/console/instance-management.md index f10d180a2..e769ea7e2 100644 --- a/src/content/docs/aws/configuration/web-app/instance-management.md +++ b/src/content/docs/aws/connecting/console/instance-management.md @@ -3,22 +3,24 @@ title: Instance Management description: Instance Management allows you to view and manage your LocalStack instances through the LocalStack Web Application alongside other auxiliary features. template: doc sidebar: - order: 6 + order: 2 tags: ["Hobby"] --- ## Introduction -LocalStack Instance Management lets you view and manage your LocalStack instances while you build and test your cloud applications locally. -You can access this feature through the [**LocalStack Instances**](https://app.localstack.cloud/instances) section in the sidebar of the LocalStack Web Application. +Once your LocalStack instance is running, the [LocalStack Web Application](https://app.localstack.cloud/) is the primary way to access and inspect it from your browser, the local equivalent of opening the AWS Console. **Instance Management** is where you first connect to a running instance and see everything it exposes. -Instance Management offers these features: +You can access it through the [**LocalStack Instances**](https://app.localstack.cloud/instances) section in the sidebar of the LocalStack Web Application. + +From here you can view and manage your LocalStack instances while you build and test your cloud applications locally. Instance Management offers these features: - **Overview**: Shows the stack details of your LocalStack instances. - **Status**: Shows the status of the services running in the LocalStack container. - **Resource Browser**: Lets you view and manage your local AWS resources. - **State**: Allows you to export and import the state of your LocalStack instances. - **IAM Policy Stream**: Provides a stream of IAM policies corresponding to the AWS API calls. +- **App Inspector**: Provides insight into the state of your running application, including data payloads and IAM policy evaluation. - **Chaos Engineering**: Allows you to inject failures & simulate outages in your LocalStack instance. - **Extensions**: Provides extra integrations to improve your LocalStack experience. @@ -50,6 +52,6 @@ Tools like [simpleproxy](https://manpages.ubuntu.com/manpages/trusty/man1/simple Alternatively, you can direct `localhost.localstack.cloud` to your target machine's IP address by modifying the `/etc/hosts` file, which is useful if you’re using the LocalStack Web UI on a macOS or Linux-based machine. :::note -To bind to a custom IP address and port, configure the ['GATEWAY_LISTEN' configuration variable](/aws/configuration/config/configuration/#core). -For troubleshooting, refer to the [network troubleshooting docs](/aws/configuration/networking/). +To bind to a custom IP address and port, configure the ['GATEWAY_LISTEN' configuration variable](/aws/customization/configuration-options/#core). +For troubleshooting, refer to the [network troubleshooting docs](/aws/customization/networking/). ::: \ No newline at end of file diff --git a/src/content/docs/aws/connecting/console/resource-browser.md b/src/content/docs/aws/connecting/console/resource-browser.md index 790f8d38c..95193c43b 100644 --- a/src/content/docs/aws/connecting/console/resource-browser.md +++ b/src/content/docs/aws/connecting/console/resource-browser.md @@ -16,7 +16,7 @@ It provides an internal, integrated experience, similar to the AWS Management Co The Resource Browser provide an experience similar to the AWS Management Console. However, the Resource Browser is not a replacement for the AWS Management Console and only replicate some of the features of the AWS Management Console. -We recommend using our [integrations](/aws/integrations/) to create your resources, with the Resource Browser being used for quick viewing and management of your resources. +We recommend using our [integrations](/aws/customization/integrations/) to create your resources, with the Resource Browser being used for quick viewing and management of your resources. The LocalStack Web Application connects to your LocalStack container and retrieves the information about your local resources directly via `localhost` without using the internet. None of the information is sent to the internet, or stored on any external servers maintained by LocalStack. diff --git a/src/content/docs/aws/configuration/config/credentials.md b/src/content/docs/aws/connecting/credentials.md similarity index 95% rename from src/content/docs/aws/configuration/config/credentials.md rename to src/content/docs/aws/connecting/credentials.md index 78dc76586..01e8a0dfd 100644 --- a/src/content/docs/aws/configuration/config/credentials.md +++ b/src/content/docs/aws/connecting/credentials.md @@ -8,7 +8,7 @@ Like AWS, LocalStack requires AWS credentials to be supplied in all API operatio ## Access Key ID -For root accounts, the choice of access key ID affects [multi-account namespacing](/aws/configuration/config/multi-account-setups). +For root accounts, the choice of access key ID affects [multi-account namespacing](/aws/customization/advanced/multi-account-setups). Access key IDs can be one of following patterns: diff --git a/src/content/docs/aws/connecting/ides/vscode-extension.md b/src/content/docs/aws/connecting/ides/vscode-extension.md index 0cdb09d53..df6151523 100644 --- a/src/content/docs/aws/connecting/ides/vscode-extension.md +++ b/src/content/docs/aws/connecting/ides/vscode-extension.md @@ -21,7 +21,7 @@ The setup wizard ensures LocalStack is installed and configured for a seamless i LocalStack can be installed either locally for the current user or globally for all users. -You can [start using LocalStack for free by signing up for a free account](https://app.localstack.cloud/sign-up?plan=free) or signing into an existing one. The setup wizard facilitates this process and configures your authentication token required to start LocalStack. +You can [start using LocalStack for free by signing up for a free account](https://www.localstack.cloud/pricing) or signing into an existing one. The setup wizard facilitates this process and configures your authentication token required to start LocalStack. The LocalStack Toolkit integrates seamlessly with AWS tools like the [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html). It automatically configures a dedicated `localstack` AWS profile in your `.aws/config` and `.aws/credentials` files, if one is not already present. diff --git a/src/content/docs/aws/connecting/infrastructure-as-code/serverless-framework.md b/src/content/docs/aws/connecting/infrastructure-as-code/serverless-framework.md index 3535aace6..8c45ec9ea 100644 --- a/src/content/docs/aws/connecting/infrastructure-as-code/serverless-framework.md +++ b/src/content/docs/aws/connecting/infrastructure-as-code/serverless-framework.md @@ -125,7 +125,7 @@ else: ... ``` -In LocalStack for AWS, no code changes are required using our [Transparent Endpoint Injection](/aws/configuration/networking/transparent-endpoint-injection). +In LocalStack for AWS, no code changes are required using our [Transparent Endpoint Injection](/aws/customization/networking/transparent-endpoint-injection). ## Deploying to LocalStack diff --git a/src/content/docs/aws/configuration/config/arm64-support.md b/src/content/docs/aws/customization/advanced/arm64-support.md similarity index 97% rename from src/content/docs/aws/configuration/config/arm64-support.md rename to src/content/docs/aws/customization/advanced/arm64-support.md index 1fe8cdb46..f07b7f765 100644 --- a/src/content/docs/aws/configuration/config/arm64-support.md +++ b/src/content/docs/aws/customization/advanced/arm64-support.md @@ -1,6 +1,8 @@ --- title: ARM64 Support description: Running LocalStack on ARM64 CPUs +sidebar: + order: 2 --- ## Introduction @@ -32,7 +34,7 @@ Since LocalStack 2.0, Lambda functions execute in Docker containers with th depending on the [instruction set architecture](https://docs.aws.amazon.com/lambda/latest/dg/foundation-arch.html) configured for the function (`x86_64` by default or `arm64`). This behavior can lead to errors if the host system, the Docker image, or the code/layer of the function do not support the target architecture. -If you prefer to execute Lambda functions on your native platform architecture, you can set the [Lambda configuration](https://docs.localstack.cloud/aws/configuration/config/configuration/#lambda) variable to `LAMBDA_IGNORE_ARCHITECTURE=1`. +If you prefer to execute Lambda functions on your native platform architecture, you can set the [Lambda configuration](https://docs.localstack.cloud/aws/customization/configuration-options/#lambda) variable to `LAMBDA_IGNORE_ARCHITECTURE=1`. Example scenario: I have an amd64 machine and want to run a an arm64 Lambda function. I know that the Lambda function runs on both architectures (i.e., no architecture specific code or dependencies). Host systems with [multi-architecture support](https://docs.docker.com/build/building/multi-platform/) can run containers for different Linux architectures using emulation. diff --git a/src/content/docs/aws/configuration/config/cross-account-access.md b/src/content/docs/aws/customization/advanced/cross-account-access.md similarity index 97% rename from src/content/docs/aws/configuration/config/cross-account-access.md rename to src/content/docs/aws/customization/advanced/cross-account-access.md index 35366ac63..32bd17afb 100644 --- a/src/content/docs/aws/configuration/config/cross-account-access.md +++ b/src/content/docs/aws/customization/advanced/cross-account-access.md @@ -1,6 +1,8 @@ --- title: 'Cross-Account and Cross-Region Access' description: Accessing resources in another account or region +sidebar: + order: 3 --- ## Introduction @@ -59,7 +61,7 @@ The full list of resources and operations that allow cross-account access are li :::tip LocalStack does not enforce IAM for cross-account access by default. -Use the `ENFORCE_IAM` [configuration](/aws/configuration/config/configuration#iam) option to enable it. +Use the `ENFORCE_IAM` [configuration](/aws/customization/configuration-options#iam) option to enable it. ::: ### EC2 Peering diff --git a/src/content/docs/aws/configuration/config/filesystem.mdx b/src/content/docs/aws/customization/advanced/filesystem.mdx similarity index 95% rename from src/content/docs/aws/configuration/config/filesystem.mdx rename to src/content/docs/aws/customization/advanced/filesystem.mdx index 5d19eb217..cd00e0833 100644 --- a/src/content/docs/aws/configuration/config/filesystem.mdx +++ b/src/content/docs/aws/customization/advanced/filesystem.mdx @@ -1,7 +1,9 @@ --- title: Filesystem Layout -description: Overview of runtime directory structure +description: Understanding the runtime directory layout LocalStack uses internally template: doc +sidebar: + order: 5 --- import { FileTree } from '@astrojs/starlight/components'; @@ -46,7 +48,7 @@ LocalStack uses following directory layout when running within a container. ### Configuration - `/etc/localstack`: configuration directory -- `/etc/localstack/init`: root directory for [initialization hooks](/aws/configuration/config/initialization-hooks) +- `/etc/localstack/init`: root directory for [initialization hooks](/aws/customization/advanced/initialization-hooks) ### Static libraries diff --git a/src/content/docs/aws/customization/advanced/index.mdx b/src/content/docs/aws/customization/advanced/index.mdx new file mode 100644 index 000000000..e6f82bc04 --- /dev/null +++ b/src/content/docs/aws/customization/advanced/index.mdx @@ -0,0 +1,17 @@ +--- +title: Overview +description: Tailor LocalStack for complex setups using power-user features. +template: doc +editUrl: false +sidebar: + order: 1 +--- + +import SectionCards from '../../../../../components/SectionCards.astro'; + +LocalStack offers power-user features for tailoring the emulator for complex environments. Most users will not need to understand these features, but they are useful when you have complex requirements or are integrating LocalStack into a larger system. + + diff --git a/src/content/docs/aws/configuration/config/initialization-hooks.mdx b/src/content/docs/aws/customization/advanced/initialization-hooks.mdx similarity index 96% rename from src/content/docs/aws/configuration/config/initialization-hooks.mdx rename to src/content/docs/aws/customization/advanced/initialization-hooks.mdx index 7cc05be91..7f592dfc3 100644 --- a/src/content/docs/aws/configuration/config/initialization-hooks.mdx +++ b/src/content/docs/aws/customization/advanced/initialization-hooks.mdx @@ -3,6 +3,8 @@ title: Initialization Hooks description: Writing shell or Python scripts to customize or initialize your LocalStack instance. template: doc tags: ["Hobby"] +sidebar: + order: 6 --- import { Tabs, TabItem, FileTree } from '@astrojs/starlight/components'; @@ -34,7 +36,7 @@ All except `boot.d` will be run in the same Python interpreter as LocalStack, wh You can also use subdirectories to organize your init scripts. Currently, known script extensions are `.sh` and `.py`. -Additionally, with the installation of the `localstack-extension-terraform-init` [extension](/aws/configuration/extensions/), `.tf` files can also be supported. +Additionally, with the installation of the `localstack-extension-terraform-init` [extension](/aws/customization/integrations/extensions/), `.tf` files can also be supported. Shell scripts have to be executable, and have to have a [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) (usually `#!/bin/bash`). A script can be in one of four states: `UNKNOWN`, `RUNNING`, `SUCCESSFUL`, `ERROR`. @@ -165,7 +167,7 @@ Another use for init hooks can be seen when [adding custom TLS certificates to L ### Terraform Files as Init Hooks Running Terraform configuration files as init hooks requires the installation of a special extension. -For more information on how to manage [LocalStack extensions](/aws/configuration/extensions/), please refer to the dedicated documentation page, +For more information on how to manage [LocalStack extensions](/aws/customization/integrations/extensions/), please refer to the dedicated documentation page, and for more details on running init hooks in development mode, you can check out the [extension repository description](https://github.com/localstack/localstack-extensions/tree/main/terraform-init). Start LocalStack with **`EXTENSION_AUTO_INSTALL="localstack-extension-terraform-init"`**. @@ -258,4 +260,4 @@ If you are having issues with your initialization hooks not being executed, plea * If your script does not show up in the list of discovered init scripts, please check your Docker volume mount. Most likely the scripts are not properly mounted into the Docker container. * Are resources not being created? - * Ensure that AWS [credentials](/aws/configuration/config/credentials) are set, e.g. through `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables. + * Ensure that AWS [credentials](/aws/connecting/credentials) are set, e.g. through `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables. diff --git a/src/content/docs/aws/configuration/config/multi-account-setups.md b/src/content/docs/aws/customization/advanced/multi-account-setups.md similarity index 95% rename from src/content/docs/aws/configuration/config/multi-account-setups.md rename to src/content/docs/aws/customization/advanced/multi-account-setups.md index aafc13e74..edecce812 100644 --- a/src/content/docs/aws/configuration/config/multi-account-setups.md +++ b/src/content/docs/aws/customization/advanced/multi-account-setups.md @@ -2,6 +2,8 @@ title: Multi-Account Setups description: Using LocalStack in multi-tenant setups template: doc +sidebar: + order: 4 --- :::note @@ -12,7 +14,7 @@ Please open a [GitHub Discussion](https://github.com/orgs/localstack/discussions LocalStack ships with multi-account support which allows namespacing based on AWS account ID. LocalStack uses the value in the AWS Access Key ID field for the purpose of namespacing over account ID. -For more information, see [Credentials](/aws/configuration/config/credentials). +For more information, see [Credentials](/aws/connecting/credentials). The Access Key ID field can be configured in the AWS CLI in multiple ways: please refer to [AWS CLI documentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-precedence). diff --git a/src/content/docs/aws/configuration/config/regions-coverage.md b/src/content/docs/aws/customization/advanced/regions-coverage.md similarity index 96% rename from src/content/docs/aws/configuration/config/regions-coverage.md rename to src/content/docs/aws/customization/advanced/regions-coverage.md index 87d55411f..f5dfa252f 100644 --- a/src/content/docs/aws/configuration/config/regions-coverage.md +++ b/src/content/docs/aws/customization/advanced/regions-coverage.md @@ -1,6 +1,8 @@ --- title: "Regions Coverage" -description: "This page lists the AWS Region Coverage for LocalStack's emulation of AWS services." +description: "Understanding the Region Coverage for LocalStack's emulation of AWS services." +sidebar: + order: 7 --- ## Introduction diff --git a/src/content/docs/aws/configuration/config/usage-tracking.md b/src/content/docs/aws/customization/advanced/usage-tracking.md similarity index 95% rename from src/content/docs/aws/configuration/config/usage-tracking.md rename to src/content/docs/aws/customization/advanced/usage-tracking.md index 5e59b4bcb..45e5364d1 100644 --- a/src/content/docs/aws/configuration/config/usage-tracking.md +++ b/src/content/docs/aws/customization/advanced/usage-tracking.md @@ -1,7 +1,9 @@ --- title: Usage Tracking -description: Understand what data LocalStack collects and how you can opt out of usage tracking +description: Understanding what data LocalStack collects and how you can opt out of usage tracking template: doc +sidebar: + order: 8 --- ## Overview @@ -12,7 +14,7 @@ It is tracked regardless of whether the user disables event tracking since we co ## LocalStack usage statistics -For Pro users, most of the information is collected to populate the [Stack Insights](/aws/configuration/web-app/stack-insights) dashboard. +For Pro users, most of the information is collected to populate the [Stack Insights](/aws/organizations-admin/stack-insights) dashboard. Collecting basic anonymized usage of AWS services helps us better direct engineering efforts to services that are used the most or cause the most issues. ### Session information diff --git a/src/content/docs/aws/configuration/config/configuration.md b/src/content/docs/aws/customization/configuration-options.md similarity index 97% rename from src/content/docs/aws/configuration/config/configuration.md rename to src/content/docs/aws/customization/configuration-options.md index 9ad76f33d..7b915a7c8 100644 --- a/src/content/docs/aws/configuration/config/configuration.md +++ b/src/content/docs/aws/customization/configuration-options.md @@ -1,6 +1,6 @@ --- title: Configuration -description: Overview of configuration options in LocalStack. +description: Set the environment variables and flags that change how LocalStack starts and runs. template: doc --- @@ -31,16 +31,16 @@ Options that affect the core LocalStack system. | `LOCALSTACK_HOST`| `localhost.localstack.cloud:4566` (default) | This is interpolated into URLs and addresses that are returned by LocalStack. It has the form `:`. | | `GATEWAY_LISTEN` | `0.0.0.0:4566` (default in Docker mode), `127.0.0.1:4566` (default in host mode) | Configures the bind addresses of LocalStack. It has the form `:(,:)*`. LocalStack for AWS adds port `443`. | | `USE_SSL` | `0` (default) | Whether to return URLs using HTTP (`0`) or HTTPS (`1`). Changed with 3.0.0. In earlier versions this was toggling SSL support on or off. | -| `PERSISTENCE` | `0` (default) | Enable persistence. See [Persistence Mechanism](/aws/developer-tools/snapshots/persistence) and [Filesystem Layout](/aws/configuration/config/filesystem). | +| `PERSISTENCE` | `0` (default) | Enable persistence. See [Persistence Mechanism](/aws/developer-tools/snapshots/persistence) and [Filesystem Layout](/aws/customization/advanced/filesystem). | | `MAIN_CONTAINER_NAME` | `localstack-main` (default) | Specify the main docker container name | | `LS_LOG` | `trace`, `trace-internal`, `debug`, `info`, `warn`, `error`, `warning`| Specify the log level. Currently overrides the `DEBUG` configuration. `trace` for detailed request/response, `trace-internal` for internal calls, too. | -| `EXTERNAL_SERVICE_PORTS_START` | `4510` (default) | Start of the [External Service Port Range](/aws/configuration/networking/external-port-range) (inclusive). | -| `EXTERNAL_SERVICE_PORTS_END` | `4560` (default) | End of the [External Service Port Range](/aws/configuration/networking/external-port-range) (exclusive). | +| `EXTERNAL_SERVICE_PORTS_START` | `4510` (default) | Start of the [External Service Port Range](/aws/customization/networking/external-port-range) (inclusive). | +| `EXTERNAL_SERVICE_PORTS_END` | `4560` (default) | End of the [External Service Port Range](/aws/customization/networking/external-port-range) (exclusive). | | `EAGER_SERVICE_LOADING` | `0` (default) \|`1` | Boolean that toggles lazy loading of services. If eager loading is enabled, services are started at LocalStack startup rather than their first use. Be aware that eager loading increases the LocalStack startup time. | -| `SERVICES`| `s3,sqs` | A comma-delimited string of services. Check the [internal health endpoint](/aws/configuration/networking/internal-endpoints#localstack-endpoints) `/_localstack/health` for valid service names. If `SERVICES` is set LocalStack will only load the listed services. All other services will be disabled and cannot be used. | +| `SERVICES`| `s3,sqs` | A comma-delimited string of services. Check the [internal health endpoint](/aws/customization/networking/internal-endpoints#localstack-endpoints) `/_localstack/health` for valid service names. If `SERVICES` is set LocalStack will only load the listed services. All other services will be disabled and cannot be used. | | `ALLOW_NONSTANDARD_REGIONS` | `0` (default) | Allows the use of non-standard AWS regions. By default, LocalStack only accepts [standard AWS regions](https://docs.aws.amazon.com/general/latest/gr/rande.html). | | `PARITY_AWS_ACCESS_KEY_ID` | `0` (default) | Enables the use production-like access key IDs. By default, LocalStack issues keys with `LSIA...` and `LKIA...` prefix, and will reject keys that start with `ASIA...` or `AKIA...`. | -| `LOCALSTACK_RESPONSE_HEADER_ENABLED` | `1` (default) \| `0` | Whether LocalStack adds the [`x-localstack` response header](/aws/configuration/networking/internal-endpoints#x-localstack-response-header) to every AWS API response. The header value is the LocalStack version and lets client tools detect LocalStack and its version. | +| `LOCALSTACK_RESPONSE_HEADER_ENABLED` | `1` (default) \| `0` | Whether LocalStack adds the [`x-localstack` response header](/aws/customization/networking/internal-endpoints#x-localstack-response-header) to every AWS API response. The header value is the LocalStack version and lets client tools detect LocalStack and its version. | ## CLI @@ -48,7 +48,7 @@ These options are applicable when using the CLI to start LocalStack. | Variable | Example Values | Description | | - | - | - | -| `LOCALSTACK_VOLUME_DIR` | `~/.cache/localstack/volume` (on Linux) | The location on the host of the LocalStack volume directory mount. See [Filesystem Layout](/aws/configuration/config/filesystem#using-the-cli) | +| `LOCALSTACK_VOLUME_DIR` | `~/.cache/localstack/volume` (on Linux) | The location on the host of the LocalStack volume directory mount. See [Filesystem Layout](/aws/customization/advanced/filesystem#using-the-cli) | | `CONFIG_PROFILE` | | The configuration profile to load. See [Profiles](#profiles) | | `CONFIG_DIR` | `~/.localstack` | The path where LocalStack can find configuration profiles and other CLI-specific configuration | @@ -262,8 +262,8 @@ Please consult the [migration guide](/aws/services/lambda#migrating-to-lambda-v2 | `BUCKET_MARKER_LOCAL` | `hot-reload` (default) | Magic S3 bucket name for [Hot Reloading](/aws/developer-tools/lambda-tools/hot-reloading). The S3Key points to the source code on the local file system. | | `HOSTNAME_FROM_LAMBDA` | `localstack` | Endpoint host under which APIs are accessible from Lambda containers (optional). This can be useful in docker-compose stacks to use the local container hostname if neither IP address nor container name of the main container are available (e.g., in CI). Often used in combination with `LAMBDA_DOCKER_NETWORK`.| | `LAMBDA_DISABLE_AWS_ENDPOINT_URL` | `0` (default) \| `1` | Whether to disable injecting the environment variable `AWS_ENDPOINT_URL`, which automatically configures [supported AWS SDKs](https://docs.aws.amazon.com/sdkref/latest/guide/feature-ss-endpoints.html). | -| `LAMBDA_DISABLE_JAVA_SDK_V2_CERTIFICATE_VALIDATION` | `1` (default) | Whether to disable the certificate name validation for [AWS Java SDK v2](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) calls when using [transparent endpoint injection](/aws/configuration/networking/transparent-endpoint-injection).| -| `LAMBDA_DOCKER_DNS` | `""` (default) | Optional custom DNS server for the container running your Lambda function. Overwrites the default LocalStack [DNS Server](/aws/configuration/dns-server). Hence, resolving `localhost.localstack.cloud` requires additional configuration. | +| `LAMBDA_DISABLE_JAVA_SDK_V2_CERTIFICATE_VALIDATION` | `1` (default) | Whether to disable the certificate name validation for [AWS Java SDK v2](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) calls when using [transparent endpoint injection](/aws/customization/networking/transparent-endpoint-injection).| +| `LAMBDA_DOCKER_DNS` | `""` (default) | Optional custom DNS server for the container running your Lambda function. Overwrites the default LocalStack [DNS Server](/aws/customization/networking/dns-server). Hence, resolving `localhost.localstack.cloud` requires additional configuration. | | `LAMBDA_DOCKER_FLAGS` | `-e KEY=VALUE`, `-v host:container`, `-p host:container`, `--add-host domain:ip` | Additional flags passed to Docker `run`\|`create` commands. Supports environment variables (also with `--env-file`, but the file has to be mounted into the LocalStack container), ports, volume mounts, extra hosts, networks, DNS servers, labels, ulimits, user, platform, and privileged mode. The `--env-file` argument for Docker `run` and Docker Compose have different feature sets. To provide both, we support the `--env-file` for environment files with the docker run syntax, while `--compose-env-file` supports the full docker compose features, like placeholders with `${}`, replacing quotes, etc. | | `LAMBDA_DOCKER_NETWORK` | `bridge` (Docker default) | [Docker network driver](https://docs.docker.com/network/) for the Lambda and ECS containers. Needs to be set to the network the LocalStack container is connected to. Limitation: `host` mode currently not supported. | | `LAMBDA_DOWNLOAD_AWS_LAYERS` | `1` (default, pro) | Whether to download public Lambda layers from AWS through a LocalStack proxy when creating or updating functions. | @@ -415,8 +415,8 @@ To learn more about these configuration options, see [Cloud Pods](/aws/developer | Variable | Example Values | Description | | - | - | - | -| `EXTENSION_AUTO_INSTALL` | | Install a list of extensions automatically at startup. Comma-separated list of extensions directives which will be installed automatically at startup (see [managing extensions](/aws/configuration/extensions/managing-extensions#automating-extensions-installation))| -| `EXTENSION_DEV_MODE` | `0` (default) \| `1` | Enables development mode for extensions. Refer to the [Extensions Development Guide](/aws/configuration/extensions/developing-extensions) for more information. | +| `EXTENSION_AUTO_INSTALL` | | Install a list of extensions automatically at startup. Comma-separated list of extensions directives which will be installed automatically at startup (see [managing extensions](/aws/customization/integrations/extensions/managing-extensions#automating-extensions-installation))| +| `EXTENSION_DEV_MODE` | `0` (default) \| `1` | Enables development mode for extensions. Refer to the [Extensions Development Guide](/aws/customization/integrations/extensions/developing-extensions) for more information. | ## Miscellaneous @@ -442,21 +442,21 @@ To learn more about these configuration options, see [Cloud Pods](/aws/developer ## DNS -To learn more about these configuration options, see [DNS Server](/aws/configuration/dns-server). +To learn more about these configuration options, see [DNS Server](/aws/customization/networking/dns-server). | Variable | Example Values | Description | | - | - | - | | `DNS_ADDRESS` | `0.0.0.0` (default) | Address the LocalStack should bind the DNS server on (port 53 tcp/udp). Value `0` to disable. | `DNS_SERVER` | Default upstream DNS or `8.8.8.8` (default) | Fallback DNS server for queries not handled by LocalStack. | `DNS_RESOLVE_IP` | `127.0.0.1` (default) | IP address the DNS server should return as A record for queries handled by LocalStack. If customized, this value will be returned in preference to the DNS server response. -| `DNS_NAME_PATTERNS_TO_RESOLVE_UPSTREAM` | `([^.]+\.)*(ecr\|lambda)\.[^.]+\.amazonaws\.com` (example) | List of domain names that should *NOT* be redirected by the LocalStack DNS to the LocalStack container, but instead always forwarded to the upstream resolver. This will *NOT* redirect requests made to LocalStack due to manual endpoint configuration. Comma-separated list of Python-flavored regex patterns. See [the DNS server documentation](/aws/configuration/dns-server#skip-localstack-dns-resolution) for more details. +| `DNS_NAME_PATTERNS_TO_RESOLVE_UPSTREAM` | `([^.]+\.)*(ecr\|lambda)\.[^.]+\.amazonaws\.com` (example) | List of domain names that should *NOT* be redirected by the LocalStack DNS to the LocalStack container, but instead always forwarded to the upstream resolver. This will *NOT* redirect requests made to LocalStack due to manual endpoint configuration. Comma-separated list of Python-flavored regex patterns. See [the DNS server documentation](/aws/customization/networking/dns-server#skip-localstack-dns-resolution) for more details. | `DNS_LOCAL_NAME_PATTERNS` | `([^.]+\.)*(ecr\|lambda)\.[^.]+\.amazonaws\.com` (example) | **Deprecated since 3.0.2** List of domain names that should *NOT* be redirected by the LocalStack DNS to the LocalStack container, but instead always forwarded to the upstream resolver. This will *NOT* redirect requests made to LocalStack due to manual endpoint configuration. Comma-separated list of Python-flavored regex patterns. **Renamed to `DNS_NAME_PATTERNS_TO_RESOLVE_UPSTREAM`** ## Transparent Endpoint Injection | Variable | Example Values | Description | | - | - | - | -| `DISABLE_TRANSPARENT_ENDPOINT_INJECTION` | `0` (default in Pro) \| `1` | Whether to disable DNS resolution of AWS hostnames to the LocalStack container. Pro feature. (see [Transparent Endpoint Injection](/aws/configuration/networking/transparent-endpoint-injection)) +| `DISABLE_TRANSPARENT_ENDPOINT_INJECTION` | `0` (default in Pro) \| `1` | Whether to disable DNS resolution of AWS hostnames to the LocalStack container. Pro feature. (see [Transparent Endpoint Injection](/aws/customization/networking/transparent-endpoint-injection)) ## LocalStack for AWS @@ -464,7 +464,7 @@ To learn more about these configuration options, see [DNS Server](/aws/configura |----------------------|----------------|-------------| | `ACTIVATE_PRO` | `0` \| `1` (default) | Whether Pro should be activated or not. This is set to true by default if using the `localstack/localstack-pro` container image. If set to `1`, LocalStack will fail to start if the license key activation did not work. If set to `0`, an attempt is made to start LocalStack without Pro features. | | `LOCALSTACK_AUTH_TOKEN` | | [Auth token](/aws/getting-started/auth-token) to activate LocalStack for AWS. | -| `LOCALSTACK_API_KEY` | | **Deprecated since 3.0.0** API key to activate LocalStack for AWS.
**Use the `LOCALSTACK_AUTH_TOKEN` instead (except for [CI environments](/aws/integrations/continuous-integration/)).** | +| `LOCALSTACK_API_KEY` | | **Deprecated since 3.0.0** API key to activate LocalStack for AWS.
**Use the `LOCALSTACK_AUTH_TOKEN` instead (except for [CI environments](/aws/ci-pipelines/)).** | | `LOG_LICENSE_ISSUES` | `0` \| `1` (default) | Whether to log issues with the license activation to the console. | ## Legacy @@ -522,9 +522,9 @@ These configurations have already been removed and **won't have any effect** on | `DATA_DIR`| 2.0.0 | blank (disabled/default), `/tmp/localstack/data` | Local directory for saving persistent data. Use `PERSISTENCE` instead. | | `DISABLE_TERM_HANDLER` | 2.0.0 | `""` (default) \| `1` | Whether to disable signal passing to LocalStack when running in docker. Enabling this will prevent an orderly shutdown when running inside LS in docker. Setting this to anything else than an empty string will disable it. | `HOST_TMP_FOLDER` | 2.0.0 | `/some/path` | Temporary folder on the host that gets mounted as `$TMPDIR/localstack` into the LocalStack container. Required only for Lambda volume mounts when using `LAMBDA_REMOTE_DOCKER=false.` | -| `INIT_SCRIPTS_PATH` | 2.0.0 | `/some/path` | Before 1.0, this was used to configure the path to the initializing files with extensions `.sh` that were found in `/docker-entrypoint-initaws.d`. This has been replaced by the [init-hook system](/aws/configuration/config/initialization-hooks/). | -| `LEGACY_DIRECTORIES` | 2.0.0 | `0` (default) | Use legacy method of managing internal filesystem layout. See [Filesystem Layout](/aws/configuration/config/filesystem). | -| `LEGACY_INIT_DIR` | 2.0.0 | `1` \| `0`(default) | Used with `INIT_SCRIPTS_PATH`. This has been replaced by the [init-hook system](/aws/configuration/config/initialization-hooks). | +| `INIT_SCRIPTS_PATH` | 2.0.0 | `/some/path` | Before 1.0, this was used to configure the path to the initializing files with extensions `.sh` that were found in `/docker-entrypoint-initaws.d`. This has been replaced by the [init-hook system](/aws/customization/advanced/initialization-hooks/). | +| `LEGACY_DIRECTORIES` | 2.0.0 | `0` (default) | Use legacy method of managing internal filesystem layout. See [Filesystem Layout](/aws/customization/advanced/filesystem). | +| `LEGACY_INIT_DIR` | 2.0.0 | `1` \| `0`(default) | Used with `INIT_SCRIPTS_PATH`. This has been replaced by the [init-hook system](/aws/customization/advanced/initialization-hooks). | | `MULTI_ACCOUNTS` | 2.0.0 | `0` (default) | Enable multi-accounts (preview) | | `SQS_PROVIDER` | 2.0.0 | `moto` (default) and `elasticmq` | | | `SYNCHRONOUS_API_GATEWAY_EVENTS` | 2.0.0 | `1` (default) \| `0` | Whether or not to handle API Gateway Lambda event sources as synchronous invocations. | diff --git a/src/content/docs/aws/customization/index.mdx b/src/content/docs/aws/customization/index.mdx new file mode 100644 index 000000000..d7169e7c8 --- /dev/null +++ b/src/content/docs/aws/customization/index.mdx @@ -0,0 +1,22 @@ +--- +title: Overview +description: Customize how the LocalStack emulator behaves, including configuration options, logging, Kubernetes, other installations, integrations, networking, and advanced features. +template: doc +editUrl: false +--- + +import SectionCards from '../../../../components/SectionCards.astro'; + +LocalStack provides a wide range of options for customizing how the emulator behaves and where it runs. Most users are well served by the defaults, but as your needs grow you can fine-tune everything from logging verbosity and networking to running on Kubernetes, alternative installation methods, and third-party integrations. + + diff --git a/src/content/docs/aws/integrations/app-frameworks/architect.md b/src/content/docs/aws/customization/integrations/app-frameworks/architect.md similarity index 100% rename from src/content/docs/aws/integrations/app-frameworks/architect.md rename to src/content/docs/aws/customization/integrations/app-frameworks/architect.md diff --git a/src/content/docs/aws/integrations/app-frameworks/aspire.md b/src/content/docs/aws/customization/integrations/app-frameworks/aspire.md similarity index 96% rename from src/content/docs/aws/integrations/app-frameworks/aspire.md rename to src/content/docs/aws/customization/integrations/app-frameworks/aspire.md index e003f0f4a..d9dbf2898 100644 --- a/src/content/docs/aws/integrations/app-frameworks/aspire.md +++ b/src/content/docs/aws/customization/integrations/app-frameworks/aspire.md @@ -12,7 +12,7 @@ sidebar: With Aspire, developers can orchestrate cloud-native applications locally using the same AWS resources they deploy in production. By combining Aspire with LocalStack, teams can emulate their full cloud environment—including Lambda, SQS, S3, and DynamoDB—with minimal configuration and no AWS costs. -LocalStack integrates with Aspire through the [`LocalStack.Aspire.Hosting`](https://github.com/localstack-dotnet/dotnet-aspire-for-localstack) package, enabling seamless local development and testing of AWS-powered applications within the Aspire orchestration framework. This package extends the official [AWS integrations for .NET Aspire](https://github.com/aws/integrations-on-dotnet-aspire-for-aws) to provide LocalStack-specific functionality. +LocalStack integrates with Aspire through the [`LocalStack.Aspire.Hosting`](https://github.com/localstack-dotnet/dotnet-aspire-for-localstack) package, enabling seamless local development and testing of AWS-powered applications within the Aspire orchestration framework. This package extends the official [AWS integrations for .NET Aspire](https://github.com/aws/customization/integrations-on-dotnet-aspire-for-aws) to provide LocalStack-specific functionality. ## Getting started @@ -168,7 +168,7 @@ An event registration system showcasing distributed tracing and observability pa - [Aspire Documentation](https://aspire.dev/) - [LocalStack.Aspire.Hosting on GitHub](https://github.com/localstack-dotnet/dotnet-aspire-for-localstack) - [LocalStack.Client on GitHub](https://github.com/localstack-dotnet/localstack-dotnet-client) -- [AWS Aspire Integration](https://github.com/aws/integrations-on-dotnet-aspire-for-aws) +- [AWS Aspire Integration](https://github.com/aws/customization/integrations-on-dotnet-aspire-for-aws) - [AWS SDK for .NET Documentation](https://docs.aws.amazon.com/sdk-for-net/) - [LocalStack Serverless .NET Demo](https://github.com/localstack-dotnet/localstack-serverless-dotnet-demo) - [OpenTelemetry with Aspire and LocalStack Demo](https://github.com/Blind-Striker/dotnet-otel-aspire-localstack-demo) diff --git a/src/content/docs/aws/integrations/messaging/docker-compose.yml b/src/content/docs/aws/customization/integrations/app-frameworks/docker-compose.yml similarity index 100% rename from src/content/docs/aws/integrations/messaging/docker-compose.yml rename to src/content/docs/aws/customization/integrations/app-frameworks/docker-compose.yml diff --git a/src/content/docs/aws/integrations/app-frameworks/index.md b/src/content/docs/aws/customization/integrations/app-frameworks/index.md similarity index 100% rename from src/content/docs/aws/integrations/app-frameworks/index.md rename to src/content/docs/aws/customization/integrations/app-frameworks/index.md diff --git a/src/content/docs/aws/integrations/app-frameworks/quarkus.md b/src/content/docs/aws/customization/integrations/app-frameworks/quarkus.md similarity index 100% rename from src/content/docs/aws/integrations/app-frameworks/quarkus.md rename to src/content/docs/aws/customization/integrations/app-frameworks/quarkus.md diff --git a/src/content/docs/aws/integrations/messaging/selfmanaged-kafka-cluster.md b/src/content/docs/aws/customization/integrations/app-frameworks/selfmanaged-kafka-cluster.md similarity index 91% rename from src/content/docs/aws/integrations/messaging/selfmanaged-kafka-cluster.md rename to src/content/docs/aws/customization/integrations/app-frameworks/selfmanaged-kafka-cluster.md index fb209fc4d..041fa8175 100644 --- a/src/content/docs/aws/integrations/messaging/selfmanaged-kafka-cluster.md +++ b/src/content/docs/aws/customization/integrations/app-frameworks/selfmanaged-kafka-cluster.md @@ -3,7 +3,7 @@ title: Self-managed Kafka cluster description: Using LocalStack Lambda with a self-managed Kafka cluster. template: doc sidebar: - order: 1 + order: 6 --- LocalStack for AWS supports [AWS Managed Streaming for Kafka (MSK)](/aws/services/kafka) and you can create Kafka clusters directly through the MSK API that will run in LocalStack. @@ -11,7 +11,7 @@ In some cases, you may want to run your own self-managed Kafka cluster and integ ## Running self-managed Kafka -You can find the [example Docker Compose](https://github.com/localstack/localstack-docs/blob/master/src/content/docs/aws/integrations/messaging/docker-compose.yml) file which contains a single-noded ZooKeeper and a Kafka cluster and a simple LocalStack setup as well as [Kowl](https://github.com/cloudhut/kowl), an Apache Kafka Web UI. +You can find the [example Docker Compose](https://github.com/localstack/localstack-docs/blob/master/src/content/docs/aws/customization/integrations/app-frameworks/docker-compose.yml) file which contains a single-noded ZooKeeper and a Kafka cluster and a simple LocalStack setup as well as [Kowl](https://github.com/cloudhut/kowl), an Apache Kafka Web UI. 1. Run Docker Compose: diff --git a/src/content/docs/aws/integrations/app-frameworks/spring-cloud-function.mdx b/src/content/docs/aws/customization/integrations/app-frameworks/spring-cloud-function.mdx similarity index 100% rename from src/content/docs/aws/integrations/app-frameworks/spring-cloud-function.mdx rename to src/content/docs/aws/customization/integrations/app-frameworks/spring-cloud-function.mdx diff --git a/src/content/docs/aws/configuration/extensions/developing-extensions.mdx b/src/content/docs/aws/customization/integrations/extensions/developing-extensions.mdx similarity index 100% rename from src/content/docs/aws/configuration/extensions/developing-extensions.mdx rename to src/content/docs/aws/customization/integrations/extensions/developing-extensions.mdx diff --git a/src/content/docs/aws/configuration/extensions/extensions-library.md b/src/content/docs/aws/customization/integrations/extensions/extensions-library.md similarity index 100% rename from src/content/docs/aws/configuration/extensions/extensions-library.md rename to src/content/docs/aws/customization/integrations/extensions/extensions-library.md diff --git a/src/content/docs/aws/configuration/extensions/index.md b/src/content/docs/aws/customization/integrations/extensions/index.md similarity index 87% rename from src/content/docs/aws/configuration/extensions/index.md rename to src/content/docs/aws/customization/integrations/extensions/index.md index 4cbdc7097..102905a2d 100644 --- a/src/content/docs/aws/configuration/extensions/index.md +++ b/src/content/docs/aws/customization/integrations/extensions/index.md @@ -25,7 +25,7 @@ Officially supported extensions are available in our [Official Extensions Librar :::tip Want to try out a common LocalStack extension? -Our [MailHog tutorial](/aws/configuration/extensions/mailhog) teaches you how to install and use the official MailHog extension. It’s a quick way to explore how extensions work in LocalStack. +Our [MailHog tutorial](/aws/customization/integrations/extensions/mailhog) teaches you how to install and use the official MailHog extension. It’s a quick way to explore how extensions work in LocalStack. ::: :::note diff --git a/src/content/docs/aws/configuration/extensions/mailhog.md b/src/content/docs/aws/customization/integrations/extensions/mailhog.md similarity index 93% rename from src/content/docs/aws/configuration/extensions/mailhog.md rename to src/content/docs/aws/customization/integrations/extensions/mailhog.md index 50c7b7392..8858dbff4 100644 --- a/src/content/docs/aws/configuration/extensions/mailhog.md +++ b/src/content/docs/aws/customization/integrations/extensions/mailhog.md @@ -76,6 +76,6 @@ You should see the email you sent in the MailHog UI. - Explore our collection of official extensions, along with a growing ecosystem of third-party extensions, in our [Extensions Library](https://app.localstack.cloud/extensions/library). - Learn about the various methods for extension management and automating their installation when using LocalStack in a CI environment. - Get detailed insights from our [Managing Extensions](/aws/configuration/extensions/managing-extensions) guide. + Get detailed insights from our [Managing Extensions](/aws/customization/integrations/extensions/managing-extensions) guide. - Want to create your own extensions? - Dive into our guide on [Developing Extensions](/aws/configuration/extensions/developing-extensions) for step-by-step instructions. + Dive into our guide on [Developing Extensions](/aws/customization/integrations/extensions/developing-extensions) for step-by-step instructions. diff --git a/src/content/docs/aws/configuration/extensions/managing-extensions.mdx b/src/content/docs/aws/customization/integrations/extensions/managing-extensions.mdx similarity index 98% rename from src/content/docs/aws/configuration/extensions/managing-extensions.mdx rename to src/content/docs/aws/customization/integrations/extensions/managing-extensions.mdx index fa5bd8629..1e0bb5df5 100644 --- a/src/content/docs/aws/configuration/extensions/managing-extensions.mdx +++ b/src/content/docs/aws/customization/integrations/extensions/managing-extensions.mdx @@ -11,7 +11,7 @@ import { FileTree } from '@astrojs/starlight/components'; You have different options to install and manage your LocalStack extensions depending on your environment and work style. -Extensions are managed through the LocalStack container, but stored in the [LocalStack volume](/aws/configuration/config/filesystem) on your host. +Extensions are managed through the LocalStack container, but stored in the [LocalStack volume](/aws/customization/advanced/filesystem) on your host. The next time you start up LocalStack, your extensions will still be there! ## Using the extensions manager in our App @@ -165,7 +165,7 @@ When LocalStack starts up, you should see it tries to install the extensions and ## Extension Management within LocalStack -Extensions in LocalStack are Python distributions that operate within their dedicated virtual environment, residing in the [LocalStack Volume](/aws/configuration/config/filesystem). +Extensions in LocalStack are Python distributions that operate within their dedicated virtual environment, residing in the [LocalStack Volume](/aws/customization/advanced/filesystem). This involves the creation of a"variable packages folder `/var/lib/localstack/lib`," where the volume management system establishes both an `extensions` folder and a virtual environment named `python_venv`. Within this environment, all extensions and their dependencies are managed. LocalStack integrates its virtual environment, ensuring the resolution of all transitive dependencies associated with extensions. diff --git a/src/content/docs/aws/customization/integrations/index.mdx b/src/content/docs/aws/customization/integrations/index.mdx new file mode 100644 index 000000000..8a0bb1202 --- /dev/null +++ b/src/content/docs/aws/customization/integrations/index.mdx @@ -0,0 +1,30 @@ +--- +title: Overview +description: Integrate LocalStack with third-party software and extend it with your own extensions and SDKs. +template: doc +editUrl: false +--- + +import SectionCards from '../../../../../components/SectionCards.astro'; + +LocalStack integrates with a wide range of third-party software from the cloud development ecosystem, and can be extended to fit your own tooling. This section is mostly useful to platform teams who need to wire LocalStack into existing development and testing workflows. + +## The Cloud Development Ecosystem + +Whether you’re adding an extension, driving LocalStack from the Java or Python SDKs, or wiring it into an application framework, this section shows how to integrate LocalStack with the tools you already use. + +![Sample of supported integrations](/images/aws/integrations-overview.png) + +## Integrations + +We strive to make integrating LocalStack into your workflow as seamless as possible. Explore LocalStack Extensions, the LocalStack SDKs, supported app frameworks, and testing integrations: + + diff --git a/src/content/docs/aws/configuration/localstack-sdks/index.md b/src/content/docs/aws/customization/integrations/localstack-sdks/index.md similarity index 100% rename from src/content/docs/aws/configuration/localstack-sdks/index.md rename to src/content/docs/aws/customization/integrations/localstack-sdks/index.md diff --git a/src/content/docs/aws/configuration/localstack-sdks/java-sdk.md b/src/content/docs/aws/customization/integrations/localstack-sdks/java-sdk.md similarity index 100% rename from src/content/docs/aws/configuration/localstack-sdks/java-sdk.md rename to src/content/docs/aws/customization/integrations/localstack-sdks/java-sdk.md diff --git a/src/content/docs/aws/configuration/localstack-sdks/python-sdk.md b/src/content/docs/aws/customization/integrations/localstack-sdks/python-sdk.md similarity index 100% rename from src/content/docs/aws/configuration/localstack-sdks/python-sdk.md rename to src/content/docs/aws/customization/integrations/localstack-sdks/python-sdk.md diff --git a/src/content/docs/aws/configuration/testing-utils.md b/src/content/docs/aws/customization/integrations/localstack-sdks/testing-utils.md similarity index 100% rename from src/content/docs/aws/configuration/testing-utils.md rename to src/content/docs/aws/customization/integrations/localstack-sdks/testing-utils.md diff --git a/src/content/docs/aws/integrations/testing/index.md b/src/content/docs/aws/customization/integrations/testing/index.md similarity index 100% rename from src/content/docs/aws/integrations/testing/index.md rename to src/content/docs/aws/customization/integrations/testing/index.md diff --git a/src/content/docs/aws/integrations/testing/lambdatest-hyperexecute.md b/src/content/docs/aws/customization/integrations/testing/lambdatest-hyperexecute.md similarity index 100% rename from src/content/docs/aws/integrations/testing/lambdatest-hyperexecute.md rename to src/content/docs/aws/customization/integrations/testing/lambdatest-hyperexecute.md diff --git a/src/content/docs/aws/integrations/testing/testcontainers.mdx b/src/content/docs/aws/customization/integrations/testing/testcontainers.mdx similarity index 100% rename from src/content/docs/aws/integrations/testing/testcontainers.mdx rename to src/content/docs/aws/customization/integrations/testing/testcontainers.mdx diff --git a/src/content/docs/aws/enterprise/kubernetes/concepts.md b/src/content/docs/aws/customization/kubernetes/concepts.md similarity index 96% rename from src/content/docs/aws/enterprise/kubernetes/concepts.md rename to src/content/docs/aws/customization/kubernetes/concepts.md index 851dd03d2..78f7ffa6c 100644 --- a/src/content/docs/aws/enterprise/kubernetes/concepts.md +++ b/src/content/docs/aws/customization/kubernetes/concepts.md @@ -93,9 +93,9 @@ This enables applications running in Kubernetes to interact with LocalStack usin ## Storage -LocalStack can store data that persists across sessions, such as data that can be used for [local persistence](https://docs.localstack.cloud/aws/developer-tools/snapshots/persistence/) or caching downloaded resources between sessions. See the [LocalStack volume](/aws/configuration/config/filesystem/#localstack-volume) page for more information. +LocalStack can store data that persists across sessions, such as data that can be used for [local persistence](https://docs.localstack.cloud/aws/developer-tools/snapshots/persistence/) or caching downloaded resources between sessions. See the [LocalStack volume](/aws/customization/advanced/filesystem/#localstack-volume) page for more information. -This volume directory can be created in Kubernetes using a [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) and associated [Persistent Volume Claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims). This volume should be mounted into the pod at `/var/lib/localstack` to persist LocalStack state. See the [Operator](/aws/enterprise/kubernetes/kubernetes-operator/) and [Helm Chart](/aws/enterprise/kubernetes/deploy-helm-chart) documentation for specific details. +This volume directory can be created in Kubernetes using a [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) and associated [Persistent Volume Claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims). This volume should be mounted into the pod at `/var/lib/localstack` to persist LocalStack state. See the [Operator](/aws/customization/kubernetes/kubernetes-operator/) and [Helm Chart](/aws/customization/kubernetes/deploy-helm-chart) documentation for specific details. ## Choose execution mode diff --git a/src/content/docs/aws/enterprise/kubernetes/configuration.md b/src/content/docs/aws/customization/kubernetes/configuration.md similarity index 96% rename from src/content/docs/aws/enterprise/kubernetes/configuration.md rename to src/content/docs/aws/customization/kubernetes/configuration.md index df509e804..c80fd325c 100644 --- a/src/content/docs/aws/enterprise/kubernetes/configuration.md +++ b/src/content/docs/aws/customization/kubernetes/configuration.md @@ -1,5 +1,5 @@ --- -title: Configuration +title: Kubernetes Configuration description: Kubernetes configuration reference for LocalStack running on Kubernetes template: doc sidebar: @@ -38,7 +38,7 @@ The value must be valid JSON. LOCALSTACK_K8S_POD_CONFIG='{"profiles":{"default":{"nodeSelector":{"pool":"general"}}}}' ``` -For the full JSON schema, profile resolution order, and examples, see [Pod Configuration](/aws/enterprise/kubernetes/pod-configuration/). +For the full JSON schema, profile resolution order, and examples, see [Pod Configuration](/aws/customization/kubernetes/pod-configuration/). ### Container security context @@ -91,7 +91,7 @@ Increase these values if your cluster is under heavy load or if image pulls are | `LOCALSTACK_K8S_NAMESPACE` | Kubernetes namespace for child pods | | `LOCALSTACK_K8S_LABELS` | Comma-separated `key=value` labels applied to child pods | | `LOCALSTACK_K8S_ANNOTATIONS` | Comma-separated `key=value` annotations applied to child pods | -| `LOCALSTACK_K8S_POD_CONFIG` | JSON pod configuration for supported child pods. See [Pod Configuration](/aws/enterprise/kubernetes/pod-configuration/) | +| `LOCALSTACK_K8S_POD_CONFIG` | JSON pod configuration for supported child pods. See [Pod Configuration](/aws/customization/kubernetes/pod-configuration/) | | `K8S_CONTAINER_SECURITY_CONTEXT` | JSON security context applied to child pod containers | | `K8S_CURL_INIT_IMAGE` | Init container image used for network readiness checks | | `LAMBDA_K8S_INIT_IMAGE` | Init container image used in Lambda pods | diff --git a/src/content/docs/aws/enterprise/kubernetes/deploy-helm-chart.md b/src/content/docs/aws/customization/kubernetes/deploy-helm-chart.md similarity index 100% rename from src/content/docs/aws/enterprise/kubernetes/deploy-helm-chart.md rename to src/content/docs/aws/customization/kubernetes/deploy-helm-chart.md diff --git a/src/content/docs/aws/integrations/containers/eksctl.mdx b/src/content/docs/aws/customization/kubernetes/eksctl.mdx similarity index 99% rename from src/content/docs/aws/integrations/containers/eksctl.mdx rename to src/content/docs/aws/customization/kubernetes/eksctl.mdx index 965ae6661..7d562d55f 100644 --- a/src/content/docs/aws/integrations/containers/eksctl.mdx +++ b/src/content/docs/aws/customization/kubernetes/eksctl.mdx @@ -3,7 +3,7 @@ title: eksctl description: Running `eksctl` on LocalStack to create EKS clusters. template: doc sidebar: - order: 5 + order: 9 --- import { Tabs, TabItem } from '@astrojs/starlight/components'; diff --git a/src/content/docs/aws/enterprise/kubernetes/faq.md b/src/content/docs/aws/customization/kubernetes/faq.md similarity index 97% rename from src/content/docs/aws/enterprise/kubernetes/faq.md rename to src/content/docs/aws/customization/kubernetes/faq.md index 04a365955..5a3199597 100644 --- a/src/content/docs/aws/enterprise/kubernetes/faq.md +++ b/src/content/docs/aws/customization/kubernetes/faq.md @@ -3,7 +3,7 @@ title: FAQ description: FAQ template: doc sidebar: - order: 9 + order: 11 tags: ["Enterprise"] --- @@ -171,7 +171,7 @@ Common causes for connection failure: * **Transparent Endpoint Injection** - * Review: [https://docs.localstack.cloud/aws/configuration/networking/transparent-endpoint-injection/](https://docs.localstack.cloud/aws/configuration/networking/transparent-endpoint-injection/) + * Review: [https://docs.localstack.cloud/aws/customization/networking/transparent-endpoint-injection/](https://docs.localstack.cloud/aws/customization/networking/transparent-endpoint-injection/) * **Egress restrictions** * Ensure cluster network policies allow outbound internet access. @@ -262,7 +262,7 @@ This usually means the cluster restricts which images can be pulled. * Allow the LocalStack images in your cluster * If you must use a custom image name or pull-through cache, see: - [https://docs.localstack.cloud/aws/configuration/config/configuration/](https://docs.localstack.cloud/aws/configuration/config/configuration/) + [https://docs.localstack.cloud/aws/customization/configuration-options/](https://docs.localstack.cloud/aws/customization/configuration-options/) ### Admission or security policy failures diff --git a/src/content/docs/aws/enterprise/kubernetes/index.md b/src/content/docs/aws/customization/kubernetes/index.md similarity index 96% rename from src/content/docs/aws/enterprise/kubernetes/index.md rename to src/content/docs/aws/customization/kubernetes/index.md index 13e6cb912..9ccf3c8b2 100644 --- a/src/content/docs/aws/enterprise/kubernetes/index.md +++ b/src/content/docs/aws/customization/kubernetes/index.md @@ -1,6 +1,6 @@ --- title: Overview -description: Kubernetes with LocalStack +description: Run LocalStack on Kubernetes, a common approach for enterprises to centrally manage their containers. template: doc sidebar: order: 1 diff --git a/src/content/docs/aws/enterprise/kubernetes/kubernetes-executor.md b/src/content/docs/aws/customization/kubernetes/kubernetes-executor.md similarity index 100% rename from src/content/docs/aws/enterprise/kubernetes/kubernetes-executor.md rename to src/content/docs/aws/customization/kubernetes/kubernetes-executor.md diff --git a/src/content/docs/aws/enterprise/kubernetes/kubernetes-operator.mdx b/src/content/docs/aws/customization/kubernetes/kubernetes-operator.mdx similarity index 97% rename from src/content/docs/aws/enterprise/kubernetes/kubernetes-operator.mdx rename to src/content/docs/aws/customization/kubernetes/kubernetes-operator.mdx index 7ae9ac479..245e69728 100644 --- a/src/content/docs/aws/enterprise/kubernetes/kubernetes-operator.mdx +++ b/src/content/docs/aws/customization/kubernetes/kubernetes-operator.mdx @@ -215,7 +215,7 @@ This works without additional DNS configuration in client applications. Requires Operator version 0.4.0 or later. ::: -To persist the [LocalStack volume](/aws/configuration/config/filesystem/#localstack-volume), use the `spec.pvcName` to specify the PVC you want to mount. This automatically mounts the PVC at `/var/lib/localstack`. +To persist the [LocalStack volume](/aws/customization/advanced/filesystem/#localstack-volume), use the `spec.pvcName` to specify the PVC you want to mount. This automatically mounts the PVC at `/var/lib/localstack`. For example: diff --git a/src/content/docs/aws/enterprise/kubernetes/limitations.md b/src/content/docs/aws/customization/kubernetes/limitations.md similarity index 98% rename from src/content/docs/aws/enterprise/kubernetes/limitations.md rename to src/content/docs/aws/customization/kubernetes/limitations.md index f8a29cb06..471436ad4 100644 --- a/src/content/docs/aws/enterprise/kubernetes/limitations.md +++ b/src/content/docs/aws/customization/kubernetes/limitations.md @@ -3,7 +3,7 @@ title: Limitations description: Known limitations when running LocalStack on Kubernetes template: doc sidebar: - order: 8 + order: 10 tags: ["Enterprise"] --- diff --git a/src/content/docs/aws/integrations/containers/openshift.md b/src/content/docs/aws/customization/kubernetes/openshift.md similarity index 99% rename from src/content/docs/aws/integrations/containers/openshift.md rename to src/content/docs/aws/customization/kubernetes/openshift.md index e432e67cb..be460aea5 100644 --- a/src/content/docs/aws/integrations/containers/openshift.md +++ b/src/content/docs/aws/customization/kubernetes/openshift.md @@ -3,7 +3,7 @@ title: OpenShift description: Use the OpenShift managed Kubernetes cluster to deploy LocalStack. template: doc sidebar: - order: 4 + order: 8 --- ## Introduction diff --git a/src/content/docs/aws/enterprise/kubernetes/pod-configuration.md b/src/content/docs/aws/customization/kubernetes/pod-configuration.md similarity index 95% rename from src/content/docs/aws/enterprise/kubernetes/pod-configuration.md rename to src/content/docs/aws/customization/kubernetes/pod-configuration.md index 7f32bf12e..91bbf5431 100644 --- a/src/content/docs/aws/enterprise/kubernetes/pod-configuration.md +++ b/src/content/docs/aws/customization/kubernetes/pod-configuration.md @@ -100,7 +100,7 @@ extraEnvVars: } ``` -If you deploy LocalStack with the [LocalStack Operator](/aws/enterprise/kubernetes/kubernetes-operator/), set the same configuration as structured YAML under `spec.podSchedulingConfig` in your `LocalStack` resource instead of passing JSON: +If you deploy LocalStack with the [LocalStack Operator](/aws/customization/kubernetes/kubernetes-operator/), set the same configuration as structured YAML under `spec.podSchedulingConfig` in your `LocalStack` resource instead of passing JSON: ```yaml apiVersion: api.localstack.cloud/v1alpha1 @@ -261,4 +261,4 @@ The following example schedules Lambda pods on dedicated nodes, adds tolerations - Use `LOCALSTACK_K8S_LABELS` and `LOCALSTACK_K8S_ANNOTATIONS` for simple labels and annotations that apply to all child pods. - Use `K8S_CONTAINER_SECURITY_CONTEXT` to configure the security context for child pod containers. -For the complete list of Kubernetes executor configuration variables, see the [Kubernetes configuration reference](/aws/enterprise/kubernetes/configuration/). +For the complete list of Kubernetes executor configuration variables, see the [Kubernetes configuration reference](/aws/customization/kubernetes/configuration/). diff --git a/src/content/docs/aws/configuration/config/logging.md b/src/content/docs/aws/customization/logging.md similarity index 91% rename from src/content/docs/aws/configuration/config/logging.md rename to src/content/docs/aws/customization/logging.md index 5e632e834..1684408c7 100644 --- a/src/content/docs/aws/configuration/config/logging.md +++ b/src/content/docs/aws/customization/logging.md @@ -1,6 +1,6 @@ --- title: Logging -description: Overview of LocalStack logging and error reporting +description: Control LocalStack log output, verbosity, and error reporting. template: doc --- @@ -63,5 +63,5 @@ With Docker/Docker-Compose, you can run `docker ps` to get the container ID of t To view the logs via a user interface, you can use the following options: -- [LocalStack Desktop](/aws/configuration/web-app/localstack-desktop/) -- [LocalStack Docker Extension](/aws/configuration/localstack-docker-extension/) +- [LocalStack Desktop](/aws/developer-tools/running-localstack/localstack-desktop/) +- [LocalStack Docker Extension](/aws/customization/other-installations/localstack-docker-extension/) diff --git a/src/content/docs/aws/configuration/networking/accessing-endpoint-url.mdx b/src/content/docs/aws/customization/networking/accessing-endpoint-url.mdx similarity index 97% rename from src/content/docs/aws/configuration/networking/accessing-endpoint-url.mdx rename to src/content/docs/aws/customization/networking/accessing-endpoint-url.mdx index 074e9b63a..36ace0ab8 100644 --- a/src/content/docs/aws/configuration/networking/accessing-endpoint-url.mdx +++ b/src/content/docs/aws/customization/networking/accessing-endpoint-url.mdx @@ -20,10 +20,10 @@ While the LocalStack CLI does this automatically, when running the Docker contai Check out the [getting started documentation](/aws/getting-started/installation) for more information. :::tip -If you bind a domain name to `localhost`, ensure that you are not subject to [DNS rebind protection](/aws/configuration/dns-server#dns-rebind-protection). +If you bind a domain name to `localhost`, ensure that you are not subject to [DNS rebind protection](/aws/customization/networking/dns-server#dns-rebind-protection). ::: -You can also use the `GATEWAY_LISTEN` [configuration variable](/aws/configuration/config/configuration) to change the exposed port if necessary. +You can also use the `GATEWAY_LISTEN` [configuration variable](/aws/customization/configuration-options) to change the exposed port if necessary. ## From a container LocalStack created diff --git a/src/content/docs/aws/configuration/networking/accessing-resources-created.md b/src/content/docs/aws/customization/networking/accessing-resources-created.md similarity index 90% rename from src/content/docs/aws/configuration/networking/accessing-resources-created.md rename to src/content/docs/aws/customization/networking/accessing-resources-created.md index 01fe286ae..e345d9934 100644 --- a/src/content/docs/aws/configuration/networking/accessing-resources-created.md +++ b/src/content/docs/aws/customization/networking/accessing-resources-created.md @@ -9,7 +9,7 @@ sidebar: If you have created a resource using LocalStack, such as an OpenSearch cluster or RDS database, you may need to access it from your application. Typically, these resources are accessible through a URL or a hostname provided by LocalStack. By default, LocalStack returns the hostname `localhost.localstack.cloud`, which resolves to LocalStack using DNS. -For special environments (e.g., proxies), the [configuration](/aws/configuration/config/configuration) `LOCALSTACK_HOST` customizes the URLs returned by LocalStack. +For special environments (e.g., proxies), the [configuration](/aws/customization/configuration-options) `LOCALSTACK_HOST` customizes the URLs returned by LocalStack. This guide will explore different scenarios and provide detailed instructions on accessing resources created by LocalStack under different scenarios. ## From your host @@ -24,7 +24,7 @@ Check out the [service-specific documentation](/aws/services) for more details. ![Accessing a resource created by LocalStack from a container created by LocalStack](/images/aws/6.svg) -Check out our documentation while [using the endpoint URL](/aws/configuration/networking/accessing-endpoint-url). +Check out our documentation while [using the endpoint URL](/aws/customization/networking/accessing-endpoint-url).
For LocalStack versions before 2.3.0 @@ -37,7 +37,7 @@ In that case, you can set the HOSTNAME_FROM_LAMBDA environment vari ![Accessing a resource created by LocalStack from a Docker container](/images/aws/9.svg) -Check out our documentation [on using the endpoint URL](/aws/configuration/networking/accessing-endpoint-url#from-your-container). +Check out our documentation [on using the endpoint URL](/aws/customization/networking/accessing-endpoint-url#from-your-container). ## From a separate host diff --git a/src/content/docs/aws/configuration/dns-server.md b/src/content/docs/aws/customization/networking/dns-server.md similarity index 97% rename from src/content/docs/aws/configuration/dns-server.md rename to src/content/docs/aws/customization/networking/dns-server.md index d92c7ff80..4c77bf77f 100644 --- a/src/content/docs/aws/configuration/dns-server.md +++ b/src/content/docs/aws/customization/networking/dns-server.md @@ -3,16 +3,18 @@ title: DNS Server description: Use LocalStack as DNS server to resolve AWS queries to LocalStack. template: doc tags: ["Hobby"] +sidebar: + order: 7 --- LocalStack includes a DNS server that enables seamless connectivity to LocalStack from different environments using `localhost.localstack.cloud`. The DNS server is available on all IPv4 addresses within the LocalStack container (i.e., listening to `0.0.0.0`) and resolves `localhost.localstack.cloud` to the LocalStack container. Therefore, containers that are configured to use the DNS server can reach LocalStack using `localhost.localstack.cloud`. This configuration happens automatically for containers created by LocalStack, including compute resources such as Lambda, ECS, and EC2. -Your container can be configured to use the DNS server as demonstrated in the [Network Troubleshooting guide](/aws/configuration/networking/accessing-endpoint-url/#from-the-same-computer). +Your container can be configured to use the DNS server as demonstrated in the [Network Troubleshooting guide](/aws/customization/networking/accessing-endpoint-url/#from-the-same-computer). If you wish to use the DNS server on your host system, follow the instructions under [System DNS configuration](#system-dns-configuration). -LocalStack for AWS additionally offers [Transparent Endpoint Injection](/aws/configuration/networking/transparent-endpoint-injection/) (active by default), +LocalStack for AWS additionally offers [Transparent Endpoint Injection](/aws/customization/networking/transparent-endpoint-injection/) (active by default), which enables seamless connectivity to LocalStack without changing your application code targeting AWS. The DNS server resolves AWS domains such as `*.amazonaws.com` including subdomains to the LocalStack container. Therefore, your application seamlessly accesses the LocalStack APIs instead of the real AWS APIs. @@ -69,7 +71,7 @@ We do not recommend disabling the DNS server since this disables resolving `loca ### LocalStack endpoints If you operate behind an enterprise proxy and wish to customize the domain name returned by LocalStack services (e.g., SQS queue URL), -check out the [Configuration](/aws/configuration/config/configuration#core) `LOCALSTACK_HOST`. +check out the [Configuration](/aws/customization/configuration-options#core) `LOCALSTACK_HOST`. If you wish to customize internal LocalStack DNS routing of `localhost.localstack.cloud`, refer to the instructions in the [Route53 documentation](/aws/services/route53#customizing-internal-endpoint-resolution). diff --git a/src/content/docs/aws/configuration/networking/external-port-range.mdx b/src/content/docs/aws/customization/networking/external-port-range.mdx similarity index 100% rename from src/content/docs/aws/configuration/networking/external-port-range.mdx rename to src/content/docs/aws/customization/networking/external-port-range.mdx diff --git a/src/content/docs/aws/configuration/networking/https-tls-support.mdx b/src/content/docs/aws/customization/networking/https-tls-support.mdx similarity index 90% rename from src/content/docs/aws/configuration/networking/https-tls-support.mdx rename to src/content/docs/aws/customization/networking/https-tls-support.mdx index 03ca238a6..1da16348c 100644 --- a/src/content/docs/aws/configuration/networking/https-tls-support.mdx +++ b/src/content/docs/aws/customization/networking/https-tls-support.mdx @@ -3,7 +3,7 @@ title: HTTPS/TLS Support description: Overview of TLS certificate coverage for the `localhost.localstack.cloud` domain and supported AWS regions for secure HTTPS access to LocalStack service endpoints. template: doc sidebar: - order: 7 + order: 8 --- ## Introduction @@ -15,7 +15,7 @@ https://s3.us-east-1.localhost.localstack.cloud:4566 ``` These certificates enable proper hostname validation for supported AWS regions when using HTTPS with SDKs, the AWS CLI, browsers, and other tools. -If LocalStack runs behind a corporate proxy that interferes with fetching the public certificate, you can set [`SSL_NO_VERIFY=1`](/aws/configuration/config/configuration#miscellaneous) to disable TLS verification when downloading the certificate from `localhost.localstack.cloud`. +If LocalStack runs behind a corporate proxy that interferes with fetching the public certificate, you can set [`SSL_NO_VERIFY=1`](/aws/customization/configuration-options#miscellaneous) to disable TLS verification when downloading the certificate from `localhost.localstack.cloud`. ### Supported Regions diff --git a/src/content/docs/aws/configuration/networking/index.mdx b/src/content/docs/aws/customization/networking/index.mdx similarity index 72% rename from src/content/docs/aws/configuration/networking/index.mdx rename to src/content/docs/aws/customization/networking/index.mdx index 91eed2a16..8b7000b78 100644 --- a/src/content/docs/aws/configuration/networking/index.mdx +++ b/src/content/docs/aws/customization/networking/index.mdx @@ -1,6 +1,6 @@ --- title: Overview -description: This section describes the networking capabilities of LocalStack, and how to configure them to suit your needs. +description: Expose endpoints, resolve DNS, and integrate LocalStack with your local network. template: doc sidebar: order: 1 @@ -18,86 +18,86 @@ Choose the scenario below that best describes your networking layout. Whether yo LocalStack only binds to IPv4 addresses (e.g. `127.0.0.1`). Make sure you're not trying to access LocalStack over IPv6. ::: -## [Using the endpoint URL](/aws/configuration/networking/accessing-endpoint-url) +## [Using the endpoint URL](/aws/customization/networking/accessing-endpoint-url) For example, setting the `endpoint_url` parameter with an [AWS SDK](/aws/connecting/aws-sdks/). :::note -TLS certificates for `localhost.localstack.cloud` support only certain AWS regions. See [TLS Certificate Coverage](/aws/configuration/networking/https-tls-support) for details. +TLS certificates for `localhost.localstack.cloud` support only certain AWS regions. See [TLS Certificate Coverage](/aws/customization/networking/https-tls-support) for details. ::: -## [Using transparent endpoint injection](/aws/configuration/networking/transparent-endpoint-injection) +## [Using transparent endpoint injection](/aws/customization/networking/transparent-endpoint-injection) For example, you have a Lambda function that needs to access LocalStack resources. -## [Accessing a resource created by LocalStack](/aws/configuration/networking/accessing-resources-created) +## [Accessing a resource created by LocalStack](/aws/customization/networking/accessing-resources-created) For example, you have created an OpenSearch cluster and are trying to access that resource by its URL. diff --git a/src/content/docs/aws/configuration/localstack-docker-extension.md b/src/content/docs/aws/customization/other-installations/localstack-docker-extension.md similarity index 97% rename from src/content/docs/aws/configuration/localstack-docker-extension.md rename to src/content/docs/aws/customization/other-installations/localstack-docker-extension.md index 97b39fae5..dc374971c 100644 --- a/src/content/docs/aws/configuration/localstack-docker-extension.md +++ b/src/content/docs/aws/customization/other-installations/localstack-docker-extension.md @@ -1,6 +1,6 @@ --- title: LocalStack Docker Extension -description: Getting started with LocalStack Extension for Docker Desktop. +description: Manage your LocalStack container directly from Docker Desktop with the LocalStack Extension. template: doc sidebar: order: 7 diff --git a/src/content/docs/aws/configuration/config/podman.md b/src/content/docs/aws/customization/other-installations/podman.md similarity index 98% rename from src/content/docs/aws/configuration/config/podman.md rename to src/content/docs/aws/customization/other-installations/podman.md index 019ac0cc6..e30bcf961 100644 --- a/src/content/docs/aws/configuration/config/podman.md +++ b/src/content/docs/aws/customization/other-installations/podman.md @@ -1,6 +1,6 @@ --- title: Podman -description: Running LocalStack inside Podman +description: Run LocalStack inside Podman, a Docker-compatible container engine. template: doc --- diff --git a/src/content/docs/aws/integrations/containers/rancher-desktop.mdx b/src/content/docs/aws/customization/other-installations/rancher-desktop.mdx similarity index 98% rename from src/content/docs/aws/integrations/containers/rancher-desktop.mdx rename to src/content/docs/aws/customization/other-installations/rancher-desktop.mdx index 9afdbeac6..3f0f8b3ac 100644 --- a/src/content/docs/aws/integrations/containers/rancher-desktop.mdx +++ b/src/content/docs/aws/customization/other-installations/rancher-desktop.mdx @@ -1,6 +1,6 @@ --- title: Rancher Desktop -description: Use Rancher Desktop with LocalStack. +description: Run LocalStack on the local container runtime provided by Rancher Desktop, a Docker Desktop alternative. template: doc sidebar: order: 6 diff --git a/src/content/docs/aws/developer-tools/aws-replicator/index.mdx b/src/content/docs/aws/developer-tools/aws-replicator/index.mdx index a6738e96c..ea880b3db 100644 --- a/src/content/docs/aws/developer-tools/aws-replicator/index.mdx +++ b/src/content/docs/aws/developer-tools/aws-replicator/index.mdx @@ -29,7 +29,7 @@ A valid `LOCALSTACK_AUTH_TOKEN` must be configured to start the LocalStack for A :::note The Replicator is in limited preview and is available from LocalStack CLI version 4.2.0. -If you encounter issues, update your [LocalStack CLI](/aws/getting-started/installation/#updating-localstack-cli). +If you encounter issues, update your [LocalStack CLI](/aws/getting-started/installation/#update-localstack-cli). ::: ### Retrieve credentials to access AWS @@ -70,11 +70,22 @@ Both methods have two steps: 1. Submit a replication job. 2. Check the job status. +#### Replication strategies + +The Replicator supports different strategies depending on how many resources you want to copy and whether their related resources should be included. +The [supported resources](#supported-resources) table shows which strategies are available for each resource type, along with the IAM actions required for each. + +- **Single** (`SINGLE_RESOURCE`): replicate a single resource identified by its identifier or ARN. This is the default. +- **Batch** (`BATCH`): discover and replicate every matching resource in a single job, for example all SSM parameters under a path prefix or all S3 buckets matching a prefix. +- **Tree** (`TREE` explore strategy): starting from a single resource, also replicate its related child resources. For example, replicating an `AWS::Organizations::Organization` also replicates its organizational units, accounts, and policies. + +The replication type and explore strategy are independent: `replication_type` selects between single-resource and batch discovery, while `explore_strategy` (`SIMPLE` or `TREE`) controls whether related resources are followed. + #### Using the LocalStack CLI The Replicator CLI is part of the LocalStack CLI. -Follow the [installation instructions](/aws/getting-started/installation/#installing-localstack-cli) to set it up. +Follow the [installation instructions](/aws/getting-started/installation/#install-localstack-cli) to set it up. To start a replication job, get the ARN of the resource to replicate. Then, trigger the job using the command: @@ -189,6 +200,29 @@ For example: This triggers a batch replication job that discovers and replicates all SSM parameters under the `/dev/` path prefix. +To replicate a resource together with its related resources, set `explore_strategy` to `TREE`. +For example, to replicate an entire organization tree: + +```json +{ + "replication_type": "SINGLE_RESOURCE", + "explore_strategy": "TREE", + "replication_job_config": { + "resource_type": "AWS::Organizations::Organization", + "identifier": "o-exampleorgid" + }, + "source_aws_config": { + "aws_access_key_id": "...", + "aws_secret_access_key": "...", + "region_name": "..." + } +} +``` + +When `explore_strategy` is omitted, the default is `SIMPLE`, which replicates only the requested resource. +With `TREE`, the Replicator follows the resource's relationships and replicates the related resources listed in the [supported resources](#supported-resources) table. +The additional IAM actions shown for the **Tree** strategy must also be granted. + ### Check Replication Job Status @@ -397,4 +431,7 @@ Please open a [new GitHub Discussion](https://github.com/orgs/localstack/discuss To ensure support for all resources, use the latest LocalStack Docker image. ::: - +The table below lists every supported resource type and the [replication strategies](#replication-strategies) available for each. +Select a row to expand it and view the resource identifier, the IAM actions required for each strategy, and any related resources replicated by the Tree strategy. + + diff --git a/src/content/docs/aws/developer-tools/cloud-sandbox/ephemeral-instances.md b/src/content/docs/aws/developer-tools/cloud-sandbox/ephemeral-instances.md index 1c00d0113..0dcfaf16e 100644 --- a/src/content/docs/aws/developer-tools/cloud-sandbox/ephemeral-instances.md +++ b/src/content/docs/aws/developer-tools/cloud-sandbox/ephemeral-instances.md @@ -87,7 +87,7 @@ If you have created a Cloud Pod from an older version of LocalStack, you need to ## Ephemeral Instances CLI -The Ephemeral Instances CLI is included in the [LocalStack CLI installation](/aws/getting-started/installation/#installing-localstack-cli), so no additional installations are needed to start using it. +The Ephemeral Instances CLI is included in the [LocalStack CLI installation](/aws/getting-started/installation/#install-localstack-cli), so no additional installations are needed to start using it. If you're a licensed user, setting the `LOCALSTACK_AUTH_TOKEN` as an environment variable is recommended to access all features of the Ephemeral Instances CLI. Access the Ephemeral Instances CLI by running the `localstack ephemeral` command from your terminal. diff --git a/src/content/docs/aws/developer-tools/lambda-tools/remote-debugging.mdx b/src/content/docs/aws/developer-tools/lambda-tools/remote-debugging.mdx index faa10d6d6..cad8e99c8 100644 --- a/src/content/docs/aws/developer-tools/lambda-tools/remote-debugging.mdx +++ b/src/content/docs/aws/developer-tools/lambda-tools/remote-debugging.mdx @@ -47,7 +47,7 @@ This guide describes how to use the AWS Toolkit for VS Code to debug Lambda func * [AWS Toolkit for VS Code](https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.aws-toolkit-vscode) (>= v3.74) * [LocalStack Toolkit for VS Code](https://marketplace.visualstudio.com/items?itemName=LocalStack.localstack) (>= v1.2.0) * [Docker](https://www.docker.com/) -* A valid LocalStack Auth Token. Sign up for a [free LocalStack account](https://app.localstack.cloud/sign-up). +* A valid LocalStack Auth Token. Sign up for a [free LocalStack account](https://www.localstack.cloud/pricing). * A valid **auth token** * VS Code running on the **same machine** as LocalStack (container-based setups like Kubernetes are not yet supported). @@ -173,7 +173,7 @@ Here's how to fix it: Should downloading the Lambda function code fail, here's how to fix it: -* Disable DNS rebind protection (see [LocalStack DNS docs](https://docs.localstack.cloud/aws/configuration/dns-server/#dns-rebind-protection)) +* Disable DNS rebind protection (see [LocalStack DNS docs](https://docs.localstack.cloud/aws/customization/networking/dns-server/#dns-rebind-protection)) * Use `127.0.0.1` instead of `localhost.localstack.cloud` (**Automatic** setup) * Run the `LocalStack: Configure AWS Profile "localstack"` command from the VS Code Command Palette which will auto-configure the correct endpoint. * Use `127.0.0.1` instead of `localhost.localstack.cloud` (**Manual** setup) @@ -336,7 +336,7 @@ to [iterate quickly over your function code](/aws/developer-tools/lambda-tools/h #### Configure LocalStack for VS Code remote Python debugging -First, make sure that LocalStack is started with the following configuration (see the [Configuration docs](/aws/configuration/config/configuration#lambda) for more information): +First, make sure that LocalStack is started with the following configuration (see the [Configuration docs](/aws/customization/configuration-options#lambda) for more information): ```bash LAMBDA_DOCKER_FLAGS='-p 19891:19891' localstack start diff --git a/src/content/docs/aws/developer-tools/running-localstack/localstack-cli.md b/src/content/docs/aws/developer-tools/running-localstack/localstack-cli.md index 184fac030..732606560 100644 --- a/src/content/docs/aws/developer-tools/running-localstack/localstack-cli.md +++ b/src/content/docs/aws/developer-tools/running-localstack/localstack-cli.md @@ -3,18 +3,254 @@ title: LocalStack CLI description: Reference guide for LocalStack CLI commands, options, and usage. template: doc sidebar: - order: 10 -tags: ["Hobby"] + order: 10 +tags: ['Hobby'] --- +import { Tabs, TabItem } from '@astrojs/starlight/components'; +import { LinkButton, Code } from '@astrojs/starlight/components'; +import { LOCALSTACK_AWS_VERSION } from 'astro:env/server'; + ## Introduction The LocalStack Command Line Interface (CLI) is a tool for starting, managing, and configuring your LocalStack container. It provides convenience features to interact with LocalStack features like Cloud Pods, Extensions, State Management, and more. -To install the LocalStack CLI, follow the [installation guide](/aws/getting-started/installation/#installing-localstack-cli). +:::caution +The LocalStack CLI is deprecated and will be removed in a future version. +Please use [lstk](/aws/developer-tools/running-localstack/lstk/) instead. +::: + +## Installation + + + + + +You can download the pre-built binary for your architecture using the link below: + + + {' '} + x86-64 + + + ARM64 + + +or use the curl commands below: + +For x86-64: + + + +For ARM64: + + + +Then extract the LocalStack CLI from the terminal: + + + +
+Alternative: Homebrew on Linux + +If you are using [Homebrew for Linux](https://docs.brew.sh/Homebrew-on-Linux), you can install the LocalStack CLI directly from our official LocalStack tap: + +```bash +brew install localstack/tap/localstack-cli +``` + +
+ +
+ + + +You can install the LocalStack CLI using Brew directly from our official LocalStack tap: + +```bash +brew install localstack/tap/localstack-cli +``` + +
+Alternative: Binary Download + +You may download the binary for your architecture using the link below: + + + {' '} + Intel (AMD64) + + +or use the following curl command: + + + +Then extract the LocalStack CLI from the terminal: + + + +
+
+ + + +You can download the pre-built binary for your architecture using the link below: + + + {' '} + Intel (AMD64) + + +Then extract the archive and execute the binary in Powershell. + + + + + +If you cannot use the binary releases of LocalStack, you can install the Python distribution. + +Please make sure to install the following before moving ahead: + +- [Python](https://docs.python.org/3/using/index.html) +- [pip](https://pip.pypa.io/en/stable/installation/) + +Next install the LocalStack CLI in your Python environment by running: + +```bash +python3 -m pip install --upgrade localstack +``` + +:::note +To download a specific version of LocalStack, replace `` with the required version from [changelog page](/aws/changelog). + +```bash +python3 -m pip install localstack== +``` + +::: + +:::tip[MacOS Sierra?] +If you have problems with permissions in MacOS X Sierra, install with: + +```bash +python3 -m pip install --user localstack +``` + +::: + +:::danger +Do not use `sudo` or the `root` user when starting LocalStack. +It should be installed and started entirely under a local non-root user. +::: + + +
+ +### Starting LocalStack + +To verify that the LocalStack CLI was installed correctly, you can check the version in your terminal: + + + +You are all set! + +:::note +To start LocalStack, you must first [set up your auth token](/aws/getting-started/auth-token). +::: + +Once you've set up your auth token, you can start LocalStack with the following command: + +```bash +localstack start # start localstack in background with -d flag +``` + +{/_ prettier-ignore _/} + + + +### Updating LocalStack CLI + +The LocalStack CLI allows you to easily update the different components of LocalStack. +To check the various options available for updating, run: + +```bash +localstack update --help +``` + +```bash +Usage: localstack update [OPTIONS] COMMAND [ARGS]... + + Update different LocalStack components. + +Options: + -h, --help Show this message and exit. + +Commands: + all Update all LocalStack components + docker-images Update docker images LocalStack depends on + localstack-cli Update LocalStack CLI +``` :::note +Updating the LocalStack CLI using `localstack update localstack-cli` and `localstack update all` will work only if it was installed from the Python distribution. +If it was installed using the pre-built binary or via Brew, please run the installation steps again to update to the latest version. +::: + +:::note +This documentation below was auto-generated from LocalStack CLI version `LocalStack CLI 2026.4.0`. + [`lstk`](/aws/developer-tools/running-localstack/lstk/) is our new Go-based CLI with an interactive terminal UI for lifecycle (`start`, `stop`), monitoring (`status`, `logs`), storage (`snapshot`), and more. ::: @@ -22,12 +258,12 @@ To install the LocalStack CLI, follow the [installation guide](/aws/getting-star The following global options are available for the `localstack` CLI: -| Option | Description | -|--------|-------------| -| `-v`, `--version` | Show the version and exit | -| `-d`, `--debug` | Enable CLI debugging mode | +| Option | Description | +| ---------------------- | ----------------------------- | +| `-v`, `--version` | Show the version and exit | +| `-d`, `--debug` | Enable CLI debugging mode | | `-p`, `--profile TEXT` | Set the configuration profile | -| `-h`, `--help` | Show help message and exit | +| `-h`, `--help` | Show help message and exit | ## Commands @@ -791,8 +1027,6 @@ Commands: #### `license activate` - - ```bash Usage: localstack license activate [OPTIONS] @@ -802,8 +1036,6 @@ Options: #### `license info` - - ```bash Usage: localstack license info [OPTIONS] diff --git a/src/content/docs/aws/configuration/web-app/localstack-desktop.md b/src/content/docs/aws/developer-tools/running-localstack/localstack-desktop.md similarity index 100% rename from src/content/docs/aws/configuration/web-app/localstack-desktop.md rename to src/content/docs/aws/developer-tools/running-localstack/localstack-desktop.md diff --git a/src/content/docs/aws/developer-tools/running-localstack/lstk.mdx b/src/content/docs/aws/developer-tools/running-localstack/lstk.mdx index 9e04183cf..1287d737c 100644 --- a/src/content/docs/aws/developer-tools/running-localstack/lstk.mdx +++ b/src/content/docs/aws/developer-tools/running-localstack/lstk.mdx @@ -25,7 +25,7 @@ Running `lstk` with no arguments takes you through the entire startup flow autom ## Prerequisites - [Docker](https://docs.docker.com/get-docker/) installed and running. -- A [LocalStack account](https://app.localstack.cloud/sign-up) with a [license](/aws/getting-started/auth-token/#managing-your-license), and `lstk` handles authentication for you (see [Authentication](#authentication)). +- A [LocalStack account](https://www.localstack.cloud/pricing) with a [license](/aws/getting-started/auth-token/#managing-your-license), and `lstk` handles authentication for you (see [Authentication](#authentication)). ## Installation diff --git a/src/content/docs/aws/developer-tools/running-localstack/mcp-server.mdx b/src/content/docs/aws/developer-tools/running-localstack/mcp-server.mdx index 0e2118067..32b6d479a 100644 --- a/src/content/docs/aws/developer-tools/running-localstack/mcp-server.mdx +++ b/src/content/docs/aws/developer-tools/running-localstack/mcp-server.mdx @@ -33,7 +33,15 @@ You must include it in the `env` block of your configuration. You can get your Auth Token from the [LocalStack Web App](https://app.localstack.cloud). ::: -Choose your MCP client below for setup instructions. +The quickest way to get started with the MCP server is to use the interactive setup wizard: + +```bash +npx -y @localstack/localstack-mcp-server init +``` + +The wizard detects your installed clients, asks how you want to run the server, and writes the configuration for you. You need a valid [Auth Token](/aws/getting-started/auth-token/) to configure the server. + +For manual setup of the MCP server, choose your MCP client below for setup instructions. @@ -171,12 +179,12 @@ Refer to your client's documentation for the exact location of its MCP configura By default the MCP server connects to `http://localhost:4566`. If your LocalStack instance runs on a different host or port, set the following environment variables in the `env` block: -| Variable | Default | Description | -|---|---|---| +| Variable | Default | Description | +| --------------------- | ----------- | ----------------------------------- | | `LOCALSTACK_HOSTNAME` | `localhost` | Hostname of the LocalStack instance | -| `LOCALSTACK_PORT` | `4566` | Port of the LocalStack instance | +| `LOCALSTACK_PORT` | `4566` | Port of the LocalStack instance | -You can also pass any [LocalStack configuration variable](/aws/configuration/config/configuration/) through the `env` block. +You can also pass any [LocalStack configuration variable](/aws/customization/configuration-options/) through the `env` block. These are forwarded to the container when the `localstack-management` tool starts it. ```json @@ -204,11 +212,11 @@ Each tool runs pre-flight checks (verifying the CLI is available, the container Manage the LocalStack runtime lifecycle for both the AWS emulator and the Snowflake emulator. -| Parameter | Type | Required | Description | -|---|---|---|---| -| `action` | `start` \| `stop` \| `restart` \| `status` | Yes | The operation to perform | -| `service` | `aws` \| `snowflake` | No | The stack to manage (default: `aws`) | -| `envVars` | `Record` | No | Extra environment variables passed on `start` | +| Parameter | Type | Required | Description | +| --------- | ------------------------------------------ | -------- | --------------------------------------------- | +| `action` | `start` \| `stop` \| `restart` \| `status` | Yes | The operation to perform | +| `service` | `aws` \| `snowflake` | No | The stack to manage (default: `aws`) | +| `envVars` | `Record` | No | Extra environment variables passed on `start` | **Example prompts:** @@ -220,17 +228,17 @@ Manage the LocalStack runtime lifecycle for both the AWS emulator and the Snowfl Deploy or destroy infrastructure on LocalStack using CDK, Terraform, SAM, or CloudFormation. -| Parameter | Type | Required | Description | -|---|---|---|---| -| `action` | `deploy` \| `destroy` \| `create-stack` \| `delete-stack` | Yes | The deployment operation | -| `projectType` | `cdk` \| `terraform` \| `sam` \| `auto` | No | Framework to use (default: `auto`, detected from project files) | -| `directory` | `string` | Yes (for `deploy`/`destroy`) | Path to the project directory | -| `variables` | `Record` | No | Variables passed as Terraform `-var` flags, CDK `--context` values, or SAM `--parameter-overrides` | -| `stackName` | `string` | Yes (for `create-stack`/`delete-stack`) | CloudFormation/SAM stack name | -| `templatePath` | `string` | No | Path to a CloudFormation/SAM template | -| `s3Bucket` | `string` | No | S3 bucket for SAM deployments (if omitted, SAM uses `--resolve-s3`) | -| `resolveS3` | `boolean` | No | For SAM deployments, whether to use `--resolve-s3` when no `s3Bucket` is provided | -| `saveParams` | `boolean` | No | For SAM deployments, whether to persist resolved parameters to `samconfig.toml` | +| Parameter | Type | Required | Description | +| -------------- | --------------------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `action` | `deploy` \| `destroy` \| `create-stack` \| `delete-stack` | Yes | The deployment operation | +| `projectType` | `cdk` \| `terraform` \| `sam` \| `auto` | No | Framework to use (default: `auto`, detected from project files) | +| `directory` | `string` | Yes (for `deploy`/`destroy`) | Path to the project directory | +| `variables` | `Record` | No | Variables passed as Terraform `-var` flags, CDK `--context` values, or SAM `--parameter-overrides` | +| `stackName` | `string` | Yes (for `create-stack`/`delete-stack`) | CloudFormation/SAM stack name | +| `templatePath` | `string` | No | Path to a CloudFormation/SAM template | +| `s3Bucket` | `string` | No | S3 bucket for SAM deployments (if omitted, SAM uses `--resolve-s3`) | +| `resolveS3` | `boolean` | No | For SAM deployments, whether to use `--resolve-s3` when no `s3Bucket` is provided | +| `saveParams` | `boolean` | No | For SAM deployments, whether to persist resolved parameters to `samconfig.toml` | **Example prompts:** @@ -248,13 +256,13 @@ The `create-stack` and `delete-stack` actions run `awslocal` inside the LocalSta Analyze LocalStack logs to find errors, summarize API activity, or inspect raw output. -| Parameter | Type | Required | Description | -|---|---|---|---| -| `analysisType` | `summary` \| `errors` \| `requests` \| `logs` | No | Type of analysis (default: `summary`) | -| `lines` | `number` | No | Number of log lines to fetch (default: `2000`) | -| `service` | `string` | No | Filter by AWS service name | -| `operation` | `string` | No | Filter by API operation (used with `service` in `requests` mode) | -| `filter` | `string` | No | Keyword filter (used with `logs` mode only) | +| Parameter | Type | Required | Description | +| -------------- | --------------------------------------------- | -------- | ---------------------------------------------------------------- | +| `analysisType` | `summary` \| `errors` \| `requests` \| `logs` | No | Type of analysis (default: `summary`) | +| `lines` | `number` | No | Number of log lines to fetch (default: `2000`) | +| `service` | `string` | No | Filter by AWS service name | +| `operation` | `string` | No | Filter by API operation (used with `service` in `requests` mode) | +| `filter` | `string` | No | Keyword filter (used with `logs` mode only) | **Example prompts:** @@ -266,10 +274,10 @@ Analyze LocalStack logs to find errors, summarize API activity, or inspect raw o Configure IAM enforcement and generate IAM policies from access denials in the logs. -| Parameter | Type | Required | Description | -|---|---|---|---| -| `action` | `set-mode` \| `analyze-policies` \| `get-status` | Yes | The operation to perform | -| `mode` | `ENFORCED` \| `SOFT_MODE` \| `DISABLED` | Yes (for `set-mode`) | IAM enforcement level | +| Parameter | Type | Required | Description | +| --------- | ------------------------------------------------ | -------------------- | ------------------------ | +| `action` | `set-mode` \| `analyze-policies` \| `get-status` | Yes | The operation to perform | +| `mode` | `ENFORCED` \| `SOFT_MODE` \| `DISABLED` | Yes (for `set-mode`) | IAM enforcement level | **Example prompts:** @@ -281,21 +289,21 @@ Configure IAM enforcement and generate IAM policies from access denials in the l Inject faults and network latency into LocalStack services to test application resilience. -| Parameter | Type | Required | Description | -|---|---|---|---| -| `action` | `inject-faults` \| `add-fault-rule` \| `remove-fault-rule` \| `get-faults` \| `clear-all-faults` \| `inject-latency` \| `get-latency` \| `clear-latency` | Yes | The chaos operation | -| `rules` | `Array` | Yes (for `inject-faults`, `add-fault-rule`, `remove-fault-rule`) | Fault rules to inject/modify | -| `latency_ms` | `number` | Yes (for `inject-latency`) | Latency in milliseconds to add to all requests | +| Parameter | Type | Required | Description | +| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------- | +| `action` | `inject-faults` \| `add-fault-rule` \| `remove-fault-rule` \| `get-faults` \| `clear-all-faults` \| `inject-latency` \| `get-latency` \| `clear-latency` | Yes | The chaos operation | +| `rules` | `Array` | Yes (for `inject-faults`, `add-fault-rule`, `remove-fault-rule`) | Fault rules to inject/modify | +| `latency_ms` | `number` | Yes (for `inject-latency`) | Latency in milliseconds to add to all requests | Each **fault rule** can include: -| Field | Type | Description | -|---|---|---| -| `service` | `string` | Target AWS service (e.g., `s3`, `lambda`) | -| `region` | `string` | Target region (e.g., `us-east-1`) | -| `operation` | `string` | Target API operation (e.g., `PutObject`) | -| `probability` | `number` (0-1) | Probability of the fault triggering | -| `error` | `{ statusCode?: number, code?: string }` | Error response to return | +| Field | Type | Description | +| ------------- | ---------------------------------------- | ----------------------------------------- | +| `service` | `string` | Target AWS service (e.g., `s3`, `lambda`) | +| `region` | `string` | Target region (e.g., `us-east-1`) | +| `operation` | `string` | Target API operation (e.g., `PutObject`) | +| `probability` | `number` (0-1) | Probability of the fault triggering | +| `error` | `{ statusCode?: number, code?: string }` | Error response to return | **Example prompts:** @@ -307,10 +315,10 @@ Each **fault rule** can include: Save, load, and manage LocalStack state snapshots using [Cloud Pods](/aws/developer-tools/snapshots/cloud-pods/). -| Parameter | Type | Required | Description | -|---|---|---|---| -| `action` | `save` \| `load` \| `delete` \| `reset` | Yes | The state management operation | -| `pod_name` | `string` | Yes (for `save`/`load`/`delete`) | Name of the Cloud Pod (alphanumeric, dots, hyphens, underscores; max 128 characters) | +| Parameter | Type | Required | Description | +| ---------- | --------------------------------------- | -------------------------------- | ------------------------------------------------------------------------------------ | +| `action` | `save` \| `load` \| `delete` \| `reset` | Yes | The state management operation | +| `pod_name` | `string` | Yes (for `save`/`load`/`delete`) | Name of the Cloud Pod (alphanumeric, dots, hyphens, underscores; max 128 characters) | **Example prompts:** @@ -322,9 +330,9 @@ Save, load, and manage LocalStack state snapshots using [Cloud Pods](/aws/develo Execute AWS CLI commands inside the running LocalStack container via `awslocal`. -| Parameter | Type | Required | Description | -|---|---|---|---| -| `command` | `string` | Yes | The AWS CLI command to run (without the `aws` or `awslocal` prefix) | +| Parameter | Type | Required | Description | +| --------- | -------- | -------- | ------------------------------------------------------------------- | +| `command` | `string` | Yes | The AWS CLI command to run (without the `aws` or `awslocal` prefix) | **Example prompts:** @@ -337,13 +345,13 @@ If a command fails due to a service not being emulated, the tool returns a link ### `localstack-extensions` -Install, uninstall, list, and discover [LocalStack Extensions](/aws/configuration/extensions/) from the marketplace. +Install, uninstall, list, and discover [LocalStack Extensions](/aws/customization/integrations/extensions/) from the marketplace. -| Parameter | Type | Required | Description | -|---|---|---|---| -| `action` | `list` \| `install` \| `uninstall` \| `available` | Yes | The extensions operation | -| `name` | `string` | Yes (for `install`/`uninstall`) | Extension package name (e.g., `localstack-extension-typedb`) | -| `source` | `string` | No | Git URL to install from (alternative to `name`) | +| Parameter | Type | Required | Description | +| --------- | ------------------------------------------------- | ------------------------------- | ------------------------------------------------------------ | +| `action` | `list` \| `install` \| `uninstall` \| `available` | Yes | The extensions operation | +| `name` | `string` | Yes (for `install`/`uninstall`) | Extension package name (e.g., `localstack-extension-typedb`) | +| `source` | `string` | No | Git URL to install from (alternative to `name`) | **Example prompts:** @@ -360,14 +368,14 @@ After installing or uninstalling an extension, the tool automatically restarts L Manage cloud-hosted [Ephemeral Instances](/aws/developer-tools/cloud-sandbox/ephemeral-instances/) for remote LocalStack testing workflows. -| Parameter | Type | Required | Description | -|---|---|---|---| -| `action` | `create` \| `list` \| `logs` \| `delete` | Yes | The ephemeral instance operation | -| `name` | `string` | Yes (for `create`/`logs`/`delete`) | Instance name | -| `lifetime` | `number` | No | Lifetime in minutes for the instance (only for `create`) | -| `extension` | `string` | No | Extension package to preload on the instance (only for `create`) | -| `cloudPod` | `string` | No | Cloud Pod name to initialize state from (only for `create`) | -| `envVars` | `Record` | No | Extra environment variables for the instance (only for `create`) | +| Parameter | Type | Required | Description | +| ----------- | ---------------------------------------- | ---------------------------------- | ---------------------------------------------------------------- | +| `action` | `create` \| `list` \| `logs` \| `delete` | Yes | The ephemeral instance operation | +| `name` | `string` | Yes (for `create`/`logs`/`delete`) | Instance name | +| `lifetime` | `number` | No | Lifetime in minutes for the instance (only for `create`) | +| `extension` | `string` | No | Extension package to preload on the instance (only for `create`) | +| `cloudPod` | `string` | No | Cloud Pod name to initialize state from (only for `create`) | +| `envVars` | `Record` | No | Extra environment variables for the instance (only for `create`) | **Example prompts:** @@ -380,10 +388,10 @@ Manage cloud-hosted [Ephemeral Instances](/aws/developer-tools/cloud-sandbox/eph Search the LocalStack documentation to find guides, API references, and configuration details. -| Parameter | Type | Required | Description | -|---|---|---|---| -| `query` | `string` | Yes | The search query | -| `limit` | `number` | No | Maximum number of results to return (default: `5`, max: `10`) | +| Parameter | Type | Required | Description | +| --------- | -------- | -------- | ------------------------------------------------------------- | +| `query` | `string` | Yes | The search query | +| `limit` | `number` | No | Maximum number of results to return (default: `5`, max: `10`) | **Example prompts:** @@ -394,15 +402,15 @@ Search the LocalStack documentation to find guides, API references, and configur Execute SQL queries and commands against the [LocalStack Snowflake emulator](/snowflake/) using the Snowflake CLI (`snow`). -| Parameter | Type | Required | Description | -|---|---|---|---| -| `action` | `execute` \| `check-connection` | Yes | The operation to perform | -| `query` | `string` | Yes (for `execute`, if `file_path` not provided) | SQL query to execute | -| `file_path` | `string` | Yes (for `execute`, if `query` not provided) | Absolute path to a `.sql` file to execute | -| `database` | `string` | No | Snowflake database context | -| `schema` | `string` | No | Snowflake schema context | -| `warehouse` | `string` | No | Snowflake warehouse to use | -| `role` | `string` | No | Snowflake role to use | +| Parameter | Type | Required | Description | +| ----------- | ------------------------------- | ------------------------------------------------ | ----------------------------------------- | +| `action` | `execute` \| `check-connection` | Yes | The operation to perform | +| `query` | `string` | Yes (for `execute`, if `file_path` not provided) | SQL query to execute | +| `file_path` | `string` | Yes (for `execute`, if `query` not provided) | Absolute path to a `.sql` file to execute | +| `database` | `string` | No | Snowflake database context | +| `schema` | `string` | No | Snowflake schema context | +| `warehouse` | `string` | No | Snowflake warehouse to use | +| `role` | `string` | No | Snowflake role to use | **Example prompts:** @@ -421,31 +429,31 @@ Once your MCP client is configured, verify the setup by opening a conversation w **1. Start LocalStack** -> *"Start my LocalStack container."* +> _"Start my LocalStack container."_ The agent uses the `localstack-management` tool to start the container and confirms the status. **2. Deploy infrastructure** -> *"Deploy my CDK project in the `./my-app` directory."* +> _"Deploy my CDK project in the `./my-app` directory."_ The agent detects the framework, runs `cdklocal bootstrap` and `cdklocal deploy`, and returns the stack outputs. **3. Verify resources** -> *"List the Lambda functions and DynamoDB tables that were created."* +> _"List the Lambda functions and DynamoDB tables that were created."_ The agent runs `awslocal` commands inside the container and returns the results. **4. Analyze logs** -> *"Check the LocalStack logs for any errors."* +> _"Check the LocalStack logs for any errors."_ The agent fetches recent logs and highlights any errors or warnings. **5. Save state** -> *"Save a Cloud Pod named `my-checkpoint`."* +> _"Save a Cloud Pod named `my-checkpoint`."_ The agent persists the current LocalStack state so you can restore it later. @@ -453,15 +461,15 @@ The agent persists the current LocalStack state so you can restore it later. The following environment variables can be set in the `env` block of your MCP configuration: -| Variable | Default | Description | -|---|---|---| -| `LOCALSTACK_AUTH_TOKEN` (**required**) | None | Your LocalStack Auth Token. Required for all MCP server tools. | -| `LOCALSTACK_HOSTNAME` | `localhost` | Hostname of the LocalStack instance | -| `LOCALSTACK_PORT` | `4566` | Port of the LocalStack instance | -| `MAIN_CONTAINER_NAME` | `localstack-main` | Name of the LocalStack Docker container | -| `MCP_ANALYTICS_DISABLED` | `0` | Set to `1` to disable MCP analytics | +| Variable | Default | Description | +| -------------------------------------- | ----------------- | -------------------------------------------------------------- | +| `LOCALSTACK_AUTH_TOKEN` (**required**) | None | Your LocalStack Auth Token. Required for all MCP server tools. | +| `LOCALSTACK_HOSTNAME` | `localhost` | Hostname of the LocalStack instance | +| `LOCALSTACK_PORT` | `4566` | Port of the LocalStack instance | +| `MAIN_CONTAINER_NAME` | `localstack-main` | Name of the LocalStack Docker container | +| `MCP_ANALYTICS_DISABLED` | `0` | Set to `1` to disable MCP analytics | -Any [LocalStack configuration variable](/aws/configuration/config/configuration/) can also be passed through the `env` block. +Any [LocalStack configuration variable](/aws/customization/configuration-options/) can also be passed through the `env` block. These are forwarded to the container when the `localstack-management` tool starts it. For example, to enable debug logging and persistence: diff --git a/src/content/docs/aws/developer-tools/security-testing/custom-tls-certificates.mdx b/src/content/docs/aws/developer-tools/security-testing/custom-tls-certificates.mdx index 20a837576..c6b460cf9 100644 --- a/src/content/docs/aws/developer-tools/security-testing/custom-tls-certificates.mdx +++ b/src/content/docs/aws/developer-tools/security-testing/custom-tls-certificates.mdx @@ -30,7 +30,7 @@ They all can be summarised as: ## Creating a custom docker image -If you run LocalStack in a docker container (which includes using [the CLI](/aws/getting-started/installation/#installing-localstack-cli), [docker](/aws/getting-started/installation/#docker), [docker-compose](/aws/getting-started/installation/#docker-compose), or [helm](/aws/enterprise/kubernetes/deploy-helm-chart)), to include a custom TLS root certificate a new docker image should be created. +If you run LocalStack in a docker container (which includes using [the CLI](/aws/getting-started/installation/#install-localstack-cli), [docker](/aws/getting-started/installation/#docker-compose), [docker-compose](/aws/getting-started/installation/#docker-compose), or [helm](/aws/customization/kubernetes/deploy-helm-chart)), to include a custom TLS root certificate a new docker image should be created. Create a `Dockerfile` containing the following commands: @@ -106,11 +106,11 @@ Then run LocalStack with the environment variables - `CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt`, and - `NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt` -and follow the instructions fn the [init hooks documentation](/aws/configuration/config/initialization-hooks) for configuring LocalStack to use the hook directory as a `boot` hook. +and follow the instructions fn the [init hooks documentation](/aws/customization/advanced/initialization-hooks) for configuring LocalStack to use the hook directory as a `boot` hook. ## Disabling TLS verification for LocalStack Cloud -If your proxy intercepts traffic to LocalStack cloud services (e.g., license server), you can disable TLS verification for these specific requests using the `SSL_NO_VERIFY` [configuration variable](/aws/configuration/config/configuration#security) (or `LOCALSTACK_SSL_NO_VERIFY` in Docker). +If your proxy intercepts traffic to LocalStack cloud services (e.g., license server), you can disable TLS verification for these specific requests using the `SSL_NO_VERIFY` [configuration variable](/aws/customization/configuration-options#security) (or `LOCALSTACK_SSL_NO_VERIFY` in Docker). ```bash SSL_NO_VERIFY=1 localstack start diff --git a/src/content/docs/aws/developer-tools/security-testing/iam-coverage.md b/src/content/docs/aws/developer-tools/security-testing/iam-coverage.md index ae6a05d85..6da101568 100644 --- a/src/content/docs/aws/developer-tools/security-testing/iam-coverage.md +++ b/src/content/docs/aws/developer-tools/security-testing/iam-coverage.md @@ -123,6 +123,10 @@ It only includes operations performed with a principal, not as root, so test set | **Permission Boundaries** | | | | - Roles | | | - Users | +| **Service Control Policies (SCPs)** | | +| | - Enforced across the organization hierarchy (root, OU, account) | +| | - Enforced for cross-account access | +| | - Evaluated by the IAM Policy Simulator | ## Supported Policy Features diff --git a/src/content/docs/aws/developer-tools/snapshots/cloud-pods.mdx b/src/content/docs/aws/developer-tools/snapshots/cloud-pods.mdx index b9e08ee65..d85aff37e 100644 --- a/src/content/docs/aws/developer-tools/snapshots/cloud-pods.mdx +++ b/src/content/docs/aws/developer-tools/snapshots/cloud-pods.mdx @@ -28,7 +28,7 @@ You can save and load the persistent state of Cloud Pods, you can use the [Cloud LocalStack provides a remote storage backend that can be used to store the state of your running application and share it with your team members. You can interact with the Cloud Pods over the storage backend via the LocalStack Web Application. -Cloud Pods CLI is included in the [LocalStack CLI installation](/aws/getting-started/installation/#installing-localstack-cli), so there's no need for additional installations to begin using it. +Cloud Pods CLI is included in the [LocalStack CLI installation](/aws/getting-started/installation/#install-localstack-cli), so there's no need for additional installations to begin using it. If you're a licensed user, we suggest setting the `LOCALSTACK_AUTH_TOKEN` as an environment variable. This enables you to access the complete range of LocalStack Cloud Pods features. @@ -286,7 +286,7 @@ In addition to loading Cloud Pods through the Command-Line Interface (CLI) or th ### Environmental variables -To automatically load a Cloud Pod at startup, utilize the `AUTO_LOAD_POD` [configuration variable](/aws/configuration/config/configuration/). +To automatically load a Cloud Pod at startup, utilize the `AUTO_LOAD_POD` [configuration variable](/aws/customization/configuration-options/). `AUTO_LOAD_POD` can accept multiple Cloud Pod names separated by commas. To autoload multiple Cloud Pods, such as `foo-pod` and `bar-pod`, use: `AUTO_LOAD_POD=foo-pod,bar-pod`. @@ -451,7 +451,7 @@ localstack pod list s3-storage-aws :::note Full S3 remotes support is available in the CLI from version 3.2.0. -If you experience any difficulties, update your [LocalStack CLI](/aws/getting-started/installation/#updating-localstack-cli). +If you experience any difficulties, update your [LocalStack CLI](/aws/getting-started/installation/#update-localstack-cli). ::: ### ORAS remote storage @@ -522,7 +522,7 @@ services: :::note The Auto Load from remote feature does not automatically configure the remote. This needs to be done with the `localstack pod remote add ...` command. -This commands creates a configuration file for the remote in the [LocalStack volume directory](/aws/configuration/config/filesystem/#localstack-volume-directory). +This commands creates a configuration file for the remote in the [LocalStack volume directory](/aws/customization/advanced/filesystem/#localstack-volume-directory). ::: ## End-to-End Encryption @@ -575,7 +575,7 @@ The process is the following: Unless explicitly specified, all Cloud Pods commands default to targeting the LocalStack Platform as the storage remote. It's important to note that the CLI must be authenticated correctly with our Platform. -Custom remote configurations are stored within the [LocalStack volume directory](/aws/configuration/config/filesystem/#localstack-volume-directory) and are managed by the LocalStack container. +Custom remote configurations are stored within the [LocalStack volume directory](/aws/customization/advanced/filesystem/#localstack-volume-directory) and are managed by the LocalStack container. Consequently, when sharing Cloud Pods among your team using a custom remote, each team member must define the identical remote configuration. Once added, a remote persists even after LocalStack restarts. @@ -590,7 +590,7 @@ The available strategies are: - `service-merge`: This strategy merges services at the account-region level, provided there's no overlap in resources. It prioritizes the loaded resources when merging. -The LocalStack's default merge strategy can be changed via the `MERGE_STRATEGY` [configuration variable](/aws/configuration/config/configuration/). +The LocalStack's default merge strategy can be changed via the `MERGE_STRATEGY` [configuration variable](/aws/customization/configuration-options/). ### LocalStack CLI @@ -750,4 +750,4 @@ If you're still unable to connect to the S3 bucket, add the bucket hostname to t DNS_NAME_PATTERNS_TO_RESOLVE_UPSTREAM=ls-pods-bucket-test.s3.amazonaws.com/ ``` -For more details, see the [Skip LocalStack DNS Resolution](/aws/configuration/dns-server/#skip-localstack-dns-resolution) section. \ No newline at end of file +For more details, see the [Skip LocalStack DNS Resolution](/aws/customization/networking/dns-server/#skip-localstack-dns-resolution) section. diff --git a/src/content/docs/aws/enterprise/index.mdx b/src/content/docs/aws/enterprise/index.mdx deleted file mode 100644 index 3d35d2268..000000000 --- a/src/content/docs/aws/enterprise/index.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Overview -description: LocalStack Enterprise provides the most sophisticated and secure setup we offer, with advanced features and capabilities for large organizations and teams. -template: doc -editUrl: false -sidebar: - order: 1 ---- - -import SectionCards from '../../../../components/SectionCards.astro'; - -LocalStack Enterprise provides advanced features and deployment options for teams operating at scale. This section includes guides and resources to help you get the most out of your Enterprise subscription, such as setting up air-gapped environments to integrate with Kubernetes or configuring SSO. - -Explore how to: - -- Run LocalStack in secure or offline setups with a custom Enterprise Image -- Set up Single Sign-On (SSO) across identity providers -- Deploy LocalStack into Kubernetes with the Kubernetes Operator and Executor -- Access tailored support options as an Enterprise customer - - diff --git a/src/content/docs/aws/getting-started/ai-workflows.mdx b/src/content/docs/aws/getting-started/ai-workflows.mdx new file mode 100644 index 000000000..091267b3c --- /dev/null +++ b/src/content/docs/aws/getting-started/ai-workflows.mdx @@ -0,0 +1,108 @@ +--- +title: AI & Agent Workflows +description: Use LocalStack with AI coding assistants, MCP clients, and agent-driven infrastructure workflows. +template: doc +sidebar: + order: 5 +--- + +## Introduction + +LocalStack gives AI coding assistants a local AWS-compatible environment to work against. Instead of letting an agent experiment in a real AWS account, you can ask it to create infrastructure, deploy code, inspect logs, and test resources in LocalStack first. + +This is useful when you want to: + +- Prototype AWS applications & infrastructure code from natural language prompts. +- Validate AI-generated Terraform, CDK, or AWS CLI commands before using a cloud account. +- Give an AI assistant a safe place to inspect resources, debug logs, and iterate on deployments. +- Use reusable agent instructions for LocalStack-aware infrastructure workflows. + +## Common workflows + +There are three common ways to use LocalStack in AI-assisted development: + +- Use the [LocalStack MCP Server](/aws/tooling/mcp-server/) when your AI assistant supports MCP clients such as Cursor, Claude, Codex, or OpenCode. +- Use [LocalStack Skills](https://github.com/localstack/skills) when you want reusable agent instructions for deploying and testing AWS architectures against LocalStack. +- Use LocalStack with `tflocal`, `cdklocal`, or `awslocal` when you want the agent to generate infrastructure code or commands that you review and run locally. + +You do not need all three approaches to get started. If your editor supports MCP, start with the LocalStack MCP Server. Or, you can use Skills if you want reusable agent instructions. If not, ask your assistant to generate Terraform, CDK, or AWS CLI steps and run them with LocalStack's local wrappers. + +## Quick Setup + +LocalStack has provided an [`agents.md`](https://blog.localstack.cloud/ai/agents.md) file that provides the full instructions for your AI agent to get started with LocalStack, including how to configure the MCP server and LocalStack Skills. Details can be found at our [agents landing page](https://blog.localstack.cloud/ai/) or you can copy and paste the instructions below into your AI agent's prompt. + +```text +Fetch https://blog.localstack.cloud/ai/agents.md and follow the instructions to set up LocalStack on my machine. +``` + +For manual setup of the MCP server and skills, you can follow the steps below. + +## Connect an MCP client + +The LocalStack MCP Server connects MCP-compatible clients to your LocalStack environment. Once configured, your AI assistant can use LocalStack tools to start the container, deploy infrastructure, run AWS CLI commands, inspect logs, manage state, and query resources. + +Start the MCP server with an interactive setup wizard: + +```bash +npx -y @localstack/localstack-mcp-server init +``` + +:::note +The MCP server runs locally and talks to a LocalStack instance. Your AI assistant is the MCP client. For full installation instructions, detailed setup, and the full tool reference, see the [LocalStack MCP Server guide](/aws/tooling/mcp-server/). + +You need a valid [Auth Token](/aws/getting-started/auth-token/) to configure the server. +::: + +## Use agent skills + +[LocalStack Skills](https://github.com/localstack/skills) provide reusable instructions for AI agents working with LocalStack. They help agents follow LocalStack-specific conventions when creating infrastructure, deploying resources, running tests, and inspecting local cloud state. + +Skills are most useful when you want the assistant to follow a repeatable workflow, for example: + +- Scaffold a local AWS application and deploy it to LocalStack. +- Convert an AWS architecture idea into Terraform or CDK that targets LocalStack first. +- Debug a failing local deployment by checking resources, logs, and configuration. +- Save or restore LocalStack state as part of an iterative development loop. + +Refer to the [LocalStack Skills repository](https://github.com/localstack/skills) for available skills and setup instructions. + +## Example prompt sequence + +After LocalStack and your preferred AI tooling are configured, you can use a sequence like this: + +```text +Create a Terraform application with an S3 bucket, a Lambda function, and a DynamoDB table. +Make it deployable to LocalStack with tflocal. +``` + +```text +Deploy the application to LocalStack and fix any errors from the deployment. +``` + +```text +Invoke the Lambda function locally, inspect the DynamoDB table, and summarize what resources were created. +``` + +```text +Add an integration test that verifies the Lambda writes an item to DynamoDB. +Run the test against LocalStack. +``` + +This keeps the feedback loop local while still giving the assistant a realistic AWS-compatible target. + +## Review before applying to AWS + +AI-generated infrastructure still needs review. Treat LocalStack as the first validation step, not as a replacement for code review, tests, or production deployment controls. + +Before applying changes to AWS, check that: + +- The generated infrastructure matches your intended architecture. +- Resource names, IAM policies, and environment variables are appropriate for your project. +- Tests pass against LocalStack. +- You understand any changes the assistant made to application code or deployment configuration. + +## Next steps + +- Configure the [LocalStack MCP Server](/aws/tooling/mcp-server/) if your AI assistant supports MCP. +- Review [LocalStack Skills](https://github.com/localstack/skills) for reusable agent workflows. +- Browse the [LocalStack for AWS services](/aws/services/) reference, or check the [Getting Started FAQ](/aws/getting-started/faq/) for common setup questions. diff --git a/src/content/docs/aws/getting-started/auth-token.mdx b/src/content/docs/aws/getting-started/auth-token.mdx index 101701920..0a2326dd2 100644 --- a/src/content/docs/aws/getting-started/auth-token.mdx +++ b/src/content/docs/aws/getting-started/auth-token.mdx @@ -1,167 +1,81 @@ --- title: Auth Token -description: Configure your Auth Token to access and activate LocalStack. +description: Configure and manage your LocalStack Auth Token to activate LocalStack and access licensed features. template: doc sidebar: - order: 3 + order: 6 --- -import { Code, Tabs, TabItem } from '@astrojs/starlight/components'; +import { Tabs, TabItem } from '@astrojs/starlight/components'; -## Introduction +## What is an Auth Token? -The Auth Token is required to activate the LocalStack for AWS core cloud emulator. It identifies and authenticates users outside the LocalStack Web Application. -It primarily accesses your workspace and advanced services & features. +An Auth Token is a mandatory credential required to start the LocalStack container and activate licensed features. It links your running LocalStack instance to your workspace license and unlocks the services and capabilities available to your account. -Auth tokens come in two types: a **Developer Auth Token** and a **CI Auth Token**: +You can manage Auth Tokens from the [Auth Tokens page](https://app.localstack.cloud/workspace/auth-tokens) in the LocalStack Web Application. -- The **Developer Auth Token** is linked to a specific user within a specific workspace. - Every user has their own Auth Token. - It cannot be deleted but can be rotated for security reasons if needed. -- The **CI Auth Token** is not associated with any specific user and is designed for use in CI environments and other non-developer contexts. - These tokens are stored in the workspace and can be managed by members with appropriate permissions. - -Both the **Developer Auth Token** and **CI Auth Token** can be managed on the [Auth Tokens page](https://app.localstack.cloud/workspace/auth-tokens). - -:::danger - -- It's crucial to keep your Auth Token confidential. - Do not include it in source code management systems, such as Git repositories. -- Be aware that if an Auth Token is committed to a public repository, it is at risk of exposure, and could remain in the repository's history, even if attempts are made to rewrite it. -- In case your Auth Token is accidentally published, immediately rotate it on the [Auth Token page](https://app.localstack.cloud/workspace/auth-tokens). - ::: - -## Managing your License - -To use LocalStack, a license is required. -You can get a license by registering on the [LocalStack Web Application](https://app.localstack.cloud/sign-up). -Choose between a 14-day trial or explore additional features with our paid offering. -During the trial period, you are welcome to use all the features of LocalStack. - -After initiating your trial or acquiring a license, proceed to assign it to a user by following the steps outlined below: - -- Visit the [Users & Licenses page](https://app.localstack.cloud/workspace/members). -- Select a user in the **Workspace Members** section for license assignment. -- Define user's role via the **Member Role** dropdown. - Single users automatically receive the **Admin** role. -- Toggle **Advanced Permissions** to set specific permissions. - Single users automatically receive full permissions. -- Click **Save** to complete the assignment. - Single users assign licenses to themselves. - -![Assigning a license](/images/aws/assigning-a-license.png) - -If you have joined a workspace, you need to be assigned a license by the workspace administrator. -In case of switching workspaces or licenses, you need to make sure that you are assigned to the correct license. - -:::note -If you do not assign a license, you will not be able to use LocalStack even if you have a valid Auth token. +:::danger[Credential security] +Auth Tokens provide access to your license and workspace. Do not commit tokens to version control. If a token is exposed, rotate it immediately in the LocalStack Web Application. ::: -To view your own assigned license, visit the [My License page](https://app.localstack.cloud/workspace/my-license). -You can further navigate to the [Auth Token page](https://app.localstack.cloud/workspace/auth-tokens) to view your **Developer Auth Token** and **CI Auth Token**. - -## Configuring your Auth Token +## Token types -LocalStack requires the `LOCALSTACK_AUTH_TOKEN` environment variable to contain your Auth Token. -You can configure your Auth Token in several ways, depending on your use case. -The following sections describe the various methods of setting your Auth Token. +| Token Type | Scope | Use Case | +| :--- | :--- | :--- | +| **Developer Token** | Individual | Local development workstations. Managed per user. | +| **CI Auth Token** | Workspace | Automated pipelines and shared runners. Managed by workspace admins. | -:::danger +## Configure your token -- It's crucial to keep your Auth Token confidential. - Do not include it in source code management systems, such as Git repositories. -- Be aware that if an Auth Token is committed to a public repository, it's at risk of exposure, and could remain in the repository's history, even if attempts are made to rewrite it. -- In case your Auth Token is accidentally published, immediately rotate it on the [Auth Token page](https://app.localstack.cloud/workspace/auth-tokens). - ::: +Authentication requirements vary based on your chosen execution method. -### LocalStack CLI +### lstk -You should set the `LOCALSTACK_AUTH_TOKEN` environment variable either before or during the startup of LocalStack using the `localstack` command-line interface (CLI). +The `lstk` CLI automates the authentication lifecycle. On initial execution, it triggers a browser-based OAuth flow and stores the resulting token in your system keyring. No manual environment variable configuration is required. - - - \nlocalstack start`} - lang="shell" - /> - - - \nlocalstack start`} - lang="powershell" - /> - - - -:::note +```bash +lstk start +``` -1. You can alternatively set the `LOCALSTACK_AUTH_TOKEN` environment variable in your shell session. - This ensures the Auth Token is transmitted to your LocalStack container, enabling key activation. -2. The `localstack auth set-token` command is only available for `localstack` CLI and cannot be used with a Docker/Docker Compose setup. - ::: +### LocalStack CLI -You have the option to run your LocalStack container in the background by appending the `-d` flag to the `localstack start` command. +If you use the LocalStack CLI, set your token with the `auth` command. This stores the token in your local configuration. -The `localstack` CLI automatically detects the Auth Token and appropriately conveys it to the LocalStack container. +```bash +localstack auth set-token +localstack start +``` :::note -If you are using LocalStack with an Auth Token, it's necessary to download the [LocalStack for AWS image](/aws/configuration/config/docker-images#localstack-for-aws-image), which includes Pro services and several advanced features. +You can alternatively set the `LOCALSTACK_AUTH_TOKEN` environment variable in your shell session. +The `localstack auth set-token` command is only available for the `localstack` CLI and cannot be used with a Docker or Docker Compose setup. ::: -### Docker +### Docker and Docker Compose -To start LocalStack via Docker, you need to provide the Auth Token using the `-e` flag, which is used for setting environment variables. - -```bash {5} -docker run \ - --rm -it \ - -p 4566:4566 \ - -p 4510-4559:4510-4559 \ - -e LOCALSTACK_AUTH_TOKEN=${LOCALSTACK_AUTH_TOKEN:- } \ - localstack/localstack-pro -``` +For direct container execution, inject the token as an environment variable. For complete startup examples, see the [Docker Compose](/aws/getting-started/installation/#docker-compose) and [Docker CLI](/aws/getting-started/installation/#docker-cli) installation options. -For more information about starting LocalStack with Docker, take a look at our [Docker installation](/aws/getting-started/installation/#docker) guide. +**Docker CLI:** -### Docker Compose +```bash +-e LOCALSTACK_AUTH_TOKEN=${LOCALSTACK_AUTH_TOKEN} +``` -To start LocalStack using `docker compose`, you have to include the `LOCALSTACK_AUTH_TOKEN` environment variable in your `docker-compose.yml` file: +**Docker Compose:** ```yaml environment: - - LOCALSTACK_AUTH_TOKEN=${LOCALSTACK_AUTH_TOKEN- } + - LOCALSTACK_AUTH_TOKEN=${LOCALSTACK_AUTH_TOKEN} ``` -You can manually set the Auth Token, or use the `export` command to establish the Auth Token in your current shell session. -This ensures the Auth Token is transmitted to your LocalStack container, enabling key activation. - -### CI Environments - -CI environments require a CI Auth Token. -Developer Auth Tokens cannot be used in CI. -CI Auth Tokens are available on the [Auth Tokens page](https://app.localstack.cloud/workspace/auth-tokens) and are configured similarly to Developer Auth Tokens. - -To set the CI Auth Token, add the Auth Token value in the `LOCALSTACK_AUTH_TOKEN` environment variable of your CI provider, and refer to it when starting LocalStack in your CI workflow. -You can find detailed examples in our [LocalStack in CI documentation](/aws/integrations/continuous-integration/). - -## Rotating the Auth Token - -Your personal Auth Token provides full access to your workspace and LocalStack license. -It's important to treat auth tokens as confidential, avoiding sharing or storing them in source control management systems (SCMs) like Git. - -If you believe your Auth Token has been compromised or becomes known to someone else, reset it without delay. -When you reset a token, the old one is immediately deactivated, losing its ability to access your license or workspace. -It is not possible to restore previous tokens. - -To rotate your Auth Token, go to the [Auth Token page](https://app.localstack.cloud/workspace/auth-tokens) and select the **Reset Auth Token** option. +### CI environments -## Licensing configuration & activation checkup +CI environments should use a dedicated CI Auth Token stored in your CI provider's secret manager. +For complete examples, see the [CI/CD guide](/aws/getting-started/ci-cd/). -To avoid logging any licensing-related error messages, set `LOG_LICENSE_ISSUES=0` in your environment. -Refer to our [configuration guide](/aws/configuration/config/configuration/#localstack-for-aws) for more information. +## Verify activation -The simplest method to verify if LocalStack is active is by querying the health endpoint for a list of running services: +Verify the activation status by querying the LocalStack info endpoint: @@ -173,61 +87,44 @@ The simplest method to verify if LocalStack is active is by querying the health - ```bash + ```powershell Invoke-WebRequest -Uri http://localhost:4566/_localstack/info | ConvertFrom-Json ``` -The following output would be retrieved: - -```bash +```json title="Output" { - "version": "3.0.0:6dd3f3d", "edition": "pro", - "is_license_activated": true, - "session_id": "7132da5f-a380-44ca-8897-6f0fdfd7b1c9", - "machine_id": "0c49752c", - "system": "linux", - "is_docker": true, - "server_time_utc": "2023-11-21T05:41:33", - "uptime": 161 + "is_license_activated": true } ``` -The `edition` field is always `pro` and the `is_license_activated` field is set to `true`. -Another way to confirm this is by checking the logs of the LocalStack container for a message indicating successful license activation: - -```bash -[...] Successfully activated license -``` - -Otherwise, check our [troubleshooting](#troubleshooting) section. - -## FAQ +The `edition` field should be `pro`, and `is_license_activated` should be `true`. -### How do I activate older versions of LocalStack (Before v3.0)? +## License assignment -Prior to the introduction of Auth Tokens, LocalStack used **API keys** managed through the `LOCALSTACK_API_KEY` environment variable for activation. +An Auth Token can only activate licensed features if a license is assigned to the associated user or workspace. -For backwards compatibility, we've updated our back-end to accept new Auth Tokens within the `LOCALSTACK_API_KEY` variable. -You can use the new Auth Token in the same way you previously used the API key. +1. Navigate to the [Users & Licenses page](https://app.localstack.cloud/workspace/members). +2. Identify the target user in **Workspace Members**. +3. Select the appropriate **Member Role**. +4. Save the configuration to activate the license for that identity. -### When will the legacy API keys be phased out? +:::note +LocalStack cannot activate licensed features unless the token belongs to a user or workspace with an assigned license. +::: -In early 2025, we will begin phasing out legacy API keys entirely. -After the sunsetting period, legacy API and legacy CI keys will no longer activate or work with LocalStack. +## Rotate a token -During the sunsetting period, the legacy service will experience scheduled downtimes. -These are planned to encourage users to transition to new Auth Tokens while minimizing impact for those who have not yet updated. +Rotate an Auth Token if it has been exposed, shared accidentally, or stored in a place where it should not be. Go to the [Auth Tokens page](https://app.localstack.cloud/workspace/auth-tokens) and select the reset option for the affected token. -The downtime schedule will be communicated well in advance, allowing users ample time to switch to the new Auth Tokens. +After rotation, update every local shell, container configuration, or CI secret that used the old token. ## Troubleshooting -While using Auth Tokens, LocalStack demands a successful license activation for startup. -If the activation of the license is unsuccessful, LocalStack will exit and display error messages. +LocalStack requires successful license activation during startup. If activation fails, LocalStack exits and displays an error message: ```bash =============================================== @@ -242,11 +139,11 @@ Due to this error, Localstack has quit. LocalStack for AWS features can only be - If you want to continue using LocalStack without pro features you can set `ACTIVATE_PRO=0`. ``` -The key activation in LocalStack may fail for several reasons, and the most common ones are listed below in this section. +Activation may fail for several reasons, and the most common ones are listed below. -### Missing Credentials +### Missing credentials -You need to provide either an Auth Token to start the LocalStack for AWS image successfully. +You need to provide an Auth Token to start the LocalStack for AWS image successfully. You can find your Auth Token on the [Auth Tokens page](https://app.localstack.cloud/workspace/auth-tokens) in the LocalStack Web Application. If you are using the `localstack` CLI, you can set the `LOCALSTACK_AUTH_TOKEN` environment variable to your Auth Token or use the following command to set it up: @@ -255,12 +152,12 @@ If you are using the `localstack` CLI, you can set the `LOCALSTACK_AUTH_TOKEN` e localstack auth set-token ``` -### Invalid License +### Invalid license The issue may occur if there is no valid license linked to your account due to expiration or if the license has not been assigned. You can check your license status in the LocalStack Web Application on the [My License page](https://app.localstack.cloud/workspace/my-license). -### License Server Unreachable +### License server unreachable LocalStack initiates offline activation when the license server is unreachable, requiring re-activation every 24 hours. Log output may indicate issues with your machine resolving the LocalStack API domain, which can be verified using a tool like `dig`: @@ -273,4 +170,8 @@ If the result shows a status other than `status: NOERROR`, your machine is unabl Certain corporate DNS servers may filter requests to specific domains. Kindly reach out to your network administrator to safelist `localstack.cloud` domain. -If you have any further problems concerning your license activation, or if the steps do not help, do not hesitate to [contact us](https://localstack.cloud/contact/). +If you have any further problems concerning your license activation, or if the steps do not help, don't hesitate to [contact us](https://localstack.cloud/contact/). + +## Next steps + +After configuring your Auth Token, continue to the [Local Development guide](/aws/getting-started/local-development/) to start LocalStack and deploy a local serverless API. diff --git a/src/content/docs/aws/getting-started/ci-cd.mdx b/src/content/docs/aws/getting-started/ci-cd.mdx new file mode 100644 index 000000000..b3dacb0ef --- /dev/null +++ b/src/content/docs/aws/getting-started/ci-cd.mdx @@ -0,0 +1,211 @@ +--- +title: CI Integration +description: Use LocalStack in CI pipelines to run integration tests against local AWS infrastructure. +template: doc +sidebar: + order: 4 +--- + +import { Tabs, TabItem } from '@astrojs/starlight/components'; + +## Introduction + +LocalStack helps you run integration tests in CI against emulated AWS infrastructure. Your pipeline starts LocalStack inside the CI job, deploys or prepares the resources your application needs, runs tests against the local endpoint, and then discards the environment when the job ends. + +## How LocalStack works in CI + +A typical CI job with LocalStack follows this flow: + +1. Check out your application code. +2. Start LocalStack in the CI runner. +3. Configure a CI Auth Token through the CI provider's secret manager. +4. Deploy test infrastructure with tools such as `awslocal`, `tflocal`, `cdklocal`, or your application's test harness. +5. Run integration tests against the LocalStack endpoint. +6. Collect logs, test reports, and artifacts from the job. + +This gives every pipeline run a fresh AWS-compatible environment without creating cloud resources in an AWS account. + +## What changes from local development + +CI runs are usually more constrained than local development: + +- Use a dedicated **CI Auth Token** instead of a personal Developer Token. +- Store `LOCALSTACK_AUTH_TOKEN` as a protected CI secret. +- Start LocalStack non-interactively as part of the job. +- Treat the LocalStack container as ephemeral unless your workflow explicitly saves state. +- Export logs and test reports before the runner shuts down. + +Docker and Docker Compose are still common ways to run containers inside CI runners, but they are not CI tools by themselves. For container startup details, see the [Installation guide](/aws/getting-started/installation/#container-and-orchestration-tools). For provider-specific CI setup, use the integration guides below. + +## Choose your CI provider + +Start with the CI system you use. These snippets show the basic LocalStack startup shape for each provider; the linked guides include authentication, configuration, logs, state management, and provider-specific caveats. + +:::note +For brevity, these snippets show only the LocalStack startup shape. Apart from the GitHub Actions example, they assume your CI Auth Token is already exposed to the job as the `LOCALSTACK_AUTH_TOKEN` environment variable. Store it as a secret in your CI provider before running them, and see [Authentication in CI](#authentication-in-ci) below. +::: + + + + + ```yaml + - name: Start LocalStack + uses: LocalStack/setup-localstack@main + with: + image-tag: 'latest' + install-awslocal: 'true' + env: + LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} + ``` + + See the [GitHub Actions guide](/aws/integrations/continuous-integration/github-actions/) for the full setup. + + + + + ```yaml + version: '2.1' + orbs: + python: circleci/python@4.0.0 + jobs: + localstack-test: + machine: + image: ubuntu-2204:current + steps: + - checkout + - run: + name: Install lstk and awslocal + command: | + python3 -m pip install --user --upgrade pip + python3 -m pip install --user localstack awscli-local[ver1] + echo 'export PATH=$HOME/.local/bin:$PATH' >> "$BASH_ENV" + - run: + name: Start LocalStack + command: | + source "$BASH_ENV" + docker pull localstack/localstack:latest + localstack start -d + localstack wait -t 60 + ``` + + See the [CircleCI guide](/aws/integrations/continuous-integration/circleci/) for the full setup. + + + + + ```yaml + image: python:3.9 + + definitions: + services: + docker: + memory: 2048 + + pipelines: + default: + - step: + name: Test LocalStack + services: + - docker + script: + - export DOCKER_SOCK=$DOCKER_HOST + - export AWS_ENDPOINT_URL="http://localhost.localstack.cloud:4566" + - echo "${BITBUCKET_DOCKER_HOST_INTERNAL} localhost.localstack.cloud " >> /etc/hosts + - pip install localstack awscli-local + - docker run -d --rm -p 4566:4566 -p 4510-4559:4510-4559 -e DOCKER_SOCK=tcp://${BITBUCKET_DOCKER_HOST_INTERNAL}:2375 -e DOCKER_HOST=tcp://${BITBUCKET_DOCKER_HOST_INTERNAL}:2375 --name localstack-main localstack/localstack + - localstack wait -t 60 + ``` + + See the [Bitbucket Pipelines guide](/aws/integrations/continuous-integration/bitbucket/) for the full setup. + + + + + ```yaml + version: 0.2 + + phases: + pre_build: + commands: + - pip3 install localstack awscli + - docker pull public.ecr.aws/localstack/localstack:latest + - localstack start -d + - localstack wait -t 30 + ``` + + See the [CodeBuild guide](/aws/integrations/continuous-integration/codebuild/) for the full setup. + + + + + ```yaml + stages: + - test + + variables: + DOCKER_HOST: tcp://docker:2375 + DOCKER_TLS_CERTDIR: "" + LOCALSTACK_HOST: "localstack:4566" + + services: + - name: localstack/localstack:latest + alias: localstack + - name: docker:dind + alias: docker + command: ["--tls=false"] + + localstack-test: + stage: test + image: python:3.11 + script: + - pip install awscli-local + - awslocal s3 mb s3://test-bucket + ``` + + See the [GitLab CI guide](/aws/integrations/continuous-integration/gitlab-ci/) for the full setup. + + + + + ```yaml + language: python + + services: + - docker + + python: + - "3.8" + + before_install: + - python -m pip install localstack awscli-local[ver1] + - docker pull localstack/localstack + - localstack start -d + - localstack wait -t 30 + ``` + + See the [Travis CI guide](/aws/integrations/continuous-integration/travis-ci/) for the full setup. + + + + +You can also start from the [CI integrations overview](/aws/integrations/continuous-integration/) if you want a broader explanation of the CI workflow. + +## Authentication in CI + +CI environments should use a CI Auth Token. Create one from the [Auth Tokens page](https://app.localstack.cloud/workspace/auth-tokens), then store it as `LOCALSTACK_AUTH_TOKEN` in your CI provider's secret manager. + +Do not commit tokens to your repository or write them directly into workflow files. For more details on token types and rotation, see the [Auth Token guide](/aws/getting-started/auth-token/). + +## State in CI + +Most CI jobs should start with a clean LocalStack instance. A fresh instance makes test runs reproducible and avoids hidden dependencies between jobs. + +If your pipeline needs state across jobs or workflow stages, use one of the state management options documented outside this getting started page: + +- [Cloud Pods](/aws/capabilities/state-management/cloud-pods/) to save and restore named LocalStack state snapshots. +- [State export and import](/aws/capabilities/state-management/export-import-state/) to move state through artifacts or caches. +- [Persistence](/aws/capabilities/state-management/persistence/) when the same runner keeps a mounted LocalStack volume. + +## Next steps + +After choosing your CI provider, continue to [AI & Agent Workflows](/aws/getting-started/ai-workflows/) to learn how AI coding assistants can help generate, deploy, and test LocalStack-backed AWS applications. diff --git a/src/content/docs/aws/getting-started/faq.mdx b/src/content/docs/aws/getting-started/faq.mdx index 16a420dd0..3bf0cbd75 100644 --- a/src/content/docs/aws/getting-started/faq.mdx +++ b/src/content/docs/aws/getting-started/faq.mdx @@ -3,7 +3,7 @@ title: FAQ description: Frequently asked questions about LocalStack for AWS. template: doc sidebar: - order: 5 + order: 7 --- import { Tabs, TabItem } from '@astrojs/starlight/components'; @@ -19,7 +19,7 @@ To resolve the issue follow the steps: This can be done by deleting the cached certificate file. For example, on Linux systems, you can locate and remove the file at `~/.cache/localstack/volume/cache/server.test.pem`. The exact path may differ depending on your operating system and how you've started LocalStack. - Please refer to our [documentation](/aws/configuration/config/filesystem/#localstack-volume-directory) for specific instructions. + Please refer to our [documentation](/aws/customization/advanced/filesystem/#localstack-volume-directory) for specific instructions. **Workarounds for older (<v3.7.0) LocalStack versions:** @@ -35,20 +35,6 @@ To resolve the issue follow the steps: For other SSL-related issues encountered during startup — such as Python `CERTIFICATE_VERIFY_FAILED` tracebacks or corporate TLS interception — see [How do I diagnose if my SSL traffic is being intercepted by a corporate proxy?](#how-do-i-diagnose-if-my-ssl-traffic-is-being-intercepted-by-a-corporate-proxy). -### How to update my LocalStack CLI? - -If the LocalStack CLI version is heavily outdated, it might lead to issues with container startup and debug commands. -If you are using an older version of LocalStack, you can update it by running the following command: - -```bash -pip install --upgrade localstack localstack-ext -``` - -If you are running a newer version of LocalStack, you can check the version by running the following command: - -```bash -localstack update localstack-cli -``` ### Is using `localhost.localstack.cloud:4566` to set as the endpoint for AWS services recommended? @@ -122,23 +108,6 @@ aws ssm put-parameter --name "//test/parameter/new" --type String --value "test" For additional known issues related to Git Bash, you can refer to the following link: [Git Bash Known Issues](https://github.com/git-for-windows/build-extra/blob/main/ReleaseNotes.md#known-issues) -### How to fix LocalStack CLI (Python) UTF-8 encoding issue under Windows? - -If you are using LocalStack CLI under Windows, you might run into encoding issues. -To fix this, set the following environment variables: -Set the system locale (language for non-Unicode programs) to UTF-8 to avoid Unicode errors. - -Follow these steps: - -- Open the Control Panel. -- Go to "Clock and Region" or "Region and Language." -- Click on the "Administrative" tab. -- Click on the "Change system locale" button. -- Select "Beta: Use Unicode UTF-8 for worldwide language support" and click "OK." -- Restart your computer to apply the changes. - -If you would like to keep the system locale as it is, you can mitigate the issue by using the command `localstack --no-banner`. - ### How do I resolve connection issues with proxy blocking access to LocalStack's BigData image? A company proxy can lead to connection issues. @@ -183,7 +152,7 @@ If the container can reach the internet generally but not LocalStack endpoints s Using LocalStack inside a Docker network with multiple other containers can lead to connectivity issues from/to those containers. For example, a container which attempts to deploy a stack and interact with the services directly, from within the same Docker network. -Refer to our [network troubleshooting guide](/aws/configuration/networking/) covering several scenarios. +Refer to our [network troubleshooting guide](/aws/customization/networking/) covering several scenarios. ### How to resolve the pull rate limit issue for LocalStack's Docker image? @@ -314,7 +283,7 @@ The CLI also supports a `--debug` flag that prints host-side debug output (host localstack --debug start ``` -See the [Logging reference](/aws/configuration/config/logging/) for the full list of log-related options. +See the [Logging reference](/aws/customization/logging/) for the full list of log-related options. ### How do I capture and share LocalStack container logs for troubleshooting? @@ -389,7 +358,7 @@ Common causes: ``` 3. **The billing system has not yet activated your renewal.** Check the subscription status at [app.localstack.cloud/account/subscriptions](https://app.localstack.cloud/account/subscriptions). If the subscription is paid but still shows `EXPIRED`, open a support ticket with your workspace name and the last four characters of the auth token. -4. **Wrong license type assigned.** Sometimes a user is on an expired Trial or Hobby license. Unassign the old license and assign a paid one — see [Managing users and licenses](/aws/configuration/web-app/managing-users-licenses/#managing-licenses). +4. **Wrong license type assigned.** Sometimes a user is on an expired Trial or Hobby license. Unassign the old license and assign a paid one — see [Managing users and licenses](/aws/organizations-admin/managing-users-licenses/#managing-licenses). ### Why does my license show as SUSPENDED? @@ -626,14 +595,6 @@ If that happens, see [How do I trust my corporate TLS interceptor certificate in Offline images for airgapped environments are available on our enterprise tier, please reach out to our sales team. -### Why does LocalStack startup fail with "Docker not available"? - -The LocalStack CLI cannot reach the Docker daemon. Common fixes: - -- Start Docker Desktop and confirm it's running. -- Verify `docker ps` works as your current user (no `sudo`). -- On macOS, check that `/var/run/docker.sock` is reachable from Docker Desktop. -- If you use Colima, Rancher, or Podman, make sure the `DOCKER_HOST` environment variable points at the correct socket. ### Why does LocalStack fail with "ports are not available: exposing port TCP 127.0.0.1:443"? @@ -701,7 +662,7 @@ Open a ticket by emailing `support@localstack.cloud`. | `SSL_NO_VERIFY` | `1` to disable outbound TLS verification (debug only) | | `ACTIVATE_PRO` | `0` to start LocalStack without Pro features (lets the container boot even if license activation fails) | -For the full configuration reference, see the [Configuration reference](/aws/configuration/config/configuration/) and the broader [Networking documentation](/aws/configuration/networking/). +For the full configuration reference, see the [Configuration reference](/aws/customization/configuration-options/) and the broader [Networking documentation](/aws/customization/networking/). ## LocalStack Platform FAQs diff --git a/src/content/docs/aws/getting-started/index.md b/src/content/docs/aws/getting-started/index.md deleted file mode 100644 index e6bb33555..000000000 --- a/src/content/docs/aws/getting-started/index.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Overview -description: This section describes how to get started with LocalStack using a variety of options, and provides details on how LocalStack can be configured to fit the needs of a local cloud sandbox for development, testing, and experimentation. -template: doc -editUrl: false -sidebar: - order: 1 ---- - -[LocalStack](https://localstack.cloud) is a cloud service emulator that runs in a single container on your laptop or in your CI environment. -With LocalStack, you can run your AWS applications or Lambdas entirely on your local machine without connecting to a remote cloud provider! - -Whether you are testing complex CDK applications or Terraform configurations, or just beginning to learn about AWS services, LocalStack helps speed up and simplify your testing and development workflow. - -LocalStack supports a growing number of [AWS services](/aws/services/) -, like [Lambda](/aws/services/lambda), [S3](/aws/services/s3), [DynamoDB](/aws/services/dynamodb), [Kinesis](/aws/services/kinesis), [SQS](/aws/services/sqs), [SNS](/aws/services/sns), and more! -[LocalStack for AWS](https://localstack.cloud/pricing) also supports APIs and advanced features to make your cloud development experience a breeze. - -You can find a comprehensive list of supported APIs on each AWS service page. - -LocalStack also provides additional features to make your life as a cloud developer easier! - -Check out LocalStack's [Cloud Developer Tools](/aws/developer-tools/). diff --git a/src/content/docs/aws/getting-started/index.mdx b/src/content/docs/aws/getting-started/index.mdx new file mode 100644 index 000000000..24414b24f --- /dev/null +++ b/src/content/docs/aws/getting-started/index.mdx @@ -0,0 +1,68 @@ +--- +title: Overview +description: Introduction to LocalStack for AWS, covering core use cases, local cloud capabilities, and deployment options for development and testing. +template: doc +editUrl: false +sidebar: + order: 1 +--- + +import { SectionCards } from '../../../../components/SectionCards.tsx'; + +LocalStack provides a cloud service emulator that runs within a single container on your local machine or CI environment. It delivers a functional AWS environment including Lambda, DynamoDB, S3, SQS, and [80+ supported services](/aws/services/), enabling development and testing without an AWS account or cloud-related costs. + +### Core Use Cases + +- **Accelerate development loops**: Test changes against local AWS services instantly to bypass deployment wait times. +- **Automate integration testing**: Execute integration tests against local AWS infrastructure within pull requests to identify regressions before production. +- **Validate IaC**: Deploy Terraform, CDK, or CloudFormation templates to LocalStack to verify infrastructure logic before applying changes to a cloud environment. +- **Experimental sandbox**: Explore new AWS services and architectures in a risk-free environment. + +LocalStack also provides advanced features for team collaboration and security, including [Cloud Pods](/aws/developer-tools/snapshots/cloud-pods/) for state management, [IAM policy enforcement](/aws/developer-tools/security-testing/iam-policy-enforcement/), and [Chaos Engineering](/aws/developer-tools/chaos-engineering/). + +## Start with the basics + + + +:::note +**Enterprise Kubernetes Deployment:** LocalStack also supports execution within Kubernetes clusters via the Operator or Helm charts. This model enables dynamic scaling, environment isolation, and native orchestration. See our [Kubernetes Deployment guide](/aws/customization/kubernetes/) for more information. +::: diff --git a/src/content/docs/aws/getting-started/installation.mdx b/src/content/docs/aws/getting-started/installation.mdx index 27fee5d06..3aceb90be 100644 --- a/src/content/docs/aws/getting-started/installation.mdx +++ b/src/content/docs/aws/getting-started/installation.mdx @@ -1,6 +1,6 @@ --- title: Installation -description: Basic installation guide to get started with LocalStack on your local machine. +description: Install LocalStack with lstk, Docker, Docker Compose, or Helm. template: doc sidebar: order: 2 @@ -9,296 +9,74 @@ sidebar: import { Code, LinkButton, Tabs, TabItem } from '@astrojs/starlight/components'; import { LOCALSTACK_AWS_VERSION } from 'astro:env/server'; -## LocalStack CLI +## Introduction -The quickest way get started with LocalStack is by using the LocalStack CLI. -It allows you to start LocalStack from your command line. -Please make sure that you have a working [Docker installation](https://docs.docker.com/get-docker/) on your machine before moving on. +LocalStack provides multiple installation paths depending on your development environment and requirements. We recommend a CLI-based installation for the most consistent local startup experience. -### Installing LocalStack CLI +Use [`lstk`](#lstk) to install, authenticate, and start LocalStack with minimal setup. -The CLI starts and manages the LocalStack Docker container. -For alternative methods of managing the LocalStack container, see our [alternative installation instructions](#alternatives). +LocalStack for AWS features require an [Auth Token](/aws/getting-started/auth-token/) to activate your running instance. `lstk` handles authentication through a browser-based login flow, while Docker and CI workflows can use `LOCALSTACK_AUTH_TOKEN`. - - - - -You can download the pre-built binary for your architecture using the link below: - - - x86-64 - - - ARM64 - - -or use the curl commands below: - -For x86-64: - - - -For ARM64: - - - -Then extract the LocalStack CLI from the terminal: - - - -
-Alternative: Homebrew on Linux - -If you are using [Homebrew for Linux](https://docs.brew.sh/Homebrew-on-Linux), you can install the LocalStack CLI directly from our official LocalStack tap: - -```bash -brew install localstack/tap/localstack-cli -``` - -
- -
- - - -You can install the LocalStack CLI using Brew directly from our official LocalStack tap: - -```bash -brew install localstack/tap/localstack-cli -``` - -
-Alternative: Binary Download - -You may download the binary for your architecture using the link below: - - - Intel (AMD64) - - -or use the following curl command: - - - -Then extract the LocalStack CLI from the terminal: - - +## lstk -
-
- - - -You can download the pre-built binary for your architecture using the link below: - - - Intel (AMD64) - - -Then extract the archive and execute the binary in Powershell. - - - - +`lstk` is a lightweight CLI for LocalStack that manages the authentication and container lifecycle in a single workflow. -If you cannot use the binary releases of LocalStack, you can install the Python distribution. +**Requirement:** You must have a working [Docker installation](https://docs.docker.com/get-docker/) before proceeding. -Please make sure to install the following before moving ahead: -- [Python](https://docs.python.org/3/using/index.html) -- [pip](https://pip.pypa.io/en/stable/installation/) +### Install lstk -Next install the LocalStack CLI in your Python environment by running: - -```bash -python3 -m pip install --upgrade localstack -``` - -:::note -To download a specific version of LocalStack, replace `` with the required version from [changelog page](/aws/changelog). - -```bash -python3 -m pip install localstack== -``` - -::: - -:::tip[MacOS Sierra?] -If you have problems with permissions in MacOS X Sierra, install with: - -```bash -python3 -m pip install --user localstack -``` - -::: - -:::danger -Do not use `sudo` or the `root` user when starting LocalStack. -It should be installed and started entirely under a local non-root user. -::: - - + + + ```bash + brew install localstack/tap/lstk + ``` + + + ```bash + npm install -g @localstack/lstk + ``` + + + Download the binary for your platform from the [GitHub Releases](https://github.com/localstack/lstk/releases) and add it to your `PATH`. + -### Starting LocalStack - -To verify that the LocalStack CLI was installed correctly, you can check the version in your terminal: - - - -You are all set! - -:::note -To start LocalStack, you must first [set up your auth token](/aws/getting-started/auth-token). -::: - -Once you've set up your auth token, you can start LocalStack with the following command: +### Start lstk ```bash -localstack start # start localstack in background with -d flag +lstk start ``` -{/* prettier-ignore */} - - -### Updating LocalStack CLI - -The LocalStack CLI allows you to easily update the different components of LocalStack. -To check the various options available for updating, run: +The first execution initiates a browser-based login flow. Subsequent starts use credentials stored in your system keyring. -```bash -localstack update --help -``` +### Update lstk ```bash -Usage: localstack update [OPTIONS] COMMAND [ARGS]... - - Update different LocalStack components. - -Options: - -h, --help Show this message and exit. - -Commands: - all Update all LocalStack components - docker-images Update docker images LocalStack depends on - localstack-cli Update LocalStack CLI +lstk update ``` -:::note -Updating the LocalStack CLI using `localstack update localstack-cli` and `localstack update all` will work only if it was installed from the Python distribution. -If it was installed using the pre-built binary or via Brew, please run the installation steps again to update to the latest version. -::: - -## Alternatives - -Besides using the CLI, there are other ways of starting and managing your LocalStack instance: - -- [LocalStack Desktop](#localstack-desktop)\ - Get a desktop experience and work with your local LocalStack instance via the UI. - -- [LocalStack Docker Extension](#localstack-docker-extension)\ - Use the LocalStack extension for Docker Desktop to work with your LocalStack instance. +For more details, see the [lstk documentation](/aws/developer-tools/running-localstack/lstk/). -- [Docker-Compose](#docker-compose)\ - Use Docker Compose to configure and start your LocalStack Docker container. +## Container and orchestration tools -- [Docker](#docker)\ - Use the Docker CLI to manually start the LocalStack Docker container. +Use these methods when you need explicit container configuration, want to run LocalStack alongside other services, or deploy LocalStack in CI and Kubernetes environments. +For everyday local development, `lstk` is usually simpler. -- [LocalStack Operator](#localstack-operator)\ - Use the LocalStack Operator to deploy and manage LocalStack instances inside a Kubernetes cluster. +### Docker Compose -LocalStack runs inside a Docker container, and the above options are different ways to start and manage the LocalStack Docker container. +Use Docker Compose when you want a reusable configuration file that can be shared across a team or checked into a project repository. +Create a `docker-compose.yml` with the following configuration: -The LocalStack emulator is available on Docker Hub (`localstack/localstack-pro`). - -For a comprehensive overview of the LocalStack images, check out our [Docker images documentation](/aws/configuration/config/docker-images). - -### LocalStack Desktop - -Learn more about our desktop client at [LocalStack Desktop](/aws/configuration/web-app/localstack-desktop) and download it [here](https://app.localstack.cloud/download). - -### LocalStack Docker Extension - -Install our [official Docker Desktop extension](https://hub.docker.com/extensions/localstack/localstack-docker-desktop) to manage LocalStack. -See [LocalStack Docker Extension](/aws/configuration/localstack-docker-extension) for more information. - -### Docker-Compose - -To use LocalStack without the [LocalStack CLI](#localstack-cli), you have the option of running the LocalStack Docker container by yourself. -If you want to manually manage your Docker container, it's usually a good idea to use [Docker Compose](https://docs.docker.com/compose/reference/) in order to simplify your container configuration. - -#### Prerequisites - -- [Docker](https://docs.docker.com/get-docker/) -- [Docker Compose](https://docs.docker.com/compose/install/) (version 1.9.0+) - -#### Starting LocalStack with Docker-Compose - -You can start LocalStack with [Docker Compose](https://docs.docker.com/compose/) by configuring a `docker-compose.yml` file. -Docker Compose v1.9.0 and above is supported. - -```yaml showshowLineNumbers +```yaml showLineNumbers services: localstack: container_name: '${LOCALSTACK_DOCKER_NAME:-localstack-main}' - image: localstack/localstack-pro # required for Pro + image: localstack/localstack ports: - '127.0.0.1:4566:4566' # LocalStack Gateway - '127.0.0.1:4510-4559:4510-4559' # external services port range - - '127.0.0.1:443:443' # LocalStack HTTPS Gateway (Pro) + - '127.0.0.1:443:443' # LocalStack HTTPS Gateway environment: # Activate LocalStack for AWS: https://docs.localstack.cloud/getting-started/auth-token/ - LOCALSTACK_AUTH_TOKEN=${LOCALSTACK_AUTH_TOKEN:?} # required for Pro @@ -310,55 +88,11 @@ services: - '/var/run/docker.sock:/var/run/docker.sock' ``` -Start the container by running the following command: +Execute `docker compose up` to start. -```bash -docker compose up -``` +### Docker CLI -:::note - -- This command pulls the current nightly build from the `main` branch (if you don't have the image locally) and **not** the latest supported version. - If you want to use a specific version, set the appropriate LocalStack image tag at `services.localstack.image` in the `docker-compose.yml` file (for example `localstack/localstack:`). - -- If you are using LocalStack with an [Auth Token](/aws/getting-started/auth-token), you need to specify the image tag as `localstack/localstack-pro` in the `docker-compose.yml` file. - Going forward, `localstack/localstack-pro` image will contain our Pro-supported services and APIs. - -- This command reuses the image if it's already on your machine, i.e. it will **not** pull the latest image automatically from Docker Hub. - -- Mounting the Docker socket `/var/run/docker.sock` as a volume is required for some services that use Docker to provide the emulation, such as AWS Lambda. - Check out the [Lambda providers](/aws/services/lambda) documentation for more information. - -- To facilitate interoperability, configuration variables can be prefixed with `LOCALSTACK_` in docker. - For instance, setting `LOCALSTACK_PERSISTENCE=1` is equivalent to `PERSISTENCE=1`. - -- If using the Docker default bridge network using `network_mode: bridge`, container name resolution will not work inside your containers. - Please consider removing it, if this functionality is needed. - -- To configure an Auth Token, refer to the [Auth Token](/aws/getting-started/auth-token) documentation. - ::: - -Please note that there are a few pitfalls when configuring your stack manually via docker-compose (e.g., required container name, Docker network, volume mounts, and environment variables). -We recommend using the LocalStack CLI to validate your configuration, which will print warning messages in case it detects any potential misconfigurations: - -```bash -localstack config validate -``` - -### Docker - -You can also directly start the LocalStack container using the Docker CLI instead of [Docker-Compose](#docker-compose). -This method requires more manual steps and configuration, but it gives you more control over the container settings. - -#### Prerequisites - -Please make sure that you have a working [Docker installation](https://docs.docker.com/get-docker/) on your machine before moving on. -You can check if Docker is correctly configured on your machine by executing `docker info` in your terminal. -If it does not report an error (but shows information on your Docker system), you're good to go. - -#### Starting LocalStack with Docker - -You can start the Docker container simply by executing the following `docker run` command: +Use the Docker CLI for one-off starts or when you want to test a container configuration before moving it into Compose: ```bash docker run \ @@ -368,50 +102,39 @@ docker run \ -p 127.0.0.1:443:443 \ -e LOCALSTACK_AUTH_TOKEN=${LOCALSTACK_AUTH_TOKEN:?} \ -v /var/run/docker.sock:/var/run/docker.sock \ - localstack/localstack-pro + localstack/localstack ``` :::note +The Docker Compose and Docker CLI examples above use the same runtime settings: -- This command pulls the current nightly build from the `main` branch (if you don't have the image locally) and **not** the latest supported version. - If you want to use a specific version of LocalStack, use the appropriate tag: `docker run --rm -it -p 4566:4566 -p 4510-4559:4510-4559 localstack/localstack:`. - Check-out the [changelog page](/aws/changelog) to know more about specific LocalStack versions. - -- If you are using LocalStack with an [Auth Token](/aws/getting-started/auth-token), you need to specify the image tag as `localstack/localstack-pro` in your Docker setup. - Going forward, `localstack/localstack-pro` image will contain our Pro-supported services and APIs. +- The `4566` port exposes the LocalStack Gateway. +- The `4510-4559` range exposes external service ports used by services that bind additional endpoints. +- The `443` port exposes the LocalStack HTTPS Gateway. +- The Docker socket mount is required for services that start additional containers, such as Lambda. +- Docker reuses a local image if one already exists. Pull explicitly or pin an image tag, such as `localstack/localstack:`, when you need reproducible CI or team environments. +- If you use Docker bridge networking, container name resolution may not work as expected from other containers. Prefer the default LocalStack networking setup unless you have a specific reason to customize it. +- Configuration variables can be prefixed with `LOCALSTACK_` in Docker. For instance, setting `LOCALSTACK_PERSISTENCE=1` is equivalent to `PERSISTENCE=1`. -- This command reuses the image if it's already on your machine, i.e. it will **not** pull the latest image automatically from Docker Hub. - -- Mounting the Docker socket `/var/run/docker.sock` as a volume is required for some services that use Docker to provide the emulation, such as AWS Lambda. - Check out the [Lambda providers](/aws/services/lambda) documentation for more information. - -- When using Docker to manually start LocalStack, you will have to configure the container on your own (see [docker-compose-pro.yml](https://github.com/localstack/localstack/blob/main/docker-compose-pro.yml) and [Configuration](/aws/configuration/config/configuration). - This could be seen as the "expert mode" of starting LocalStack. - If you are looking for a simpler method of starting LocalStack, please use the [LocalStack CLI](#localstack-cli). +For more details, see the [Docker images](/aws/customization/other-installations/docker-images/), [configuration](/aws/customization/configuration-options/), and [networking](/aws/customization/networking/) documentation. +::: -- To facilitate interoperability, configuration variables can be prefixed with `LOCALSTACK_` in docker. - For instance, setting `LOCALSTACK_PERSISTENCE=1` is equivalent to `PERSISTENCE=1`. +### Helm (Kubernetes) -- To configure an Auth Token, refer to the [Auth Token](/aws/getting-started/auth-token) documentation. - ::: +Deploy LocalStack to a Kubernetes cluster: -### LocalStack Operator +```bash +helm repo add localstack-repo https://helm.localstack.cloud +helm upgrade --install localstack localstack-repo/localstack +``` -If you want to deploy LocalStack in your [Kubernetes](https://kubernetes.io) cluster, you can use the [LocalStack Operator](/aws/enterprise/kubernetes/kubernetes-operator). +## Graphical user interfaces (GUIs) -## What's next? +### LocalStack Desktop -Now that you have LocalStack up and running, the following resources might be useful for your next steps: +Manage local instances via a standalone desktop application. [Download here](https://app.localstack.cloud/download). -- Check out our [Quickstart guide](/aws/getting-started/quickstart) if you are a new user to get started with LocalStack quickly. -- [Use the LocalStack integrations](/aws/integrations) to interact with LocalStack and other integrated tools, for example: - - Use `awslocal` to use the AWS CLI against your local cloud! - - Use the Serverless Framework with LocalStack! - - And many more! -- [Find out how to configure LocalStack](/aws/configuration/config/configuration) such that it perfectly fits your need. -- [Use LocalStack in your CI environment](/aws/integrations/continuous-integration/) to increase your code quality. -- [Checkout LocalStack's Cloud Developer Tools](/aws/developer-tools/) to further increase your development efficiency with LocalStack. -- Find out about the ways you can [configure LocalStack](/aws/configuration/config/configuration). +Install the [official extension](https://hub.docker.com/extensions/localstack/localstack-docker-desktop) to manage LocalStack directly from the Docker Desktop. ## Troubleshooting @@ -432,7 +155,7 @@ python3 -m localstack.cli.main If you are using the `localstack` CLI to start LocalStack, but the container is not starting, please check the following: -- Uncheck the **Use kernel networking for UDP** option in Docker Desktop (**Settings** → **Resources** → **Network**) or follow the steps in our [documentation](/aws/configuration/dns-server#system-dns-configuration) to disable it. +- Uncheck the **Use kernel networking for UDP** option in Docker Desktop (**Settings** → **Resources** → **Network**) or follow the steps in our [documentation](/aws/customization/networking/dns-server#system-dns-configuration) to disable it. - Start LocalStack with a specific DNS address: ```bash @@ -446,9 +169,13 @@ DNS_ADDRESS=0 localstack start You can now avail logging output and error reporting using LocalStack logs. To access the logs, run the following command: + + ```bash -localstack logs +lstk logs ``` + + AWS requests are now logged uniformly in the INFO log level (set by default or when `DEBUG=0`). The format is: @@ -480,6 +207,10 @@ After running the task, run the diagnostic endpoint and share the archive file w #### My application cannot reach LocalStack over the network -We have extensive network troubleshooting documentation available [here](/aws/configuration/networking/). +We have extensive network troubleshooting documentation available [here](/aws/customization/networking/). If this does not solve your problem then please [reach out to LocalStack Support](/aws/help-support/get-help/). + +## Next steps + +Now that you've completed installation, proceed to the [Auth Token guide](/aws/getting-started/auth-token/) to activate LocalStack and prepare your environment for local development. diff --git a/src/content/docs/aws/getting-started/local-development.mdx b/src/content/docs/aws/getting-started/local-development.mdx new file mode 100644 index 000000000..ec243b5b9 --- /dev/null +++ b/src/content/docs/aws/getting-started/local-development.mdx @@ -0,0 +1,289 @@ +--- +title: Local Development +description: Deploy an AWS serverless API locally using Lambda and DynamoDB on LocalStack. +template: doc +sidebar: + order: 3 +--- + +import { Code, Tabs, TabItem, Steps } from '@astrojs/starlight/components'; +import { LOCALSTACK_AWS_VERSION } from 'astro:env/server'; + +## Introduction + +This guide walks you through starting LocalStack and deploying a serverless API consisting of a Lambda function and a DynamoDB table. You will perform the entire deployment on your local machine without an AWS account. + +A successful deployment results in a: +- **Serverless API:** A Lambda function with a configured function URL. +- **Persistence Layer:** A DynamoDB table for message storage. +- **Local Cloud Environment:** A fully functional local sandbox that emulates AWS services. + +Choose your preferred deployment method: **Terraform** or **AWS CLI**. + +## Prerequisites + +- [Docker](https://docs.docker.com/get-docker/) engine installed and running. +- A [LocalStack account](https://app.localstack.cloud/sign-up) and a valid [LocalStack Auth Token](/aws/getting-started/auth-token/). +- Either [Terraform CLI](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) or [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) installed, depending on your preferred deployment method. + +If you haven't installed LocalStack yet, follow the [installation guide](/aws/getting-started/installation/) to get started. + +## Step 1: Install and start LocalStack + + + + Start LocalStack: + + ```bash + lstk start + ``` + + The first run triggers a browser-based authentication flow. After authentication, the CLI pulls the LocalStack image and initializes the container. + + When the container is ready, you will see the following logs: + + ```text + ✔︎ LocalStack ready (containerId: 400b3e61f3c6) + • Endpoint: localhost.localstack.cloud:4566 + • Web app: https://app.localstack.cloud + ``` + + + + + +## Step 2: Deploy the serverless API + +You can deploy the Lambda function and DynamoDB table using either our AWS CLI wrapper `awslocal` or our Terraform wrapper `tflocal`. +These tools automatically route AWS API calls to your LocalStack container, so you do not need AWS account credentials for this guide. + + + + + + 1. Install the [`awslocal` wrapper](https://github.com/localstack/awscli-local): + + ```bash + pip install awscli-local + ``` + + 2. Create the Lambda function source. Execute the following to create a project directory, a function file and a Python handler: + + ```bash + mkdir -p /tmp/localstack-demo + cat > /tmp/localstack-demo/handler.py << 'EOF' + import json, boto3, os, uuid + + def handler(event, context): + table = boto3.resource('dynamodb').Table(os.environ['TABLE_NAME']) + method = event.get('requestContext', {}).get('http', {}).get('method', 'GET') + if method == 'POST': + item = {'id': str(uuid.uuid4()), **json.loads(event.get('body', '{}'))} + table.put_item(Item=item) + return {'statusCode': 200, 'body': json.dumps(item)} + result = table.scan() + return {'statusCode': 200, 'body': json.dumps(result['Items'])} + EOF + cd /tmp/localstack-demo && zip handler.zip handler.py + ``` + + 3. Create the DynamoDB table: + + ```bash + awslocal dynamodb create-table \ + --table-name Messages \ + --attribute-definitions AttributeName=id,AttributeType=S \ + --key-schema AttributeName=id,KeyType=HASH \ + --billing-mode PAY_PER_REQUEST + ``` + + 4. Deploy the Lambda function: + + ```bash + awslocal lambda create-function \ + --function-name messages-api \ + --runtime python3.12 \ + --handler handler.handler \ + --zip-file fileb:///tmp/localstack-demo/handler.zip \ + --role arn:aws:iam::000000000000:role/lambda-role \ + --environment Variables={TABLE_NAME=Messages} + + awslocal lambda wait function-active --function-name messages-api + ``` + + 5. Configure a function URL and retrieve the endpoint: + + ```bash + awslocal lambda create-function-url-config \ + --function-name messages-api \ + --auth-type NONE + + LAMBDA_URL=$(awslocal lambda list-function-url-configs \ + --function-name messages-api \ + --query 'FunctionUrlConfigs[0].FunctionUrl' \ + --output text) + echo $LAMBDA_URL + ``` + + + + + + 1. Install the [`tflocal` wrapper](https://github.com/localstack/terraform-local): + + ```bash + pip install terraform-local + ``` + + 2. Create a project directory and a `main.tf` file: + + ```bash + mkdir -p /tmp/localstack-demo + cat > /tmp/localstack-demo/main.tf << 'TF' + terraform { + required_providers { + aws = { source = "hashicorp/aws" } + archive = { source = "hashicorp/archive" } + } + } + + resource "aws_dynamodb_table" "messages" { + name = "Messages" + billing_mode = "PAY_PER_REQUEST" + hash_key = "id" + attribute { + name = "id" + type = "S" + } + } + + data "archive_file" "lambda" { + type = "zip" + output_path = "${path.module}/handler.zip" + source { + filename = "handler.py" + content = <<-EOF + import json, boto3, os, uuid + def handler(event, context): + table = boto3.resource('dynamodb').Table(os.environ['TABLE_NAME']) + method = event.get('requestContext', {}).get('http', {}).get('method', 'GET') + if method == 'POST': + item = {'id': str(uuid.uuid4()), **json.loads(event.get('body', '{}'))} + table.put_item(Item=item) + return {'statusCode': 200, 'body': json.dumps(item)} + result = table.scan() + return {'statusCode': 200, 'body': json.dumps(result['Items'])} + EOF + } + } + + resource "aws_iam_role" "lambda_role" { + name = "lambda-role" + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [{ Action = "sts:AssumeRole", Effect = "Allow", + Principal = { Service = "lambda.amazonaws.com" } }] + }) + } + + resource "aws_lambda_function" "messages_api" { + function_name = "messages-api" + runtime = "python3.12" + handler = "handler.handler" + filename = data.archive_file.lambda.output_path + source_code_hash = data.archive_file.lambda.output_base64sha256 + role = aws_iam_role.lambda_role.arn + environment { + variables = { TABLE_NAME = aws_dynamodb_table.messages.name } + } + } + + resource "aws_lambda_function_url" "messages_api" { + function_name = aws_lambda_function.messages_api.function_name + authorization_type = "NONE" + } + + output "function_url" { + value = aws_lambda_function_url.messages_api.function_url + } + TF + cd /tmp/localstack-demo + ``` + + 3. Initialize and apply the configuration: + + ```bash + tflocal init && tflocal apply -auto-approve + ``` + + 4. Retrieve the endpoint: + + ```bash + LAMBDA_URL=$(tflocal output -raw function_url) + echo $LAMBDA_URL + ``` + + + + +## Step 3: Test the API + +Send a POST request to store a message in the locally emulated DynamoDB table: + +```bash +curl -X POST "$LAMBDA_URL" \ + -H "Content-Type: application/json" \ + -d '{"message": "Hello, LocalStack!"}' +``` + +You will get back a response: + +```json title="Output" +{ "id": "3e1b5cae-4386-447b-8567-f0615fdb0fff", "message": "Hello, LocalStack!" } +``` + +Retrieve all your messages: + +```bash +curl "$LAMBDA_URL" +``` + +The Lambda function executes within the local environment and interacts with the locally emulated DynamoDB service. +Because no actual cloud resources are created, you won't incur any real AWS cloud costs or infrastructure changes. + +## Step 4: Inspect resources + +View the state of your local infrastructure via the [LocalStack Web Application](https://app.localstack.cloud/). +Navigate to the [Resource Browser](https://app.localstack.cloud/inst/default/status) to inspect your Lambda functions and DynamoDB tables in real-time. + +![Inspect Resources using LocalStack Web Application](/images/aws/localstack-resource-browser.png) + +## Step 5: Clean up + +Stop your LocalStack container to remove all emulated resources. LocalStack is ephemeral by default; stopping the instance clears the state. + +{/* prettier-ignore-start */} + + + + ```bash + lstk stop + ``` + + + + +{/* prettier-ignore-end */} + +To persist resource state, like S3 buckets or DynamoDB tables, across restarts, check out our [state management tools](/aws/capabilities/state-management/). + +Remove the local files you created in this guide: + +```bash +rm -rf /tmp/localstack-demo +``` + +## Next steps + +You have successfully deployed and tested a serverless API on your local workstation. +Proceed to the [CI/CD guide](/aws/getting-started/ci-cd/) to learn how to integrate LocalStack into your automated continuous integration (CI) pipelines across a wide range of providers and platforms. diff --git a/src/content/docs/aws/getting-started/quickstart.mdx b/src/content/docs/aws/getting-started/quickstart.mdx deleted file mode 100644 index 643de4ac5..000000000 --- a/src/content/docs/aws/getting-started/quickstart.mdx +++ /dev/null @@ -1,361 +0,0 @@ ---- -title: Quickstart -description: How to run an AWS application on your local machine and test local cloud development with LocalStack. -template: doc -sidebar: - order: 4 ---- -import { Code, LinkButton, Tabs, TabItem } from '@astrojs/starlight/components'; - -## Introduction - -In this quickstart guide, we'll walk you through the process of starting LocalStack on your local machine and deploying a [serverless image resizer application](https://github.com/localstack-samples/sample-serverless-image-resizer-s3-lambda) that utilizes several AWS services. -This guide aims to help you understand how to use LocalStack for the development and testing of your AWS applications locally. -It introduces you to the following key concepts: - -- Starting a LocalStack instance on your local machine. -- Deploying an AWS serverless application infrastructure locally. -- Running an automated integration test suite against local infrastructure. -- Exploring the LocalStack Web Application to view deployed resources. -- Destroying the local infrastructure you have provisioned. - -## Architecture - -The following diagram shows the architecture that we will deploy locally using LocalStack: - -![An AWS architecture demonstrating a sample serverless image resizer application](https://user-images.githubusercontent.com/3996682/229322761-92f52eec-5bfb-412a-a3cb-8af4ee1fed24.png) - -The architecture: - -- Configures S3 bucket notifications to invoke a Lambda function. -- Provides S3 pre-signed POST URLs for direct uploads to the S3 bucket. -- Creates S3 website hosting for serving the static application client. -- Configures direct invocation URLs for Lambda functions accessible to the client. -- Establishes Lambda SNS to SNS topic notifications for failure handling. -- Creates SNS to SES subscriptions for email notifications triggered by specific events. - -An internal SES LocalStack testing endpoint (`/_localstack/aws/ses`) is configured as well, to test email sending functionality while running our local integration test suite. - -## Prerequisites - -- [LocalStack CLI](/aws/getting-started/installation/#installing-localstack-cli) -- [LocalStack Web Application account](https://app.localstack.cloud/sign-up) & [Auth Token](/aws/getting-started/auth-token/) -- [Docker](https://docs.docker.com/get-docker/) -- [Python 3.11+](https://www.python.org/downloads/) & `pip` -- [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) & [`awslocal` wrapper](/aws/connecting/aws-cli/#localstack-aws-cli-awslocal) -- `jq`, `zip` & `curl` - -You can start LocalStack using the `localstack` CLI. -Start the LocalStack for AWS container with your `LOCALSTACK_AUTH_TOKEN` pre-configured: - - - - \nlocalstack start`} lang="shell" /> - - - \nlocalstack start`} lang="shell" /> - - - -If you prefer running LocalStack in detached mode, you can add the `-d` flag to the `localstack start` command, and use Docker Desktop to view the logs. - -## Instructions - -To get started, clone the sample application repository from GitHub: - -```bash -git clone https://github.com/localstack-samples/sample-serverless-image-resizer-s3-lambda.git -cd sample-serverless-image-resizer-s3-lambda -``` - -You can now follow the instructions below to start LocalStack, deploy the sample application, and test the application. - -### Setup a virtual environment - -To deploy the sample application, you need to have specific Python packages are installed. -It is advisable to utilize a virtual environment for the installation process, allowing the packages to be installed in an isolated environment. -Execute the following commands to create a virtual environment and install the packages in `requirements-dev.txt`: - - - - ```shell - python -m venv .venv - source .venv/bin/activate - pip install -r requirements-dev.txt - ``` - - - ```shell - python -m venv .venv - .venv\Scripts\activate - pip install -r requirements-dev.txt - ``` - - - -:::tip -If you are encountering issues with the installation of the packages, such as Pillow, ensure you use the same version as the Python Lambdas (3.11.6) for Pillow to work. -If you're using pyenv, install and activate Python 3.11 with the following commands: -```bash -pyenv install 3.11 -pyenv global 3.11 -``` -::: - -### Setup the serverless image resizer - -This application enables serverless image resizing using [S3](/aws/services/s3/), [SSM](/aws/services/ssm/), [Lambda](/aws/services/lambda/), [SNS](/aws/services/sns/), and [SES](/aws/services/ses/). -A simple web interface allows users to upload and view resized images. -A Lambda function generates S3 pre-signed URLs for direct uploads, while S3 bucket notifications trigger image resizing. -Another Lambda function lists and provides pre-signed URLs for browser display. -The application also handles Lambda failures through SNS and SES email notifications. - -The sample application uses AWS CLI and our `awslocal` wrapper to deploy the application to LocalStack. -Before going further, you need to build your Lambda functions. -You can use the following script that will cover all three of them: - -```bash -deployment/build-lambdas.sh -``` - -You can now deploy the sample application on LocalStack by running the following command: - -```bash -deployment/awslocal/deploy.sh -``` - -Alternatively, you can follow these instructions to deploy the sample application manually step-by-step. - -:::tip -In absence of the `awslocal` wrapper, you can use the `aws` CLI directly, by configuring an [endpoint URL](/aws/connecting/aws-cli/#configuring-an-endpoint-url) or a [custom profile](/aws/connecting/aws-cli/#configuring-a-custom-profile) like `localstack`. -You can then swap `awslocal` with `aws --endpoint-url=http://localhost:4566` or `aws --profile=localstack` in the commands below. -::: - -#### Create the S3 buckets - -```bash -awslocal s3 mb s3://localstack-thumbnails-app-images -awslocal s3 mb s3://localstack-thumbnails-app-resized -``` - -#### Add bucket names into the parameter store - -```bash -awslocal ssm put-parameter \ - --name /localstack-thumbnail-app/buckets/images \ - --type "String" \ - --value "localstack-thumbnails-app-images" -awslocal ssm put-parameter \ - --name /localstack-thumbnail-app/buckets/resized \ - --type "String" \ - --value "localstack-thumbnails-app-resized" -``` - -#### Create SNS DLQ Topic for failed lambda invocations - -```bash -awslocal sns create-topic --name failed-resize-topic -``` - -To receive immediate alerts in case of image resize failures, subscribe an email address to the system. -You can use the following command to subscribe an email address to the SNS topic: - -```bash -awslocal sns subscribe \ - --topic-arn arn:aws:sns:us-east-1:000000000000:failed-resize-topic \ - --protocol email \ - --notification-endpoint my-email@example.com -``` - -#### Create the Presign Lambda - -```bash showshowLineNumbers -(cd lambdas/presign; rm -f lambda.zip; zip lambda.zip handler.py) -awslocal lambda create-function \ - --function-name presign \ - --runtime python3.11 \ - --timeout 10 \ - --zip-file fileb://lambdas/presign/lambda.zip \ - --handler handler.handler \ - --role arn:aws:iam::000000000000:role/lambda-role \ - --environment Variables="{STAGE=local}" -awslocal lambda wait function-active-v2 --function-name presign -awslocal lambda create-function-url-config \ - --function-name presign \ - --auth-type NONE -``` - -#### Create the Image List Lambda - -```bash showshowLineNumbers -(cd lambdas/list; rm -f lambda.zip; zip lambda.zip handler.py) -awslocal lambda create-function \ - --function-name list \ - --handler handler.handler \ - --zip-file fileb://lambdas/list/lambda.zip \ - --runtime python3.11 \ - --timeout 10 \ - --role arn:aws:iam::000000000000:role/lambda-role \ - --environment Variables="{STAGE=local}" -awslocal lambda wait function-active-v2 --function-name list -awslocal lambda create-function-url-config \ - --function-name list \ - --auth-type NONE -``` - -#### Build the Image Resizer Lambda - - - - ```bash showshowLineNumbers - cd lambdas/resize - rm -rf libs lambda.zip - docker run --platform linux/x86_64 -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.11" /bin/sh -c "pip install -r requirements.txt -t libs; exit" - cd libs && zip -r ../lambda.zip . && cd .. - zip lambda.zip handler.py - rm -rf libs - cd ../.. - ``` - - - ```bash showshowLineNumbers - cd lambdas/resize - rm -rf package lambda.zip - mkdir package - pip install -r requirements.txt -t package --platform manylinux_2_28_x86_64 --python-version 3.11 --no-deps - zip lambda.zip handler.py - cd package - zip -r ../lambda.zip *; - cd ../.. - ``` - - - ```bash showshowLineNumbers - cd lambdas/resize - rm -rf package lambda.zip - mkdir package - pip install -r requirements.txt -t package - zip lambda.zip handler.py - cd package - zip -r ../lambda.zip\_; - cd ../.. - ``` - - - -#### Create the Image Resizer Lambda - -```bash showshowLineNumbers -awslocal lambda create-function \ - --function-name resize \ - --runtime python3.11 \ - --timeout 10 \ - --zip-file fileb://lambdas/resize/lambda.zip \ - --handler handler.handler \ - --dead-letter-config TargetArn=arn:aws:sns:us-east-1:000000000000:failed-resize-topic \ - --role arn:aws:iam::000000000000:role/lambda-role \ - --environment Variables="{STAGE=local}" -awslocal lambda wait function-active-v2 --function-name resize -awslocal lambda put-function-event-invoke-config \ - --function-name resize \ - --maximum-event-age-in-seconds 3600 \ - --maximum-retry-attempts 0 -``` - -#### Connect S3 bucket to Resizer Lambda - -```bash -awslocal s3api put-bucket-notification-configuration \ - --bucket localstack-thumbnails-app-images \ - --notification-configuration "{\"LambdaFunctionConfigurations\": [{\"LambdaFunctionArn\": \"$(awslocal lambda get-function --function-name resize --output json | jq -r .Configuration.FunctionArn)\", \"Events\": [\"s3:ObjectCreated:*\"]}]}" -``` - -#### Create the S3 static website - -```bash -awslocal s3 mb s3://webapp -awslocal s3 sync --delete ./website s3://webapp -awslocal s3 website s3://webapp --index-document index.html -``` - -#### Retrieve the Lambda Function URLs - -Retrieve the Lambda function URLs for the `presign` and `list` Lambda functions using the following commands: - -```bash -awslocal lambda list-function-url-configs --function-name presign --output json | jq -r '.FunctionUrlConfigs[0].FunctionUrl' -awslocal lambda list-function-url-configs --function-name list --output json | jq -r '.FunctionUrlConfigs[0].FunctionUrl' -``` - -Save these URLs for later use in the sample application. - -### Run the sample AWS application - -To access the application, go to [**https://webapp.s3-website.localhost.localstack.cloud:4566**](https://webapp.s3-website.localhost.localstack.cloud:4566) in your browser. - -![Serverless image resizer application](/images/aws/serverless-image-resizer-application.png) - -Paste the `presign` and `list` Lambda function URLs into the application and click **Apply**. -Alternatively, click on **Load from API** to automatically load the URLs. - -Upload an image, and click **Upload**. -The upload form uses the `presign` Lambda to request an S3 pre-signed POST URL, forwarding the POST request to S3. -Asynchronous resizing (maximum 400x400 pixels) occurs through S3 bucket notifications. - -If successful, the application displays a **success!** alert. -Click **Refresh** to trigger your browser to request the `list` Lambda URL, returning a JSON document of all items in the images (`localstack-thumbnails-app-images`) and resized images (`localstack-thumbnails-app-resized`) bucket. - -![Serverless image resizer application displaying a resized image](/images/aws/resized-image-sample-application.png) - -### View the deployed resources - -You can inspect the resources deployed as part of the sample application by accessing the [**LocalStack Web Application**](https://app.localstack.cloud/). -Navigate to your [**Default Instance**](https://app.localstack.cloud/inst/default/status) to view the deployed resources. - -![Status Page of the LocalStack Web Application"](/images/aws/localstack-web-application-status.png) - -Click on [S3](https://app.localstack.cloud/inst/default/resources/s3) or [Lambda](https://app.localstack.cloud/inst/default/resources/lambda/functions) to view the S3 buckets and Lambda functions respectively. - -![The Lambda Resource Browser Page of the LocalStack Web Application](/images/aws/localstack-web-application-lambda.png) - -### Run integration tests - -To run automated integration tests against the sample application, use the following command: - -```bash -pytest -v -``` - -Additionally, you can verify that when the `resize` Lambda fails, an SNS message is sent to a topic that an SES subscription listens to, triggering an email with the raw failure message. -Since there's no real email server involved, you can use the LocalStack SES developer endpoint to list messages sent via SES: - -```bash -curl -s http://localhost.localstack.cloud:4566/_aws/ses | jq -``` - -An alternative option is to use a service like MailHog or `smtp4dev`. -Start LocalStack with `SMTP_HOST=host.docker.internal:1025`, pointing to the mock SMTP server. - -### Destroy the local infrastructure - -Now that you've learned how to deploy a local AWS infrastructure for your sample application, let's clean up and tear down the resources associated with the project: - -```bash -localstack stop -``` - -LocalStack is ephemeral, meaning it doesn't persist any data across restarts. -It runs inside a Docker container, and once it's stopped, all locally created resources are automatically removed. - -To persist the local cloud resources across restarts, navigate to our [persistence documentation](/aws/developer-tools/snapshots/persistence) or learn about [Cloud Pods](/aws/developer-tools/snapshots/cloud-pods), our next generation state management utility. - -## Next Steps - -Congratulations on deploying an AWS application locally using LocalStack! -To expand your LocalStack capabilities, explore the following based on your expertise: - -- [Tutorials](/aws/tutorials): Check out our tutorials to learn how to use LocalStack across various AWS services and application stacks. -- [Supported Services](/aws/services): Explore LocalStack's emulated AWS services. -- [Capabilities](/aws/configuration/): Learn about LocalStack's capabilities including features like IAM policy stream, state management, and more. -- [Tooling](/aws/developer-tools/): Get details on LocalStack's tooling and integrations. -- [Blog](https://blog.localstack.cloud): Read our blog posts about LocalStack and the latest enhancements for a better local development and testing experience. diff --git a/src/content/docs/aws/index.mdx b/src/content/docs/aws/index.mdx index 1c6a5258b..86ecc55d2 100644 --- a/src/content/docs/aws/index.mdx +++ b/src/content/docs/aws/index.mdx @@ -11,11 +11,13 @@ sidebar: import { OverviewCards, HeroCards } from '../../../components/OverviewCards'; // Import SVGs from assets folder import rocketIcon from '../../../assets/images/GettingStarted_Color.svg'; -import buildingsIcon from '../../../assets/images/Enterprise_Color.svg'; import wrenchIcon from '../../../assets/images/Tooling_color.svg'; -import connectionsIcon from '../../../assets/images/Integrations_Color.svg'; import cubeIcon from '../../../assets/images/LSAWS_Color.svg'; import starburstIcon from '../../../assets/images/Capabilities_Color.svg'; +import plugIcon from '../../../assets/images/Connecting_Color.svg'; +import pipelineIcon from '../../../assets/images/CIPipelines_Color.svg'; +import usersIcon from '../../../assets/images/OrganizationsAdmin_Color.svg'; +import bookIcon from '../../../assets/images/Tutorials_Color.svg'; diff --git a/src/content/docs/aws/integrations/messaging/index.md b/src/content/docs/aws/integrations/messaging/index.md deleted file mode 100644 index 30cda01ce..000000000 --- a/src/content/docs/aws/integrations/messaging/index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Overview -description: Use LocalStack with messaging tools, such as Kafka, to test your messaging infrastructure locally. -template: doc -sidebar: - order: 1 ---- - -LocalStack supports messaging and event-driven architectures by integrating with services like Amazon MSK (Managed Streaming for Apache Kafka). This section explains how to connect LocalStack with a self-managed Kafka cluster for local development and testing of stream-based applications. - -Use this setup to simulate production-like messaging flows, without relying on managed cloud infrastructure. \ No newline at end of file diff --git a/src/content/docs/aws/configuration/web-app/accounts.md b/src/content/docs/aws/organizations-admin/accounts.md similarity index 100% rename from src/content/docs/aws/configuration/web-app/accounts.md rename to src/content/docs/aws/organizations-admin/accounts.md diff --git a/src/content/docs/aws/organizations-admin/index.mdx b/src/content/docs/aws/organizations-admin/index.mdx new file mode 100644 index 000000000..f2903e548 --- /dev/null +++ b/src/content/docs/aws/organizations-admin/index.mdx @@ -0,0 +1,25 @@ +--- +title: Overview +description: Manage your LocalStack accounts, workspaces, users, licenses, and single sign-on through the LocalStack Web Application. +template: doc +editUrl: false +sidebar: + order: 1 +--- + +import SectionCards from '../../../../components/SectionCards.astro'; + +Organizations & Admin covers the administrative side of LocalStack: managing your account, organizing your workspace, and provisioning users, licenses, and permissions through the [LocalStack Web Application](https://app.localstack.cloud/). + +These are generally one-time setup tasks performed by an IT administrator (or by an individual setting up their own account), rather than day-to-day development work. + + diff --git a/src/content/docs/aws/configuration/web-app/managing-users-licenses.md b/src/content/docs/aws/organizations-admin/managing-users-licenses.md similarity index 100% rename from src/content/docs/aws/configuration/web-app/managing-users-licenses.md rename to src/content/docs/aws/organizations-admin/managing-users-licenses.md diff --git a/src/content/docs/aws/enterprise/sso/azure-ad.md b/src/content/docs/aws/organizations-admin/sso/azure-ad.md similarity index 98% rename from src/content/docs/aws/enterprise/sso/azure-ad.md rename to src/content/docs/aws/organizations-admin/sso/azure-ad.md index 2efc9210e..48ed06610 100644 --- a/src/content/docs/aws/enterprise/sso/azure-ad.md +++ b/src/content/docs/aws/organizations-admin/sso/azure-ad.md @@ -2,6 +2,8 @@ title: "SSO for Azure AD" description: Configuring Azure AD for Single Sign-on in LocalStack Enterprise tags: ["Enterprise"] +sidebar: + order: 2 --- To configure SSO with an Azure AD Enterprise application, we provide a simple step-by-step solution below: diff --git a/src/content/docs/aws/enterprise/sso/index.md b/src/content/docs/aws/organizations-admin/sso/index.md similarity index 99% rename from src/content/docs/aws/enterprise/sso/index.md rename to src/content/docs/aws/organizations-admin/sso/index.md index 4999df97a..225dc618b 100644 --- a/src/content/docs/aws/enterprise/sso/index.md +++ b/src/content/docs/aws/organizations-admin/sso/index.md @@ -3,6 +3,8 @@ title: Single-Sign On description: Configuring Custom Single-Sign On (SSO) Providers in LocalStack Web Application. template: doc tags: ["Enterprise"] +sidebar: + order: 1 --- Custom Single-Sign On (SSO) Identity providers, can be enabled to facilitate the process of quickly onboarding team members from your organization. diff --git a/src/content/docs/aws/enterprise/sso/scim.mdx b/src/content/docs/aws/organizations-admin/sso/scim.mdx similarity index 99% rename from src/content/docs/aws/enterprise/sso/scim.mdx rename to src/content/docs/aws/organizations-admin/sso/scim.mdx index 87308b66d..59f919554 100644 --- a/src/content/docs/aws/enterprise/sso/scim.mdx +++ b/src/content/docs/aws/organizations-admin/sso/scim.mdx @@ -3,11 +3,13 @@ title: SCIM User Provisioning description: Automating user and license provisioning in LocalStack using SCIM (System for Cross-domain Identity Management). template: doc tags: ['Enterprise'] +sidebar: + order: 3 --- SCIM (System for Cross-domain Identity Management) allows you to automate user provisioning, deprovisioning, and license assignment in LocalStack through your identity provider (IdP). LocalStack's SCIM implementation follows the SCIM v2.0 specification and has been developed and tested with the Okta SCIM client. -SCIM is a sub-feature of SSO and requires an active SSO configuration with at least one Identity Provider already set up. See the [Single Sign-On](/aws/enterprise/sso/) documentation before proceeding. +SCIM is a sub-feature of SSO and requires an active SSO configuration with at least one Identity Provider already set up. See the [Single Sign-On](/aws/organizations-admin/sso/) documentation before proceeding. All integration details — including the SCIM Base Connector URL, Bearer Auth Token, and group names per subscription — are available in the LocalStack web app under **Settings → [Single Sign-On](https://app.localstack.cloud/settings/sso)**. diff --git a/src/content/docs/aws/configuration/web-app/stack-insights.md b/src/content/docs/aws/organizations-admin/stack-insights.md similarity index 100% rename from src/content/docs/aws/configuration/web-app/stack-insights.md rename to src/content/docs/aws/organizations-admin/stack-insights.md diff --git a/src/content/docs/aws/configuration/web-app/workspaces.md b/src/content/docs/aws/organizations-admin/workspaces.md similarity index 100% rename from src/content/docs/aws/configuration/web-app/workspaces.md rename to src/content/docs/aws/organizations-admin/workspaces.md diff --git a/src/content/docs/aws/services/batch.mdx b/src/content/docs/aws/services/batch.mdx index 85cfd30ee..6d85d2aba 100644 --- a/src/content/docs/aws/services/batch.mdx +++ b/src/content/docs/aws/services/batch.mdx @@ -188,13 +188,59 @@ awslocal batch submit-job \ --container-overrides '{"command":["sh", "-c", "sleep 5; pwd"]}' ``` -## Current Limitations +## Multi-node parallel jobs -LocalStack simulates the execution of ECS-based AWS Batch jobs using the local ECS runtime. No real infrastructure is created or managed. +LocalStack supports [AWS Batch multi-node parallel (MNP) jobs](https://docs.aws.amazon.com/batch/latest/userguide/multi-node-parallel-jobs.html), which run a single job across a main node and one or more worker nodes. +The main node starts first, and the workers follow once it is running. Each worker receives the main node's private IP so the nodes can communicate. -Array jobs are supported in sequential mode only. +MNP jobs run on EC2-backed compute environments only. Fargate is not supported. + +To run one, register a job definition with `--type multinode` and a `nodeProperties` object that sets the main node, the number of nodes, and a container per node range: + +```bash +awslocal batch register-job-definition \ + --job-definition-name mnp-jobdefn \ + --type multinode \ + --node-properties '{ + "mainNode": 0, + "numNodes": 2, + "nodeRangeProperties": [ + { + "targetNodes": "0:1", + "container": { + "image": "busybox", + "command": ["sh", "-c", "echo node $AWS_BATCH_JOB_NODE_INDEX; sleep 10"], + "resourceRequirements": [ + {"type": "MEMORY", "value": "512"}, + {"type": "VCPU", "value": "1"} + ] + } + } + ] + }' +``` + +Then submit it to an EC2-backed queue: + +```bash +awslocal batch submit-job \ + --job-name mnp-job \ + --job-queue mnp-queue \ + --job-definition mnp-jobdefn +``` + +The submitted job is the parent. Each node is addressable as a child job using the `#` notation, which you can inspect with `describe-jobs`: + +```bash +awslocal batch describe-jobs --jobs "#0" "#1" +``` + +Each node also receives additional [environment variables](#environment-variables), such as `AWS_BATCH_JOB_NODE_INDEX` and `AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS`, that let the nodes coordinate. + +## Environment variables + +LocalStack injects a subset of the Batch environment variables into each job container: -A subset of environment variables is supported, including: - `AWS_BATCH_CE_NAME` - `AWS_BATCH_JOB_ARRAY_INDEX` - `AWS_BATCH_JOB_ARRAY_SIZE` @@ -202,11 +248,23 @@ A subset of environment variables is supported, including: - `AWS_BATCH_JOB_ID` - `AWS_BATCH_JQ_NAME` +[Multi-node parallel jobs](#multi-node-parallel-jobs) receive the following additional variables on each node: + +- `AWS_BATCH_JOB_NODE_INDEX` — the index of the current node. +- `AWS_BATCH_JOB_NUM_NODES` — the total number of nodes in the job. +- `AWS_BATCH_JOB_MAIN_NODE_INDEX` — the index of the main node. +- `AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS` — the private IP of the main node, set on worker nodes so they can connect back to the main node. + +## Current Limitations + +LocalStack simulates the execution of ECS-based AWS Batch jobs using the local ECS runtime. No real infrastructure is created or managed. + +Array jobs are supported in sequential mode only. + The configuration variable `ECS_DOCKER_FLAGS` can be used to pass additional Docker flags to the container runtime. Setting `ECS_TASK_EXECUTOR=kubernetes` is supported as an alternative backend, though Kubernetes execution is experimental and may not support all features. - ## API Coverage diff --git a/src/content/docs/aws/services/cloudformation.mdx b/src/content/docs/aws/services/cloudformation.mdx index e4a4b16a7..4e1fd6fe4 100644 --- a/src/content/docs/aws/services/cloudformation.mdx +++ b/src/content/docs/aws/services/cloudformation.mdx @@ -201,7 +201,7 @@ Using [pseudo parameters](#pseudo-parameters) and [intrinsic functions](#intrins Hardcoding `amazonaws.com` (or conversely `localhost.localstack.cloud`) when building service URLs is one of the most common causes of templates that deploy on AWS but fail on LocalStack, or vice versa. This typically shows up in API Gateway invoke URLs, Step Functions API integration targets, and other places where a template constructs a fully qualified endpoint. -The `AWS::URLSuffix` pseudo parameter resolves to `amazonaws.com` on AWS (or `amazonaws.com.cn` in China Regions) and to the configured [`LOCALSTACK_HOST`](/aws/configuration/config/configuration/) on LocalStack, which defaults to `localhost.localstack.cloud`. +The `AWS::URLSuffix` pseudo parameter resolves to `amazonaws.com` on AWS (or `amazonaws.com.cn` in China Regions) and to the configured [`LOCALSTACK_HOST`](/aws/customization/configuration-options/) on LocalStack, which defaults to `localhost.localstack.cloud`. Referencing it lets the same template produce a valid URL in either environment. The following snippet shows the anti-pattern to avoid, where `amazonaws.com` is hardcoded into the output URL. @@ -325,7 +325,7 @@ LocalStack resolves each pseudo parameter to the equivalent value for the local | `AWS::Region` | Yes | The Region of the encompassing resource | Same | | `AWS::StackId` | Yes | The ARN of the stack | Same | | `AWS::StackName` | Yes | The name of the stack | Same | -| `AWS::URLSuffix` | Yes | The configured [`LOCALSTACK_HOST`](/aws/configuration/config/configuration/) (default: `localhost.localstack.cloud`) | `amazonaws.com`, or `amazonaws.com.cn` in China Regions | +| `AWS::URLSuffix` | Yes | The configured [`LOCALSTACK_HOST`](/aws/customization/configuration-options/) (default: `localhost.localstack.cloud`) | `amazonaws.com`, or `amazonaws.com.cn` in China Regions | :::tip Reach for `AWS::URLSuffix` and `AWS::Partition` instead of hardcoding `amazonaws.com` or `arn:aws:...` in templates. diff --git a/src/content/docs/aws/services/cloudfront.mdx b/src/content/docs/aws/services/cloudfront.mdx index 705447748..11c72d621 100644 --- a/src/content/docs/aws/services/cloudfront.mdx +++ b/src/content/docs/aws/services/cloudfront.mdx @@ -48,7 +48,7 @@ curl -k https://$domain/hello.txt :::tip If you wish to use CloudFront on system host, ensure your local DNS setup is correctly configured. -Refer to the section on [System DNS configuration](/aws/configuration/dns-server#system-dns-configuration) for details. +Refer to the section on [System DNS configuration](/aws/customization/networking/dns-server#system-dns-configuration) for details. ::: In the example provided above, be aware that the final command (`curl https://$domain/hello.txt`) might encounter a temporary failure accompanied by a warning message `Could not resolve host`. diff --git a/src/content/docs/aws/services/cognito-idp.mdx b/src/content/docs/aws/services/cognito-idp.mdx index 1ab2bc86d..4d7d30a90 100644 --- a/src/content/docs/aws/services/cognito-idp.mdx +++ b/src/content/docs/aws/services/cognito-idp.mdx @@ -143,7 +143,7 @@ awslocal cognito-idp sign-up \ Once the user is successfully created, a confirmation code will be generated. This code can be found in the LocalStack container logs (as shown below). -Additionally, if you have [SMTP configured](/aws/configuration/config/configuration/#emails), the confirmation code can be optionally sent via email for enhanced convenience and user experience. +Additionally, if you have [SMTP configured](/aws/customization/configuration-options/#emails), the confirmation code can be optionally sent via email for enhanced convenience and user experience. ```bash INFO:localstack_ext.services.cognito.cognito_idp_api: Confirmation code for Cognito user example_user: 125796 @@ -331,7 +331,7 @@ On the next sign-in, the flow returns an `EMAIL_OTP` challenge: } ``` -The one-time code is printed to the LocalStack container logs (and sent via email if [SMTP is configured](/aws/configuration/config/configuration/#emails)): +The one-time code is printed to the LocalStack container logs (and sent via email if [SMTP is configured](/aws/customization/configuration-options/#emails)): ```bash INFO --- [et.reactor-0] l.p.c.s.c.auth_flows : Code verification sent via email: 123456 @@ -518,7 +518,7 @@ The client credentials grant allows for scope-based authorization from a non-int Your app can directly request client credentials from the token endpoint to receive an access token. To request the token from the LocalStack URL, use the following endpoint: `://cognito-idp.localhost.localstack.cloud:4566/_aws/cognito-idp/oauth2/token`. -For additional information on our endpoints, refer to our [Internal Endpoints](/aws/configuration/networking/internal-endpoints/) documentation. +For additional information on our endpoints, refer to our [Internal Endpoints](/aws/customization/networking/internal-endpoints/) documentation. If there are multiple user pools, LocalStack identifies the appropriate one by examining the `clientid` of the request. @@ -652,7 +652,7 @@ The following code snippets and sample applications provide practical examples o By default, LocalStack's Cognito does not send actual email messages. However, if you wish to enable this feature, you will need to provide an email address and configure the corresponding SMTP settings. -The instructions on configuring the connection parameters of your SMTP server can be found in the [Configuration](/aws/configuration/config/configuration/#emails) guide to allow your local Cognito environment to send email notifications. +The instructions on configuring the connection parameters of your SMTP server can be found in the [Configuration](/aws/customization/configuration-options/#emails) guide to allow your local Cognito environment to send email notifications. ## API Coverage (Cognito Identity Pools) diff --git a/src/content/docs/aws/services/docdb.mdx b/src/content/docs/aws/services/docdb.mdx index ab4c9476b..70836955d 100644 --- a/src/content/docs/aws/services/docdb.mdx +++ b/src/content/docs/aws/services/docdb.mdx @@ -212,7 +212,7 @@ the [MongoDB documentation](https://www.mongodb.com/docs/). You need to set `DOCDB_PROXY_CONTAINER=1` when starting LocalStack to be able to use the returned `Endpoint`, which will be correctly resolved automatically. The flag `DOCDB_PROXY_CONTAINER=1` changes the default behavior and the container will be started as proxied container. -Meaning a port from the [pre-defined port](/aws/configuration/networking/external-port-range/) range will be chosen, and when using lambda, you can use `localhost.localstack.cloud` to connect to the instance. +Meaning a port from the [pre-defined port](/aws/customization/networking/external-port-range/) range will be chosen, and when using lambda, you can use `localhost.localstack.cloud` to connect to the instance. ::: In this sample we will use a Node.js lambda function to connect to a DocumentDB. diff --git a/src/content/docs/aws/services/ec2.mdx b/src/content/docs/aws/services/ec2.mdx index 8669631f5..c4a67296d 100644 --- a/src/content/docs/aws/services/ec2.mdx +++ b/src/content/docs/aws/services/ec2.mdx @@ -206,7 +206,7 @@ LocalStack EC2 supports multiple methods to simulate the EC2 service. All tiers support the mock/CRUD capability. For advanced setups, LocalStack for AWS comes with emulation capability for certain resource types so that they behave more closely like AWS. -The underlying method for this can be controlled using the [`EC2_VM_MANAGER`](/aws/configuration/config/configuration#ec2) configuration option. +The underlying method for this can be controlled using the [`EC2_VM_MANAGER`](/aws/customization/configuration-options#ec2) configuration option. You may choose between plain mocked resources, containerized or virtualized. ## Mock VM Manager @@ -214,7 +214,7 @@ You may choose between plain mocked resources, containerized or virtualized. With the Mock VM manager, all resources are stored as in-memory representation. This only offers the CRUD capability. -To use this VM manager in LocalStack for AWS, set [`EC2_VM_MANAGER`](/aws/configuration/config/configuration#ec2) to `mock`. +To use this VM manager in LocalStack for AWS, set [`EC2_VM_MANAGER`](/aws/customization/configuration-options#ec2) to `mock`. This serves as the fallback manager if an operation is not implemented in other VM managers. @@ -224,7 +224,7 @@ LocalStack for AWS supports the Docker VM manager which uses the [Docker Engine] This VM manager requires the Docker socket from the host machine to be mounted inside the LocalStack container at `/var/run/docker.sock`. This is the default VM manager in LocalStack for AWS. -You may set [`EC2_VM_MANAGER`](/aws/configuration/config/configuration#ec2) to `docker` to explicitly use this VM manager. +You may set [`EC2_VM_MANAGER`](/aws/customization/configuration-options#ec2) to `docker` to explicitly use this VM manager. All launched EC2 instances have the Docker socket mounted inside them at `/var/run/docker.sock` to make Docker-in-Docker usecases possible. @@ -339,7 +339,7 @@ This section illustrates how this functionality can be achieved with EC2 Docker :::note This feature is disabled by default. -Please set the [`EC2_MOUNT_BLOCK_DEVICES`](/aws/configuration/config/configuration#ec2) configuration option to enable it. +Please set the [`EC2_MOUNT_BLOCK_DEVICES`](/aws/customization/configuration-options#ec2) configuration option to enable it. ::: First, we create a user data script `init.sh` which creates an ext3 file system on the block device `/ebs-dev/sda1` and mounts it under `/ebs-mounted`: @@ -365,7 +365,7 @@ awslocal ec2 run-instances --image-id ami-ff0fea8310f3 --count 1 --instance-type ``` Please note that, whereas real AWS uses GiB for volume sizes, LocalStack uses MiB as the unit for `VolumeSize` in the command above (to avoid creating huge files locally). -Also, by default block device images are limited to 1 GiB in size, but this can be customized by setting the [`EC2_EBS_MAX_VOLUME_SIZE`](/aws/configuration/config/configuration#ec2) config variable (defaults to `1000`). +Also, by default block device images are limited to 1 GiB in size, but this can be customized by setting the [`EC2_EBS_MAX_VOLUME_SIZE`](/aws/customization/configuration-options#ec2) config variable (defaults to `1000`). Once the instance is successfully started and initialized, we can first determine the container ID via `docker ps`, and then list the contents of the mounted filesystem `/ebs-mounted`, which should contain our test file named `my-test-file`: @@ -430,7 +430,7 @@ If you would like support for more metadata categories, please make a feature re ### Configuration -You can use the [`EC2_DOCKER_FLAGS`](/aws/configuration/config/configuration#ec2) LocalStack configuration variable to pass supplementary flags to Docker during the initiation of containerized instances. +You can use the [`EC2_DOCKER_FLAGS`](/aws/customization/configuration-options#ec2) LocalStack configuration variable to pass supplementary flags to Docker during the initiation of containerized instances. This allows for fine-tuned behaviours, for example, running containers in privileged mode using `--privileged` or specifying an alternate CPU platform with `--platform`. Keep in mind that this will apply to all instances that are launched in the LocalStack session. @@ -494,13 +494,13 @@ If you are using the [Docker Compose template](/aws/getting-started/installation "/var/run/libvirt/libvirt-sock:/var/run/libvirt/libvirt-sock" ``` -If you are using [Docker CLI](/aws/getting-started/installation#docker), include the following parameter in `docker run`: +If you are using [Docker CLI](/aws/getting-started/installation#docker-cli), include the following parameter in `docker run`: ```text -v /var/run/libvirt/libvirt-sock:/var/run/libvirt/libvirt-sock ``` -If you are using a remote Libvirt hypervisor, you can set the [`EC2_HYPERVISOR_URI`](/aws/configuration/config/configuration#ec2) config option with a connection URI. +If you are using a remote Libvirt hypervisor, you can set the [`EC2_HYPERVISOR_URI`](/aws/customization/configuration-options#ec2) config option with a connection URI. :::tip If you encounter an error like `failed to connect to the hypervisor: Permission denied`, you may need to perform additional setup on the hypervisor host. @@ -541,7 +541,7 @@ LocalStack does not come preloaded with any AMIs. Compatible qcow2 images must be placed in the Libvirt storage pool on the host machine. By default, this is located at `/var/lib/libvirt/images`. -If you use a different storage pool, configure it using the [`EC2_LIBVIRT_POOL`](/aws/configuration/config/configuration#ec2) option. +If you use a different storage pool, configure it using the [`EC2_LIBVIRT_POOL`](/aws/customization/configuration-options#ec2) option. Images must be named with the prefix `ami-` followed by at least 8 hexadecimal characters without an extension, e.g. `ami-1234abcd`. You may need run the following command to make sure the image is registered with Libvirt (replace `default` with your storage pool name if different): @@ -615,7 +615,7 @@ The Libvirt VM manager supports several configuration options to customize its b By default, LocalStack creates VMs using a generic Libvirt domain configuration. However, certain hypervisor setups may require specialized configurations that LocalStack cannot automatically detect. -You can use the [`EC2_REFERENCE_DOMAIN`](/aws/configuration/config/configuration#ec2) configuration option to specify a pre-configured Libvirt domain that LocalStack will use as a template for all new instances. +You can use the [`EC2_REFERENCE_DOMAIN`](/aws/customization/configuration-options#ec2) configuration option to specify a pre-configured Libvirt domain that LocalStack will use as a template for all new instances. LocalStack clones the domain configuration, updating elements like UUID, MAC addresses, and boot volumes as needed. To use domain cloning: @@ -631,8 +631,8 @@ If the specified domain does not exist or is not in shut-off state, LocalStack f By default, LocalStack uses the Libvirt storage pool and network named `default`. If your Libvirt setup uses different names, you can configure them using: -- [`EC2_LIBVIRT_POOL`](/aws/configuration/config/configuration#ec2): Name of the Libvirt storage pool for images (defaults to `default`). -- [`EC2_LIBVIRT_NETWORK`](/aws/configuration/config/configuration#ec2): Name of the Libvirt network for instances (defaults to `default`). +- [`EC2_LIBVIRT_POOL`](/aws/customization/configuration-options#ec2): Name of the Libvirt storage pool for images (defaults to `default`). +- [`EC2_LIBVIRT_NETWORK`](/aws/customization/configuration-options#ec2): Name of the Libvirt network for instances (defaults to `default`). ### Networking diff --git a/src/content/docs/aws/services/ecs.mdx b/src/content/docs/aws/services/ecs.mdx index 30a72d88a..1765d42f3 100644 --- a/src/content/docs/aws/services/ecs.mdx +++ b/src/content/docs/aws/services/ecs.mdx @@ -251,7 +251,7 @@ If your ECS containers depend on LocalStack services, your ECS task network shou If you are running LocalStack through a `docker run` command, do not forget to enable the communication from the container to the Docker Engine API. You can provide the access by adding the following option `-v /var/run/docker.sock:/var/run/docker.sock`. -For more information regarding the configuration of LocalStack, please check the [LocalStack configuration](/aws/configuration/config/configuration) section. +For more information regarding the configuration of LocalStack, please check the [LocalStack configuration](/aws/customization/configuration-options) section. ## Remote debugging diff --git a/src/content/docs/aws/services/eks.mdx b/src/content/docs/aws/services/eks.mdx index 661d2730a..38d2a5639 100644 --- a/src/content/docs/aws/services/eks.mdx +++ b/src/content/docs/aws/services/eks.mdx @@ -227,12 +227,12 @@ You can now use ECR (Elastic Container Registry) images within your EKS environm #### Initial configuration -To modify the return value of resource URIs for most services, including ECR, you can utilize the `LOCALSTACK_HOST` variable in the [configuration](/aws/configuration/config/configuration). +To modify the return value of resource URIs for most services, including ECR, you can utilize the `LOCALSTACK_HOST` variable in the [configuration](/aws/customization/configuration-options). By default, ECR returns a `repositoryUri` starting with `localhost.localstack.cloud`, such as: `localhost.localstack.cloud:/`. :::note In this section, we assume that `localhost.localstack.cloud` resolves in your environment, and LocalStack is connected to a non-default bridge network. -For more information, refer to the article about [DNS rebind protection](/aws/configuration/dns-server#dns-rebind-protection). +For more information, refer to the article about [DNS rebind protection](/aws/customization/networking/dns-server#dns-rebind-protection). If the domain `localhost.localstack.cloud` does not resolve on your host, you can still proceed by setting `LOCALSTACK_HOST=localhost` (not recommended). @@ -348,7 +348,7 @@ In the events, we can see that the pull from ECR was successful: ``` :::tip -Public Docker images from `registry.k8s.io` can be pulled without additional configuration from EKS nodes, but if you pull images from any other locations that resolve to S3 you can configure `DNS_NAME_PATTERNS_TO_RESOLVE_UPSTREAM=\.s3.*\.amazonaws\.com` in your [configuration](/aws/configuration/config/configuration). +Public Docker images from `registry.k8s.io` can be pulled without additional configuration from EKS nodes, but if you pull images from any other locations that resolve to S3 you can configure `DNS_NAME_PATTERNS_TO_RESOLVE_UPSTREAM=\.s3.*\.amazonaws\.com` in your [configuration](/aws/customization/configuration-options). ::: ### Configuring an Ingress for your services diff --git a/src/content/docs/aws/services/elasticache.mdx b/src/content/docs/aws/services/elasticache.mdx index c9048ee91..5ae1ed007 100644 --- a/src/content/docs/aws/services/elasticache.mdx +++ b/src/content/docs/aws/services/elasticache.mdx @@ -49,7 +49,7 @@ awslocal elasticache describe-cache-clusters --show-cache-node-info --query "Cac } ``` -The cache cluster uses a random port of the [external service port range](/aws/configuration/networking/external-port-range/). +The cache cluster uses a random port of the [external service port range](/aws/customization/networking/external-port-range/). Use this port number to connect to the Redis instance like so: ```bash diff --git a/src/content/docs/aws/services/emr.mdx b/src/content/docs/aws/services/emr.mdx index bd0a16095..cfcf0779c 100644 --- a/src/content/docs/aws/services/emr.mdx +++ b/src/content/docs/aws/services/emr.mdx @@ -21,7 +21,7 @@ The supported APIs are available on the API coverage section for [EMR](#api-cove :::note To utilize the EMR API, certain additional dependencies need to be downloaded from the network (including Hadoop, Hive, Spark, etc). These dependencies are fetched automatically during service startup, hence it is important to ensure a reliable internet connection when retrieving the dependencies for the first time. -Alternatively, you can use one of our `*-bigdata` Docker image tags which already ship with the required libraries baked in and may provide better stability (see [here](/aws/configuration/config/docker-images/) for more details). +Alternatively, you can use one of our `*-bigdata` Docker image tags which already ship with the required libraries baked in and may provide better stability (see [here](/aws/customization/other-installations/docker-images/) for more details). ::: ## Getting started diff --git a/src/content/docs/aws/services/es.mdx b/src/content/docs/aws/services/es.mdx index e82e9f8d4..8054b430a 100644 --- a/src/content/docs/aws/services/es.mdx +++ b/src/content/docs/aws/services/es.mdx @@ -149,7 +149,7 @@ There are three configurable strategies that govern how domain endpoints are cre | - | - | - | | `domain` | `..es.localhost.localstack.cloud:4566` | This is the default strategy that uses the `localhost.localstack.cloud` domain to route to your localhost | | `path` | `localhost:4566/es//` | An alternative that can be useful if you cannot resolve LocalStack's localhost domain | -| `port` | `localhost:` | Exposes the cluster(s) directly with ports from the [external service port range](/aws/configuration/networking/external-port-range/)| +| `port` | `localhost:` | Exposes the cluster(s) directly with ports from the [external service port range](/aws/customization/networking/external-port-range/)| | `off` | | *Deprecated*. This value now reverts to the `port` setting, using a port from the given range instead of `4571` | Regardless of the service from which the clusters were created, the domain of the cluster always corresponds to the engine type (OpenSearch or Elasticsearch) of the cluster. diff --git a/src/content/docs/aws/services/kinesisanalyticsv2.mdx b/src/content/docs/aws/services/kinesisanalyticsv2.mdx index 44d44787d..094a76fb3 100644 --- a/src/content/docs/aws/services/kinesisanalyticsv2.mdx +++ b/src/content/docs/aws/services/kinesisanalyticsv2.mdx @@ -21,6 +21,16 @@ LocalStack lets you to run Flink applications locally and implements several [AW A separate Apache Flink cluster is started in [application mode](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/deployment/overview/#application-mode) for every Managed Flink application created. Flink cluster deployment on LocalStack consists of two separate containers for [JobManager](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/concepts/flink-architecture/#jobmanager) and [TaskManager](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/concepts/flink-architecture/#taskmanagers). +## Deployment Considerations + +The default container runtime for MSF on LocalStack is Docker. +LocalStack creates Flink JobManager and TaskManager containers on the Docker network specified by `MAIN_DOCKER_NETWORK` (defaults to `bridge`). + +**Running LocalStack inside a Kubernetes cluster with the Docker executor is not supported.** +Mounting the host Docker socket (`/var/run/docker.sock`) into a LocalStack pod is not sufficient — the Docker executor cannot create Flink containers in this topology and applications will remain stuck in `STARTING` indefinitely. + +If you are running LocalStack outside of Kubernetes (for example, with Docker Compose or the LocalStack CLI), no additional configuration is required and the Docker executor is used automatically. + ## Getting Started This guide builds a demo Flink application and deploys it to LocalStack. @@ -203,6 +213,10 @@ awslocal kinesisanalyticsv2 describe-application --application-name msaf-app | j ] ``` +:::note +Logs events are reported to CloudWatch every 10 seconds. +::: + Log events can be retrieved from CloudWatch Logs using the appropriate operation. To retrieve all events: @@ -210,10 +224,6 @@ To retrieve all events: awslocal logs get-log-events --log-group-name msaf-log-group --log-stream-name msaf-log-stream ``` -:::note -Logs events are reported to CloudWatch every 10 seconds. -::: - LocalStack reports both Flink application and Flink framework logs to CloudWatch. However, certain extended information such as stack traces may be missing. You may obtain this information by execing into the Flink Docker container created by LocalStack and inspecting `/opt/flink/log`. @@ -259,7 +269,29 @@ awslocal kinesisanalyticsv2 untag-resource \ | 1.19.1 | yes | yes | | 1.18.1 | yes | yes | | 1.15.2 | yes | no | -| 1.13.1 | yes | no | + +## Troubleshooting + +### Application stuck in `STARTING` + +If `describe-application` returns `STARTING` indefinitely and no Flink containers appear, the most likely cause is that LocalStack cannot reach the Docker daemon or Kubernetes API to create the Flink JobManager and TaskManager. + +When this occurs, LocalStack logs an internal error after `CLUSTER_READY_WAIT_TIMEOUT` elapses: + +``` +Exception: Error submitting job: Flink cluster is not running +``` + +The application does not automatically transition to `FAILED` — it remains in `STARTING`. +This means IaC tools that use state waiters (such as the Terraform AWS provider or Crossplane) will block until their own timeout expires. + +**Common causes and fixes:** + +- **Running LocalStack inside Kubernetes with the Docker executor** — the Docker executor is not supported in this topology. + See [Deployment Considerations](#deployment-considerations) for details. +- **Wrong or missing Docker network** — if LocalStack is running in a non-default Docker network, set `MAIN_DOCKER_NETWORK` to the name of that network so Flink containers are attached to the correct network. +- **Docker socket not accessible** — confirm that the Docker socket is mounted and functional. + You can verify by listing containers from inside the LocalStack container: `curl --unix-socket /var/run/docker.sock http://localhost/containers/json`. ## Limitations @@ -273,7 +305,10 @@ awslocal kinesisanalyticsv2 untag-resource \ The application logging level defaults to `INFO` and can not be overridden. - Parallelism is limited to the default value of 1, with one TaskManager that has one [Task Slot](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/concepts/flink-architecture/#task-slots-and-resources) allocated. [Parallelism configuration](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_FlinkApplicationConfiguration.html#APIReference-Type-FlinkApplicationConfiguration-ParallelismConfiguration) provided on Flink application creation or update is ignored. +- When a Flink cluster fails to start, the application remains in `STARTING` rather than transitioning to `FAILED`. + Check LocalStack logs and see [Troubleshooting](#troubleshooting) for guidance. +- The Docker executor is not supported when LocalStack runs as a pod inside a Kubernetes cluster. ## API Coverage - + \ No newline at end of file diff --git a/src/content/docs/aws/services/lambda.mdx b/src/content/docs/aws/services/lambda.mdx index 22e86312b..e659e278c 100644 --- a/src/content/docs/aws/services/lambda.mdx +++ b/src/content/docs/aws/services/lambda.mdx @@ -526,7 +526,7 @@ This init binary is used as the entry point for every Lambda container. Our custom implementation offers additional configuration options, but these configurations are primarily intended for LocalStack developers and could change in the future. -The LocalStack [configuration](/aws/configuration/config/configuration) `LAMBDA_DOCKER_FLAGS` can be used to configure all Lambda containers, +The LocalStack [configuration](/aws/customization/configuration-options) `LAMBDA_DOCKER_FLAGS` can be used to configure all Lambda containers, for example `LAMBDA_DOCKER_FLAGS=-e LOCALSTACK_INIT_LOG_LEVEL=debug`. Some noteworthy configurations include: - `LOCALSTACK_INIT_LOG_LEVEL` defines the log level of the Golang binary. @@ -589,7 +589,7 @@ With the new implementation, the following changes have been introduced: - To run Lambda functions in LocalStack, mount the Docker socket into the LocalStack container. Add the following Docker volume mount to your LocalStack startup configuration: `/var/run/docker.sock:/var/run/docker.sock`. - You can find an example of this configuration in our official [`docker-compose.yml` file](/aws/getting-started/installation/#starting-localstack-with-docker-compose). + You can find an example of this configuration in our official [`docker-compose.yml` file](/aws/getting-started/installation/#docker-compose). - The `v2` provider discontinues Lambda Executor Modes such as `LAMBDA_EXECUTOR=local`. Previously, this mode was used as a fallback when the Docker socket was unavailable in the LocalStack container, but many users unintentionally used it instead of the configured `LAMBDA_EXECUTOR=docker`. The new provider now behaves similarly to the old `docker-reuse` executor and does not require such configuration. @@ -602,7 +602,7 @@ With the new implementation, the following changes have been introduced: The ARM containers for compatible runtimes are based on Amazon Linux 2, and ARM-compatible hosts can create functions with the `arm64` architecture. - Lambda functions in LocalStack resolve AWS domains, such as `s3.amazonaws.com`, to the LocalStack container. This domain resolution is DNS-based and can be disabled by setting `DNS_ADDRESS=0`. - For more information, refer to [Transparent Endpoint Injection](/aws/configuration/networking/transparent-endpoint-injection). + For more information, refer to [Transparent Endpoint Injection](/aws/customization/networking/transparent-endpoint-injection). Previously, LocalStack provided patched AWS SDKs to redirect AWS API calls transparently to LocalStack. - The new provider may generate more exceptions due to invalid input. For instance, while the old provider accepted arbitrary strings (such as `r1`) as Lambda roles when creating a function, the new provider validates role ARNs using a regular expression that requires them to be in the format `arn:aws:iam::000000000000:role/lambda-role`. @@ -613,7 +613,7 @@ With the new implementation, the following changes have been introduced: The configuration `LAMBDA_SYNCHRONOUS_CREATE=1` can force synchronous function creation, but it is not recommended. - LocalStack's Lambda implementation, allows you to customize the Lambda execution environment using the [Lambda Extensions API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html). This API allows for advanced monitoring, observability, or developer tooling, providing greater control and flexibility over your Lambda functions. - Lambda functions can also be run on hosts with [multi-architecture support](/aws/configuration/config/arm64-support/), allowing you to leverage LocalStack's Lambda API to develop and test Lambda functions with high parity. + Lambda functions can also be run on hosts with [multi-architecture support](/aws/customization/advanced/arm64-support/), allowing you to leverage LocalStack's Lambda API to develop and test Lambda functions with high parity. The following configuration options from the old provider are discontinued in the new provider: diff --git a/src/content/docs/aws/services/logs.mdx b/src/content/docs/aws/services/logs.mdx index 7f1fc26cf..bbb904e7d 100644 --- a/src/content/docs/aws/services/logs.mdx +++ b/src/content/docs/aws/services/logs.mdx @@ -13,6 +13,22 @@ import { Badge } from '@astrojs/starlight/components'; [CloudWatch Logs](https://docs.aws.amazon.com/cloudwatch/index.html) allows to store and retrieve logs. While some services automatically create and write logs (e.g. Lambda), logs can also be added manually. +:::note +We've introduced a **new CloudWatch Logs provider (`v2`)** backed by a persistent SQLite database. +It is an optional alternative to the default provider and is planned to become the default in an upcoming release. + +The main benefit is a significant reduction in memory usage for long-running instances that generate high volumes of log events, which addresses a memory leak present in the default provider. + +You can opt in to the new provider by setting: + +```bash +PROVIDER_OVERRIDE_LOGS=v2 +``` + +**Known limitation:** Switching to the `v2` provider on an existing instance results in an empty log event history, since log event data cannot be migrated from the default provider's in-memory store. +Metadata such as log groups, log streams, subscription filters, and tags is migrated correctly. +::: + ## Subscription Filters Subscription filters can be used to forward logs to certain services, e.g. Kinesis, Lambda, and Kinesis Data Firehose. diff --git a/src/content/docs/aws/services/memorydb.mdx b/src/content/docs/aws/services/memorydb.mdx index 8be90ee9b..d3c2af060 100644 --- a/src/content/docs/aws/services/memorydb.mdx +++ b/src/content/docs/aws/services/memorydb.mdx @@ -48,7 +48,7 @@ awslocal memorydb describe-clusters --query "Clusters[0].ClusterEndpoint" } ``` -The cache cluster uses a random port of the [external service port range](/aws/configuration/networking/external-port-range/) in regular execution and a port between 36739 and 46738 in container mode. +The cache cluster uses a random port of the [external service port range](/aws/customization/networking/external-port-range/) in regular execution and a port between 36739 and 46738 in container mode. Use this port number to connect to the Redis instance using the `redis-cli` command line tool: ```bash diff --git a/src/content/docs/aws/services/mwaa.mdx b/src/content/docs/aws/services/mwaa.mdx index c11024410..19a010811 100644 --- a/src/content/docs/aws/services/mwaa.mdx +++ b/src/content/docs/aws/services/mwaa.mdx @@ -101,7 +101,7 @@ awslocal s3 cp sample_dag.py s3://my-mwaa-bucket/dags ``` LocalStack syncs new and changed objects in the S3 bucket to the Airflow container every 30 seconds. -The polling interval can be changed using the [`MWAA_S3_POLL_INTERVAL`](/aws/configuration/config/configuration/#mwaa) config option. +The polling interval can be changed using the [`MWAA_S3_POLL_INTERVAL`](/aws/customization/configuration-options/#mwaa) config option. ## Installing custom plugins diff --git a/src/content/docs/aws/services/neptune.mdx b/src/content/docs/aws/services/neptune.mdx index 81134bc6f..495ea9926 100644 --- a/src/content/docs/aws/services/neptune.mdx +++ b/src/content/docs/aws/services/neptune.mdx @@ -223,7 +223,7 @@ awscurl "https://localhost.localstack.cloud:4510/gremlin?gremlin=g.V().count()" :::note If Gremlin Server is installed in your LocalStack environment, you must delete it and restart LocalStack. -You can find your LocalStack volume location on the [LocalStack filesystem documentation](/aws/configuration/config/filesystem/#localstack-volume). +You can find your LocalStack volume location on the [LocalStack filesystem documentation](/aws/customization/advanced/filesystem/#localstack-volume). ```bash rm -rf /lib/tinkerpop diff --git a/src/content/docs/aws/services/opensearch.mdx b/src/content/docs/aws/services/opensearch.mdx index 94373cae0..6dfea6f99 100644 --- a/src/content/docs/aws/services/opensearch.mdx +++ b/src/content/docs/aws/services/opensearch.mdx @@ -114,7 +114,7 @@ The strategy can be configured via the `OPENSEARCH_ENDPOINT_STRATEGY` environmen | ------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | | `domain` | `...localhost.localstack.cloud:4566` | The default strategy employing the `localhost.localstack.cloud` domain for routing to localhost. | | `path` | `localhost:4566///` | An alternative strategy useful if resolving LocalStack's localhost domain poses difficulties. | -| `port` | `localhost:` | Directly exposes cluster(s) via ports from [the external service port range](/aws/configuration/networking/external-port-range/). | +| `port` | `localhost:` | Directly exposes cluster(s) via ports from [the external service port range](/aws/customization/networking/external-port-range/). | Irrespective of the originating service for the clusters, the domain of each cluster consistently aligns with its engine type, be it OpenSearch or Elasticsearch. Consequently, OpenSearch clusters incorporate `opensearch` within their domains (e.g., `my-domain.us-east-1.opensearch.localhost.localstack.cloud:4566`), while Elasticsearch clusters feature `es` in their domains (e.g., `my-domain.us-east-1.es.localhost.localstack.cloud:4566`). @@ -241,7 +241,7 @@ When using OpenSearch Dashboards with LocalStack, you need to make sure to: - Enable the [advanced security options](#advanced-security-options) and set a username and a password. This is required by OpenSearch Dashboards. - Ensure that the OpenSearch Dashboards Docker container uses the LocalStack DNS. - You can find more information on how to connect your Docker container to Localstack in our [Network Troubleshooting guide](/aws/configuration/networking/). + You can find more information on how to connect your Docker container to Localstack in our [Network Troubleshooting guide](/aws/customization/networking/). First, you need to make sure to start LocalStack in a specific Docker network: @@ -396,7 +396,7 @@ The `CustomEndpointOptions` in LocalStack offers the flexibility to utilize arbi ## Troubleshooting If you encounter difficulties resolving subdomains while employing the `OPENSEARCH_ENDPOINT_STRATEGY=domain` (the default setting), it's advisable to investigate whether your DNS configuration might be obstructing rebind queries. -For further insights on addressing this issue, refer to the section on [DNS rebind protection](/aws/configuration/dns-server#dns-rebind-protection). +For further insights on addressing this issue, refer to the section on [DNS rebind protection](/aws/customization/networking/dns-server#dns-rebind-protection). ## API Coverage diff --git a/src/content/docs/aws/services/organizations.mdx b/src/content/docs/aws/services/organizations.mdx index cf7d08370..d1ea226c1 100644 --- a/src/content/docs/aws/services/organizations.mdx +++ b/src/content/docs/aws/services/organizations.mdx @@ -12,7 +12,7 @@ Amazon Web Services Organizations is an account management service that allows y It allows you to manage different accounts in a single organization and consolidate billing. With Organizations, you can also attach different policies to your organizational units (OUs) or individual accounts in your organization. -Organizations is available over LocalStack for AWS and the supported APIs are available over our [configuration page](/aws/configuration/config/configuration). +Organizations is available over LocalStack for AWS and the supported APIs are available over our [configuration page](/aws/customization/configuration-options). ## Getting started @@ -88,6 +88,113 @@ To get started, start your LocalStack instance using your preferred method: awslocal organizations delete-organization ``` +## Service Control Policy enforcement + +[Service Control Policies (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) set the maximum permissions for accounts in your organization. +When IAM enforcement is enabled, LocalStack checks SCPs together with other applicable policies. +A request goes through only if both the principal's policies, resource's policies and the SCPs covering its account allow the action on the resource. + +To turn on SCP enforcement, start LocalStack with [`ENFORCE_IAM=1`](/aws/developer-tools/security-testing/iam-policy-enforcement) and enable the `SERVICE_CONTROL_POLICY` policy type on your organization root (see the [getting started](#getting-started) steps above). + +LocalStack evaluates SCPs at each level of the organization hierarchy: root, organizational unit, and account. +An action must be allowed by an SCP at every level between the root and the account. +If any level lacks an `Allow`, the result is an implicit deny, and an explicit `Deny` overrides any `Allow`. + +:::note +The organization's management (master) account is exempt from SCPs. +Principals in the management account are never restricted by SCPs, even with an explicit `Deny` SCP attached. +::: + +### Cross-account access + +LocalStack enforces SCPs for [cross-account access](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html), where a principal in one account uses a resource owned by another account. + +For a cross-account request, LocalStack checks the SCPs of the source account (the account making the request). +A deny in those SCPs blocks the request even when the target resource's policy grants access. + +Consider a member account that lists the objects of an S3 bucket in another account of the same organization, with a bucket policy that grants the member account access: + +```bash +# Run as the member (source) account +awslocal s3api list-objects-v2 --bucket cross-account-bucket +``` + +The default `FullAWSAccess` SCP lets the request succeed on the bucket policy. +Attach an SCP that denies `s3:ListBucket` to the member account, and the request fails: + +```bash title="Output" +An error occurred (AccessDenied) when calling the ListObjectsV2 operation: User: arn:aws:iam::111111111111:user/test is not authorized to perform: s3:ListBucket on resource: "arn:aws:s3:::cross-account-bucket" with an explicit deny in a service control policy +``` + +An SCP that allows only unrelated actions (for example, an `ec2:*`-only SCP) produces an implicit deny, since no SCP allows `s3:ListBucket`: + +```bash title="Output" +An error occurred (AccessDenied) when calling the ListObjectsV2 operation: User: arn:aws:iam::111111111111:user/test is not authorized to perform: s3:ListBucket on resource: "arn:aws:s3:::cross-account-bucket" because no service control policy allows the s3:ListBucket action +``` + +The management account stays exempt from SCPs for cross-account requests too. + +### Testing SCPs with the IAM Policy Simulator + +You can use the [IAM Policy Simulator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html) to check whether a principal's request would be allowed or denied without running it against your resources. +LocalStack evaluates SCPs during policy simulation, so you can validate SCP behavior with [`SimulatePrincipalPolicy`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html) before making live requests. + +```bash +awslocal iam simulate-principal-policy \ + --policy-source-arn arn:aws:iam::111111111111:user/test \ + --action-names s3:ListBucket \ + --resource-arns arn:aws:s3:::cross-account-bucket +``` + +When SCPs affect the decision, LocalStack populates the `OrganizationsDecisionDetail` field of the [`EvaluationResult`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EvaluationResult.html), so you can see whether an SCP allowed the action. + +:::note +LocalStack's Policy Simulator and its IAM enforcement engine share the same underlying evaluation logic. +As a result, the simulator reflects the real AWS IAM behavior rather than the behavior of the AWS Policy Simulator, which differs in a few ways: + +- AWS ignores SCPs that contain conditions during simulation. LocalStack evaluates SCPs with conditions. +- AWS applies SCPs to the organization's management account during simulation. LocalStack does not apply SCPs to the management account, matching the real behavior of AWS Organizations. +- AWS reports an explicit `Deny` from an SCP as an implicit deny. LocalStack reports it as an explicit deny, which is the expected outcome. +::: + +## Service Control Policy validation + +When you create or update a Service Control Policy (SCP) with `CreatePolicy` or `UpdatePolicy`, LocalStack validates the policy document against the syntax rules that SCPs must follow. +A policy that violates any of these rules is rejected with a `MalformedPolicyDocumentException` or a `ConstraintViolationException`, matching the behavior you would see on AWS. + +The following constraints are enforced for SCPs: + +- **No `Principal` or `NotPrincipal` elements**: unlike identity-based or resource-based IAM policies, SCPs cannot specify a `Principal` or `NotPrincipal` key inside a `Statement`. A policy that includes either key is rejected with a `MalformedPolicyDocumentException`. +- **Maximum policy size of 10,240 characters**: a policy document larger than 10,240 characters is rejected with a `ConstraintViolationException` (reason `POLICY_CONTENT_LIMIT_EXCEEDED`). This matches the limit enforced by AWS in practice. +- **A single policy object**: the document must be a single JSON object. Passing a JSON array of policy objects is rejected. +- **A single `Statement` key**: the document may contain only one `Statement` key. Duplicate `Statement` keys (or any other duplicate keys) cause the policy to be rejected as malformed. +- **Resources must be present**: each statement must contain a `Resource` element. Specific resource ARNs (not just the `*` wildcard) are accepted. + +:::note +The AWS documentation states that the [maximum SCP size is 5,120 characters](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_reference_limits.html) and that SCPs [only support the `*` wildcard for resources](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_syntax.html#scp-syntax-resource). +LocalStack instead mirrors the behavior observed against real AWS: the enforced size limit is 10,240 characters, and specific resource ARNs are accepted. +::: + +For example, the following policy is rejected because it includes a `Principal` element, which is not permitted in an SCP: + +```bash +awslocal organizations create-policy \ + --name "InvalidSCP" \ + --description "SCP with a Principal element" \ + --type SERVICE_CONTROL_POLICY \ + --content '{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Deny", + "Principal": "*", + "Action": "s3:*", + "Resource": "*" + } + ] + }' +``` + ## API Coverage diff --git a/src/content/docs/aws/services/route53.mdx b/src/content/docs/aws/services/route53.mdx index 9d90a23b3..588ed5f6c 100644 --- a/src/content/docs/aws/services/route53.mdx +++ b/src/content/docs/aws/services/route53.mdx @@ -198,10 +198,10 @@ For ELB alias records: ## DNS resolution -LocalStack for AWS supports the ability to respond to DNS queries for your Route53 domain names, with our [integrated DNS server](/aws/configuration/dns-server). +LocalStack for AWS supports the ability to respond to DNS queries for your Route53 domain names, with our [integrated DNS server](/aws/customization/networking/dns-server). :::note -To follow the example below you must [configure your system DNS to use the LocalStack DNS server](/aws/configuration/dns-server#system-dns-configuration). +To follow the example below you must [configure your system DNS to use the LocalStack DNS server](/aws/customization/networking/dns-server#system-dns-configuration). ::: ### Query a DNS record @@ -224,7 +224,7 @@ test.example.com. 300 IN A 1.2.3.4 The DNS name `localhost.localstack.cloud`, along with its subdomains like `mybucket.s3.localhost.localstack.cloud`, serves an internal routing purpose within LocalStack. It facilitates communication between a LocalStack compute environment (such as a Lambda function) and the LocalStack APIs, as well as your containerised applications with the LocalStack APIs. -For example configurations, see the [Network Troubleshooting guide](/aws/configuration/networking/). +For example configurations, see the [Network Troubleshooting guide](/aws/customization/networking/). For most use-cases, the default configuration of the internal LocalStack DNS name requires no modification. It functions seamlessly in typical scenarios. diff --git a/src/content/docs/aws/services/s3.mdx b/src/content/docs/aws/services/s3.mdx index 3326d2e77..c3cb15372 100644 --- a/src/content/docs/aws/services/s3.mdx +++ b/src/content/docs/aws/services/s3.mdx @@ -143,7 +143,7 @@ By default, most SDKs will try to use **Virtual-Hosted style** requests and prep However, if the endpoint is not prefixed by `s3.`, LocalStack will not be able to understand the request and it will most likely result in an error. You can either change the endpoint to an S3-specific one, or configure your SDK to use **Path style** requests instead. -Check out our [SDK documentation](/aws/configuration/localstack-sdks/) to learn how you can configure AWS SDKs to access LocalStack and S3. +Check out our [SDK documentation](/aws/customization/integrations/localstack-sdks/) to learn how you can configure AWS SDKs to access LocalStack and S3. :::tip While using [AWS SDKs](https://aws.amazon.com/developer/tools/#SDKs), you would need to configure the `ForcePathStyle` parameter to `true` in the S3 client configuration to use **Path style** requests. @@ -260,6 +260,48 @@ LocalStack supports SSE-C parameter validation for the following S3 APIs: However, LocalStack does not support the actual encryption and decryption of objects using SSE-C. +## S3 Replication + +S3 Replication allows you to automatically copy objects from a source bucket to one or more destination buckets. +Replication can occur within the same region or across regions, and across different accounts. + +LocalStack supports the following replication configurations: + +- **One-way replication**: Objects are replicated from a source bucket to a destination bucket. You can scope replication using prefix-based or tag-based filtering, and optionally override the storage class for objects written to the destination bucket. +- **Two-way replication**: Both buckets are configured as source and destination for each other, and replication is configured to work in both directions. + +### IAM enforcement + +LocalStack supports IAM enforcement for S3 replication. +IAM permissions are evaluated in the context of each replication task using the IAM engine directly, which mirrors how AWS itself handles replication permissions. + +### Metadata replication + +LocalStack supports replication of object metadata, specifically tags and Object Lock settings. Metadata replication operates in two modes: + +- **Default metadata replication**: When a source object's metadata is modified, those changes are automatically propagated to all of its replicas. This behavior is enabled by default and requires no additional configuration. +- **Replica metadata synchronization**: When enabled on the destination bucket, metadata changes made directly to a replica are synced back to the source object. This applies only when two-way replication is configured. See [Replication for metadata changes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-for-metadata-changes.html) in the AWS documentation for more details. + +### ReplicationStatus + +Replicated objects are assigned a `ReplicationStatus` field, which you can inspect with `GetObject` or `HeadObject`. +The possible values follow AWS semantics: + +| Status | Meaning | +|---|---| +| `PENDING` | Replication has been queued but not yet completed | +| `COMPLETED` | Object was successfully replicated to the destination | +| `FAILED` | Replication could not be completed | +| `REPLICA` | This object is itself a copy created by replication | + +:::note +The following replication features are not yet supported in LocalStack and will be available in a future release: + +- **`s3:ReplicateTags` deny evaluation**: Explicitly denying `s3:ReplicateTags` will not cause replication to be denied if the object has tags. +- **KMS-encrypted object replication**: Objects encrypted with customer-provided KMS keys are not replicated, even when replication of KMS-encrypted objects is explicitly configured. See [Replicating objects created with server-side encryption using AWS KMS keys](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-config-for-kms-objects.html#replications) in the AWS documentation for more details. +- **ACL replication**: Replication of Access Control Lists is not currently supported. +::: + ## Resource Browser The LocalStack Web Application provides a [Resource Browser](/aws/connecting/console/resource-browser) for managing S3 buckets & configurations. diff --git a/src/content/docs/aws/services/ses.mdx b/src/content/docs/aws/services/ses.mdx index ce422de2e..9bce3bec9 100644 --- a/src/content/docs/aws/services/ses.mdx +++ b/src/content/docs/aws/services/ses.mdx @@ -110,14 +110,14 @@ Sent messages can be retrieved in following ways: ```bash curl -X DELETE localhost.localstack.cloud:4566/_aws/ses?id=dqxhhgoutkmylpbc-ffuqlkjs-ljld-fckp-hcph-wcsrkmxhhldk-pvadjc ``` -- **Filesystem:** All messages are saved to the state directory (see [filesystem layout](/aws/configuration/config/filesystem)). +- **Filesystem:** All messages are saved to the state directory (see [filesystem layout](/aws/customization/advanced/filesystem)). The files are saved as JSON in the `ses/` subdirectory and named by the message ID. ## SMTP Integration LocalStack for AWS supports sending emails via an SMTP server. To enable this, set the connections parameters and access credentials for the server in the configuration. -Refer to the [Configuration](/aws/configuration/config/configuration/#emails) guide for details. +Refer to the [Configuration](/aws/customization/configuration-options/#emails) guide for details. :::tip If you do not have access to a live SMTP server, you can use tools like [MailDev](https://github.com/maildev/maildev) or [smtp4dev](https://github.com/rnwood/smtp4dev). diff --git a/src/content/docs/aws/services/sqs.mdx b/src/content/docs/aws/services/sqs.mdx index 126432221..d8e4babd2 100644 --- a/src/content/docs/aws/services/sqs.mdx +++ b/src/content/docs/aws/services/sqs.mdx @@ -373,7 +373,7 @@ Our Lambda implementation automatically resolves these URLs to the LocalStack co When your code run within different containers like ECS tasks or your custom ones, it's advisable to establish your Docker network setup. You can follow these steps: -1. Override the `LOCALSTACK_HOST` variable as outlined in our [network troubleshooting guide](/aws/configuration/networking/). +1. Override the `LOCALSTACK_HOST` variable as outlined in our [network troubleshooting guide](/aws/customization/networking/). 2. Ensure that your containers can resolve `LOCALSTACK_HOST` to the LocalStack container within the Docker network. 3. We recommend employing `SQS_ENDPOINT_STRATEGY=path`, which generates queue URLs in the format `http:///queue/...`. diff --git a/src/content/docs/aws/services/transcribe.mdx b/src/content/docs/aws/services/transcribe.mdx index 29563ca5d..02d02a1f4 100644 --- a/src/content/docs/aws/services/transcribe.mdx +++ b/src/content/docs/aws/services/transcribe.mdx @@ -18,7 +18,7 @@ The supported APIs are available on our [API Coverage section](#api-coverage), w LocalStack Transcribe uses an offline speech-to-text library called [Vosk](https://alphacephei.com/vosk/). It requires an active internet connection to download the language model. Once the language model is downloaded, subsequent transcriptions for the same language can be performed offline. -Language models typically have a size of around 50 MiB and are saved in the cache directory (see [Filesystem Layout](/aws/configuration/config/filesystem)). +Language models typically have a size of around 50 MiB and are saved in the cache directory (see [Filesystem Layout](/aws/customization/advanced/filesystem)). ## Getting Started diff --git a/src/content/docs/aws/tooling/extensions/official-extensions.md b/src/content/docs/aws/tooling/extensions/official-extensions.md new file mode 100644 index 000000000..fc3463cd7 --- /dev/null +++ b/src/content/docs/aws/tooling/extensions/official-extensions.md @@ -0,0 +1,54 @@ +--- +title: Official Extensions +description: Browse the official and community LocalStack Extensions available on the marketplace. +template: doc +sidebar: + order: 5 +tags: ['Hobby'] +--- + +## Introduction + +The tables below list the extensions currently available on the [LocalStack marketplace](https://app.localstack.cloud/extensions/library), and are kept up to date automatically. + +You can install any of the extensions below with the LocalStack CLI: + +```bash +localstack extensions install +``` + +See [Managing extensions](/aws/tooling/extensions/managing-extensions) for more details on installing, listing, and removing extensions. + +:::note +This page is auto-generated from the LocalStack marketplace API. +::: + +## Official Extensions + +Extensions built and maintained by the LocalStack team. + +| Extension | Description | Author | Install | +|-----------|-------------|--------|---------| +| AWS Proxy | Proxy requests from your LocalStack instance to real AWS resources | LocalStack | `localstack extensions install localstack-extension-aws-proxy` | +| Diagnosis Viewer | View the diagnostics endpoint directly in localstack | LocalStack | `localstack extensions install localstack-extension-diagnosis-viewer` | +| Hello World | A minimal LocalStack extension | LocalStack | `localstack extensions install localstack-extension-hello-world` | +| httpbin | A simple HTTP Request & Response Service directly in LocalStack | LocalStack | `localstack extensions install localstack-extension-httpbin` | +| MailHog | Web and API based SMTP testing directly in LocalStack using MailHog | LocalStack | `localstack extensions install localstack-extension-mailhog` | +| Miniflare | This extension makes Miniflare (dev environment for Cloudflare workers) available directly in LocalStack | LocalStack | `localstack extensions install localstack-extension-miniflare` | +| Resource Graph | Altimeter based LocalStack extension that allows you to create and import into neptune a graph of the resources in your LocalStack instance | LocalStack | `localstack extensions install localstack-extension-resource-graph` | +| Stripe | A LocalStack extension that provides a mocked version of Stripe as a service | LocalStack | `localstack extensions install localstack-extension-stripe` | +| Terraform Init Hooks | Use Terraform files as initialization hooks to pre-seed your LocalStack instance automatically | Thomas Rausch | `localstack extensions install localstack-extension-terraform-init` | + +## Community Extensions + +Extensions contributed and maintained by the LocalStack community and partners. + +| Extension | Description | Author | Install | +|-----------|-------------|--------|---------| +| Authress | Add authentication, permissions, and access control to LocalStack | Authress | `localstack extensions install localstack-extension-authress` | +| Claude (Anthropic API) | LocalStack Extension for testing Anthropic Claude API integrations locally | LocalStack Team | `localstack extensions install localstack-claude` | +| Keycloak | LocalStack Extension for developing Keycloak-secured apps locally | LocalStack Team | `localstack extensions install localstack-keycloak` | +| ParadeDB | LocalStack Extension for running ParadeDB search databases locally | LocalStack & ParadeDB | `localstack extensions install localstack-paradedb` | +| TypeDB | LocalStack Extension that facilitates developing TypeDB-based applications locally. | LocalStack & TypeDB | `localstack extensions install localstack-extension-typedb` | +| WireMock | LocalStack Extension that facilitates running WireMock mock APIs locally. | LocalStack & WireMock | `localstack extensions install localstack-wiremock` | +| Xero | LocalStack Extension for developing against the Xero Finance API locally | LocalStack Team | `localstack extensions install localstack-xero` | diff --git a/src/content/docs/aws/tutorials/aws-proxy-localstack-extension.mdx b/src/content/docs/aws/tutorials/aws-proxy-localstack-extension.mdx index bb6f13ab4..43f312102 100644 --- a/src/content/docs/aws/tutorials/aws-proxy-localstack-extension.mdx +++ b/src/content/docs/aws/tutorials/aws-proxy-localstack-extension.mdx @@ -32,7 +32,7 @@ In this tutorial, you will learn how to install the AWS Cloud Proxy extension an - [LocalStack CLI](/aws/getting-started/installation#localstack-cli) with [`LOCALSTACK_AUTH_TOKEN`](/aws/getting-started/auth-token) - [Docker](https://docs.docker.com/) - [AWS CLI](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-install.html) with [`awslocal` wrapper](https://github.com/localstack/awscli-local) -- [LocalStack Web Application account](https://app.localstack.cloud/sign-up) +- [LocalStack account](https://www.localstack.cloud/pricing) - [AWS Account](https://aws.amazon.com/) with an [`AWS_ACCESS_KEY_ID` & `AWS_SECRET_ACCESS_KEY`](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey) ## Install the AWS Cloud Proxy extension diff --git a/src/content/docs/aws/tutorials/elb-load-balancing.mdx b/src/content/docs/aws/tutorials/elb-load-balancing.mdx index 3ac70eb20..801c70386 100644 --- a/src/content/docs/aws/tutorials/elb-load-balancing.mdx +++ b/src/content/docs/aws/tutorials/elb-load-balancing.mdx @@ -425,4 +425,4 @@ In this tutorial, we have learned how to create an Application Load Balancer (AL We have also explored creating, configuring, and deploying a Serverless project with LocalStack, enabling developers to develop and test Cloud and Serverless applications locally without AWS costs—accelerating iteration for cloud-native workloads. -LocalStack for AWS offers integrations with various popular tools such as Terraform, Pulumi, Serverless Application Model (SAM), and more. For more information about integrations, you can refer to our [Integrations documentation](https://docs.localstack.cloud/aws/integrations). To further explore and experiment with the concepts covered in this tutorial, you can access the code and resources on our [`localstack-pro-samples` repository on GitHub](https://github.com/localstack/localstack-pro-samples/tree/master/elb-load-balancing) along with a Makefile for step-by-step execution. +LocalStack for AWS offers integrations with various popular tools such as Terraform, Pulumi, Serverless Application Model (SAM), and more. For more information about integrations, you can refer to our [Integrations documentation](https://docs.localstack.cloud/aws/customization/integrations). To further explore and experiment with the concepts covered in this tutorial, you can access the code and resources on our [`localstack-pro-samples` repository on GitHub](https://github.com/localstack/localstack-pro-samples/tree/master/elb-load-balancing) along with a Makefile for step-by-step execution. diff --git a/src/content/docs/aws/tutorials/iam-policy-stream.mdx b/src/content/docs/aws/tutorials/iam-policy-stream.mdx index cf3ffa3f8..55e155afe 100644 --- a/src/content/docs/aws/tutorials/iam-policy-stream.mdx +++ b/src/content/docs/aws/tutorials/iam-policy-stream.mdx @@ -45,7 +45,7 @@ Additionally, it serves as a useful learning tool, helping users understand the - [Docker](https://docs.docker.com/get-docker/) - [Terraform](https://developer.hashicorp.com/terraform/install) & [`tflocal` wrapper](https://github.com/localstack/terraform-local) - [AWS](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-install.html) CLI with [`awslocal` wrapper](https://github.com/localstack/awscli-local) -- [LocalStack Web Application account](https://app.localstack.cloud/sign-up) +- [LocalStack account](https://www.localstack.cloud/pricing) - [`jq`](https://jqlang.github.io/jq/download/) ## Architecture diagram diff --git a/src/content/docs/aws/tutorials/lambda-ecr-container-images.mdx b/src/content/docs/aws/tutorials/lambda-ecr-container-images.mdx index 35a268cce..cbb4af4a7 100644 --- a/src/content/docs/aws/tutorials/lambda-ecr-container-images.mdx +++ b/src/content/docs/aws/tutorials/lambda-ecr-container-images.mdx @@ -189,7 +189,7 @@ Run the following command to create the function: :::note Before creating the lambda function, please double check under which architecture you have built your image. If your image is built as arm64, you need to specify the lambda architecture when deploying or set `LAMBDA_IGNORE_ARCHITECTURE=1` when starting LocalStack. -More information can be found [in our documentation regarding ARM support.](/aws/configuration/config/arm64-support) +More information can be found [in our documentation regarding ARM support.](/aws/customization/advanced/arm64-support) ::: ```bash diff --git a/src/content/docs/aws/tutorials/route-53-failover.mdx b/src/content/docs/aws/tutorials/route-53-failover.mdx index 51fe3a40b..657752293 100644 --- a/src/content/docs/aws/tutorials/route-53-failover.mdx +++ b/src/content/docs/aws/tutorials/route-53-failover.mdx @@ -62,7 +62,7 @@ The following diagram shows the architecture that this application builds and de ### Creating the resources To begin, deploy the same services in both `us-west-1` and `us-east-1` regions. -The resources specified in the `init-resources.sh` file will be created when the LocalStack container starts, using [Initialization Hooks](/aws/configuration/config/initialization-hooks) and the `awslocal` CLI tool. +The resources specified in the `init-resources.sh` file will be created when the LocalStack container starts, using [Initialization Hooks](/aws/customization/advanced/initialization-hooks) and the `awslocal` CLI tool. The objective is to have a backup system in case of a regional outage in the primary availability zone (`us-west-1`). We'll focus on this region to examine the existing resilience mechanisms. diff --git a/src/content/docs/aws/tutorials/using-terraform-with-testcontainers-and-localstack.mdx b/src/content/docs/aws/tutorials/using-terraform-with-testcontainers-and-localstack.mdx index 7d6c3ad12..8cffa603c 100644 --- a/src/content/docs/aws/tutorials/using-terraform-with-testcontainers-and-localstack.mdx +++ b/src/content/docs/aws/tutorials/using-terraform-with-testcontainers-and-localstack.mdx @@ -22,7 +22,7 @@ leadimage: "terraform-init-hooks.png" LocalStack is a robust tool that emulates a local AWS cloud stack, allowing engineers to test and develop apps using AWS services directly on their local environments. This tool is essential for enhancing developer experience, reducing development costs and increasing efficiency. -In LocalStack, [**initialization hooks**](/aws/configuration/config/initialization-hooks) are scripts that customize or initialize your LocalStack instance at different stages of its lifecycle. +In LocalStack, [**initialization hooks**](/aws/customization/advanced/initialization-hooks) are scripts that customize or initialize your LocalStack instance at different stages of its lifecycle. Up until now, the supported hooks could be shell or Python scripts executed at predefined lifecycle phases — BOOT, START, READY, and SHUTDOWN. By placing scripts in the respective directories (`/etc/localstack/init/{stage}.d`), developers can automate tasks like setting up initial states, configuring services, or performing clean-up activities. @@ -80,7 +80,7 @@ localstack start -e EXTENSION_AUTO_INSTALL=localstack-extension-terraform-init \ ``` This is the easiest way to quickly spin up the desired services at startup. -The command starts LocalStack with the configuration to automatically install the **`localstack-extension-terraform-init`** [extension](/aws/configuration/extensions/) and +The command starts LocalStack with the configuration to automatically install the **`localstack-extension-terraform-init`** [extension](/aws/customization/integrations/extensions/) and mount the necessary files into the container: the Terraform configuration file and the Lambda JAR file. The extension will install both `terraform` and `tflocal` into your LocalStack container, and enable the init hook runners to detect Terraform files. You can also organize your Terraform files into subdirectories if you want. @@ -121,7 +121,7 @@ services: Environment Variables: - **LOCALSTACK_AUTH_TOKEN**: Required for using LocalStack for AWS. - **DEBUG**: Set to 1 to enable verbose logging of the container. -- **EXTENSION_AUTO_INSTALL**: Automatically installs specified LocalStack [extensions](/aws/configuration/extensions/), in this case, `localstack-extension-terraform-init` which allows Terraform files to be directly used as init hooks. +- **EXTENSION_AUTO_INSTALL**: Automatically installs specified LocalStack [extensions](/aws/customization/integrations/extensions/), in this case, `localstack-extension-terraform-init` which allows Terraform files to be directly used as init hooks. Volumes: - Docker Socket: Mounts the Docker socket `/var/run/docker.sock` from the host into the container. diff --git a/src/content/docs/azure/getting-started/auth-token.mdx b/src/content/docs/azure/getting-started/auth-token.mdx index 8a2f3ae58..dd949c51a 100644 --- a/src/content/docs/azure/getting-started/auth-token.mdx +++ b/src/content/docs/azure/getting-started/auth-token.mdx @@ -44,7 +44,7 @@ To access it, you need a LocalStack account with **any active subscription**. Th During the private preview, Azure access is enabled manually and cannot be self-served: - If you already have a LocalStack subscription (any type), [contact support](https://localstack.cloud/contact/) to have Azure access added. -- If you don't have a LocalStack subscription yet, sign up for a [Hobby subscription](https://app.localstack.cloud/sign-up) and then [contact support](https://localstack.cloud/contact/) to have Azure access added. +- If you don't have a LocalStack subscription yet, choose a [Hobby subscription](https://www.localstack.cloud/pricing) and then [contact support](https://localstack.cloud/contact/) to have Azure access added. Once Azure access is enabled on your subscription, you can use the emulator with your Developer Auth Token or CI Auth Token, just like any other LocalStack product. ::: @@ -68,7 +68,7 @@ If you do not assign a license, the Azure emulator will not start even if you ha ::: To view your own assigned license, visit the [My License page](https://app.localstack.cloud/workspace/my-license). -For more details on inviting users, assigning licenses, or managing roles, see [Users and Licenses](/aws/configuration/web-app/managing-users-licenses/). +For more details on inviting users, assigning licenses, or managing roles, see [Users and Licenses](/aws/organizations-admin/managing-users-licenses/). ## Configuring your Auth Token @@ -147,7 +147,7 @@ Developer Auth Tokens cannot be used in CI. CI Auth Tokens are available on the [Auth Tokens page](https://app.localstack.cloud/workspace/auth-tokens) and are configured similarly to Developer Auth Tokens. To set the CI Auth Token, add the Auth Token value in the `LOCALSTACK_AUTH_TOKEN` environment variable of your CI provider, and reference it when starting the Azure emulator in your CI workflow. -The same patterns used for [LocalStack in CI](/aws/integrations/continuous-integration/) apply to Azure — swap the image for `localstack/localstack-azure`. +The same patterns used for [LocalStack in CI](/aws/ci-pipelines/) apply to Azure — swap the image for `localstack/localstack-azure`. ## Rotating the Auth Token diff --git a/src/content/docs/snowflake/changelog.md b/src/content/docs/snowflake/changelog.md index 81dee62da..2a882ee05 100644 --- a/src/content/docs/snowflake/changelog.md +++ b/src/content/docs/snowflake/changelog.md @@ -13,7 +13,34 @@ Starting with the end-of-March 2026 release, LocalStack for Snowflake follows [c For example, `2026.03.0` is the initial March 2026 release. ::: +## 2026.06.0 + +- 'Added support for `PERCENTILE_CONT` and `PERCENTILE_DISC`, the standard percentile aggregate functions used for medians, quartiles, and other distribution cutoffs.' +- '`MEDIAN` is now fixed to return correct results, since it shares its underlying implementation with `PERCENTILE_CONT`.' +- '`UNPIVOT` no longer crashes with an unhandled `IndexError` in certain query shapes.' +- '`GREATEST` and `LEAST` now preserve the input type, and generic `MIN`/`MAX` resolution was fixed alongside them.' +- '`ROUND` precision derivation now accommodates an increased scale, fixing incorrect results for some decimal roundings.' +- 'Fixed handling of certain boolean comparison expressions that previously produced incorrect results.' +- '`CONVERT_TIMESTAMP` now handles `NULL` inputs correctly instead of failing.' +- '`DATEDIFF` now handles an unquoted date part argument used inside a window function ORDER BY.' +- 'Fixed a bug affecting character/string conversion.' +- '`QUALIFY` column resolution is fixed for queries that cross-join a CTE and reference a column via its CTE alias.' +- 'Table qualifiers added during alias expansion are now quoted correctly, fixing visibility issues with `UNION ALL` over a CTE combined with `QUALIFY`.' +- '`IS NULL` now evaluates correctly against a bare `NULL` value projected through a CTE or subquery.' +- 'Unaliased derived tables in a `JOIN` clause will no longer cause the query to fail.' +- 'Nested `QUALIFY` rewrites no longer create an ambiguous internal column.' +- 'Parenthesized queries of the form `(WITH ... SELECT ...)` are no longer incorrectly rejected.' +- '`WITH RECURSIVE` will now enable recursive CTEs to be properly recognized and executed as recursive.' +- 'Scripting keywords used as implicit table aliases are no longer misinterpreted during table reference parsing.' +- 'SQL procedure bodies using `DECLARE` blocks, including `OBJECT` and `NUMBER`-typed variables and bodies containing `UPDATE ... RETURNING`, no longer fail to create.' +- '`CREATE TASK` now supports multi-statement `BEGIN ... END` bodies.' +- '`DROP STAGE IF EXISTS` no longer raises an error when the referenced stage does not exist.' +- 'Bumped `jackson-databind` to `2.18.8`, addressing CVE-2026-54512 and CVE-2026-54513.' +- 'Bumped `dulwich` and `kclpy-ext` to patched versions, addressing three High-severity CVEs.' +- 'Bumped the bundled Apache NiFi (OpenFlow) component to version 2.10.0.' + ## 2026.05.0 + - Update Docker image tagging policy to introduce `dev` and `nightly` tags, while aligning `latest` to mirror `stable` - Add support for `TRY_CAST( AS ARRAY)` conversions - Support `ARRAY_AGG(DISTINCT ...)` execution with variant path expressions @@ -29,6 +56,7 @@ For example, `2026.03.0` is the initial March 2026 release. - Fix error shapes for invalid SQL syntax and compilation failures to return Snowflake-compatible codes instead of raw backend errors ## 2026.04.0 + - Add support for AWS Glue Iceberg REST catalog integrations via `CREATE CATALOG INTEGRATION` - Add support for new SQL date/time functions (`DAY`, `DAYOFMONTH`, `DAYOFYEAR`, `QUARTER`, `WEEK`, `YEAROFWEEK`) - Support six-argument form for `TIMESTAMP_LTZ_FROM_PARTS` @@ -42,7 +70,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Enhance Web App with tabbed query results, truncated result banners, and improved SQL autocomplete - Enhance Web App Resource Browser with dedicated views and icons for databases, schemas, tables, and views -### 2026.03.0 +## 2026.03.0 + - Add support for `GET_DDL` for tables, views, and databases - Add support for `FULL JOIN` and complex join conditions - Add support for looping constructs (`WHILE`, `LOOP`, `FOR`, `REPEAT`) in Snowflake scripting @@ -61,7 +90,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Improve Snowpipe latency for large JSON uploads - Fix dropping of dependent views when dropping tables -### 1.7.0 +## 1.7.0 + - Add support for `OBJECT_AGG`, `QUERY_HISTORY_BY_USER`, `BOOLAND_AGG`, `BOOLOR_AGG`, `APPROX_PERCENTILE`, `LIKE`, `ILIKE`, and math functions - Add support for date arithmetics - Add support for `INFORMATION_SCHEMA.COLUMNS`, `INFORMATION_SCHEMA.SCHEMATA`, and `INFORMATION_SCHEMA.DATABASES` views @@ -81,14 +111,15 @@ For example, `2026.03.0` is the initial March 2026 release. - Fix `SYSTEM$BOOTSTRAP_DATA_REQUEST` to support varargs - Fix evaluating values for describe-only queries -### 1.6.0 +## 1.6.0 + - Add support for SQL `REGEXP_LIKE`, `SPLIT_PART`, `STRIP_NULL_VALUE`, `TRY_PARSE_JSON` function - Integrate Snowflake with S3 tables - Improve dynamic table query handling and error reporting - Support access delegation mode in Polaris catalog - Fix `DATEADD` function to support column references as input arguments - Fix casting of types for interval arithmetics -- Enhance parity for `TO_DATE` with large datetimes +- Enhance parity for `TO_DATE` with large datetimes - Bump Apache NiFi version to 2.7.1 - Enable cross-database queries in SELECT statements - Fix schema-qualified identifier handling and standardize canonical name usage @@ -99,7 +130,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Add update stats to response of DML operations - Fixes schema resolution for `CREATE STREAM` statements -### 1.5.0 +## 1.5.0 + - Add support for `POSITION`, `CHARINDEX`, `LEFT`, `RIGHT`, `LENGTH/LEN` SQL function - Fix long-running queries by continuing to run them asynchronously - Enhance parity for `SELECT AVG OVER ROWS` aggregate queries @@ -110,7 +142,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Enhance parity to GET a single stage file directly - Support Iceberg CTAS (`CREATE ICEBERG TABLE AS SELECT`) -### 1.4.0 +## 1.4.0 + - Add support for `SELECT * EXCLUDE (...)` - Add support for `PI` function - Enhance parity for query binding values and numeric timestamps with TZ @@ -119,7 +152,7 @@ For example, `2026.03.0` is the initial March 2026 release. - Add support for switching JSON/Arrow result encoding in session parameters - Enable returning of result batches for large query results - Fix VARCHAR type/modifier when inferred from SELECT statements -- Return exact column type/modifiers for `DESCRIBE VIEW` results +- Return exact column type/modifiers for `DESCRIBE VIEW` results - Fix default type modifiers when inferred from SELECT statements - Add logic to clean up temporary stages on session termination - Raise `DuplicateMergeKey` on `MERGE` duplicates @@ -128,9 +161,10 @@ For example, `2026.03.0` is the initial March 2026 release. - Properly handle error responses for async queries - Fix `GROUP BY` positional references being incorrectly wrapped -### 1.3.0 +## 1.3.0 + - Retry failing db commands and enhance handling of transactions -- Upgrade to Python 3.13 +- Upgrade to Python 3.13 - Expand Alias References - Support python-only queries in snowflake scripting - Remove byte order mark (BOM) in query string to support SnowConvert tool @@ -149,7 +183,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Handle cross db references in `INFORMATION_SCHEMA.TABLES` view - Enhance parity of column types for `DESCRIBE VIEW` queries -### 1.2.0 +## 1.2.0 + - Add support for `SQUARE`, `FACTORIAL`, `UNIFORM`, `SYSTEM$ALLOWLIST`, `ARRAYS_ZIP`, `CURRENT_ORGANIZATION_USER`, `QUERY_HISTORY` functions - Enhance metadata for varchar type - Add support for `PIVOT` operation @@ -175,10 +210,11 @@ For example, `2026.03.0` is the initial March 2026 release. - Add initial CRUD support for resource monitors - Add initial CRUD support for masking policies - Support `SHOW REPLICATION ACCOUNTS` -- Enhance parity for creating transient schemas +- Enhance parity for creating transient schemas - Enhance `CREATE MASKING POLICY` handling -### 1.1.0 +## 1.1.0 + - Add support for functions: `ROUND`, `SYSDATE`, `STARTSWITH`, `ENDSWITH`, `MD5`, `SUBSTR`, `HAVERSINE`, `LAST_DAY`, `TRY_CAST`, `TRUNCATE`, `PERCENT_RANK`, `SYSTEM$TASK_DEPENDENTS_ENABLE` - Implement `TRY_*` conversion functions - Add number formatting parameter to `TO_DOUBLE` and `TO_DECIMAL` @@ -208,12 +244,13 @@ For example, `2026.03.0` is the initial March 2026 release. - Enhance parity for type casts on results returned from `FLATTEN` - Enhance parsing of nested variable assignments -### 1.0.1 +## 1.0.1 + - Implementation and migration to the new type system - Enhance persistence support for storing/reloading native apps - Add support for cross-db CTAS and CVAS statements - Enhance support for `ALTER DATABASE` statements -- Add initial support for `COLLATE` table columns +- Add initial support for `COLLATE` table columns - Add support for `DESCRIBE SCHEMA` - Enhance support for `ALTER SCHEMA` queries - Add support for suspending tasks @@ -227,7 +264,7 @@ For example, `2026.03.0` is the initial March 2026 release. - Implement `LOWER` and `UPPER` functions - Fix `DROP TABLE` query - Add initial support for `GRANT OWNERSHIP` statements -- Enhance CRUD support for `ROW ACCESS POLICIES` +- Enhance CRUD support for `ROW ACCESS POLICIES` - Support temporary views and dropping temp objects at session end - Enahance parity for `CREATE` and `DROP ROLE` - Fix for multi-account DB initialization @@ -246,7 +283,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Enhance parity on metadata results for copy into command - Fix for numeric bool values -### 1.0.0 +## 1.0.0 + - Add support for `SHOW/ALTER FUNCTION` - Fix incompatibilities with GO driver and SnowSQL client - Add support for `SHOW INDEXES` @@ -289,8 +327,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Add auto-conversion of strings to `ARRAY/OBJECT` types - Add support for Polaris catalog +## 0.3.0 -### 0.3.0 - Add support for multi-account setups - Add initial support for Java UDFs - Add initial support for native apps and `APPLICATION PACKAGEs` @@ -325,7 +363,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Improve JDBC driver compatibility - Support LS alias to LIST files from stages -### 0.2.5 +## 0.2.5 + - Change storage integration to not be associated with DB/schema - Add enhanced support for SHOW ROLES and USE ROLE - Enhance parity for COUNT(..) with NULL values @@ -360,7 +399,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Add support for IF EXISTS clauses in ALTER COLUMN queries - Add initial support for user-defined transaction management -### 0.2.4 +## 0.2.4 + - Support `POWER`/`POW`/`DIV0NULL`/`IFNULL` functions - Add support for COPY INTO location - Add initial support for table/database clones @@ -392,7 +432,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Improve general error handling - Add initial support for `SHOW GRANTS TO/OF` -### 0.2.3 +## 0.2.3 + - Add initial support for `OBJECT_KEYS`/`PARSE_IP`/`DESCRIBE FUNCTION` functions - Add support for various functions including `DATE_TRUNC`, `NVL2`, `LEAST`, `GREATEST`, and more - Enhance parity for creation/deletion of schemas with fully qualified names @@ -405,7 +446,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Implement trigonometric and hyperbolic functions - Add support for GET stage files -### 0.2.2 +## 0.2.2 + - Add initial support for hybrid tables and dynamic tables - Add support for `OBJECT_CONSTRUCT_KEEP_NULL`/`AS_DOUBLE`/`AS_INTEGER`/`AS_NUMBER`/`AS_CHAR` - Add `/result` API endpoint to retrieve query results @@ -418,7 +460,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Enhance custom JSON parsing to allow escaped characters - Enhance parity of `TIMESTAMP_LTZ` for Flyway compatibility -### 0.2.1 +## 0.2.1 + - Add initial support for Iceberg tables - Add initial support for external volumes and Snowflake pipes - Support `LIST`/`REMOVE` queries for staged files @@ -435,7 +478,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Add MUI data-grid for results table in UI - Add squashing of Docker image to reduce size -### 0.2.0 +## 0.2.0 + - Support various SQL functions (`BITAND`, `FLATTEN`, `RANDOM`, etc.) - Add Snowflake proxy request handler - Add initial version of simple UI view @@ -447,7 +491,8 @@ For example, `2026.03.0` is the initial March 2026 release. - Add Snowflake v2 SQL APIs - Fix `describeOnly` `INSERT` queries -### 0.1.26 +## 0.1.26 + - Support `CONVERT_TIMEZONE`, `IFF` SQL functions - Implement `ALTER WAREHOUSE` as no-op - Implement time functions @@ -458,125 +503,151 @@ For example, `2026.03.0` is the initial March 2026 release. - Implement additional date functions - Add support for loading data from public S3 buckets -### 0.1.25 +## 0.1.25 + - Enhance support for various SHOW queries - Add initial persistence support for Snowflake store - Enhance parity for timestamp types - Fix SHOW PARAMETERS for Terraform compatibility - Set up CI build for Docker image -### 0.1.24 +## 0.1.24 + - Enhance parity around user-defined PROCEDUREs - Fix upper-casing for various functions - Enhance support for UNIQUE column constraints - Add initial support for cross-DB resource sharing -### 0.1.23 +## 0.1.23 + - Add initial simple scheduler to periodically run tasks -### 0.1.22 +## 0.1.22 + - Fix query transforms for `ADD COLUMN` queries - Fix wrapping of `VALUES` subquery in braces - Add initial CRUD support for `TASK`s - Support `DROP PRIMARY KEY` queries - Migrate use of `localstack.http` to `rolo` -### 0.1.21 +## 0.1.21 + - Add support for consuming table stream records via DML statements -### 0.1.20 +## 0.1.20 + - Initial simple support for table streams - Add support for `SHOW DATABASES`, `SHOW VIEWS` - Enhance parity for Arrow results - Fix various identifier and query issues -### 0.1.19 +## 0.1.19 + - Return `SELECT` results in arrow format for pandas compatibility - Add `add_months` function - Fix UDFs with raw expressions - Upgrade to Postgres v15 - Various parity and performance improvements -### 0.1.18 +## 0.1.18 + - Add support for various array and aggregation functions - Enhance `FILE FORMAT` operations - Fix `CTAS` queries - Support `INFER_SCHEMA(..)` for parquet files - Improve identifier handling -### 0.1.17 +## 0.1.17 + - Support creation/deletion of stages - Add `IS_ARRAY` function - Remove `DuckDB` based `DB` engine - Refactor codebase to use `QueryProcessor` interface - Enhance column name handling -### 0.1.16 +## 0.1.16 + - Add support for `SHOW PROCEDURES` and `SHOW IMPORTED KEYS` - Add basic support for session parameters -### 0.1.15 +## 0.1.15 + - Fix result type conversation for `GET_PATH(..)` util function -### 0.1.14 +## 0.1.14 + - Enhance parity around `SHOW` queries - Add more array util functions - Fix `STRING_AGG` functionality -### 0.1.13 +## 0.1.13 + - Support `CURRENT_*` functions - Enhance `LISTAGG` for distinct values - Add test for `JS` UDFs with exports -### 0.1.12 +## 0.1.12 + - Cast params for `string_agg`/`listagg` - Fix parity for upper/lowercase names -### 0.1.11 +## 0.1.11 + - Enhance parity for array aggregation functions - Improve timestamp timezone handling - Add case-sensitive identifier tracking -### 0.1.10 +## 0.1.10 + - Add query transforms for `CLUSTER BY` - Add `SF_S3_ENDPOINT` config - Various parity fixes -### 0.1.9 +## 0.1.9 + - Add support for `Python` UDFs - Enhance function creation parity - Add analytics setup -### 0.1.8 +## 0.1.8 + - Add `SF_LOG` config for request/response trace logging -### 0.1.7 +## 0.1.7 + - Add initial support for `JavaScript` UDFs - Enhance DB/table creation responses - Improve streaming logic -### 0.1.6 +## 0.1.6 + - Introduce session state for DB/schema retention - Support async queries and `result_scan(..)` -### 0.1.5 +## 0.1.5 + - Enhance `DESCRIBE TABLE` results - Support `MIN_BY`/`MAX_BY` aggregate functions -### 0.1.4 +## 0.1.4 + - Add logic to parse and replace `DB` references in queries -### 0.1.3 +## 0.1.3 + - Add `DBEngine` abstraction - Add experimental support for `duckdb` - Enhance `JSON` query support -### 0.1.2 +## 0.1.2 + - Add CSV file ingestion from Snowflake stage to table -### 0.1.1 +## 0.1.1 + - Initial support for `Kafka` connector - Add `snowpipe`/streaming APIs -### 0.1.0 +## 0.1.0 + - Initial release of the extension diff --git a/src/content/docs/snowflake/getting-started/auth-token.mdx b/src/content/docs/snowflake/getting-started/auth-token.mdx index 569bf5863..f583cf0ca 100644 --- a/src/content/docs/snowflake/getting-started/auth-token.mdx +++ b/src/content/docs/snowflake/getting-started/auth-token.mdx @@ -38,7 +38,7 @@ Both the **Developer Auth Token** and **CI Auth Token** can be managed on the [A ## Managing your License To use the LocalStack for Snowflake emulator, a license with access to Snowflake is required. -You can get a license by registering on the [LocalStack Web Application](https://app.localstack.cloud/sign-up) and starting a trial, or by exploring additional features with a paid offering. +You can get a license by [signing up for a free LocalStack account](https://www.localstack.cloud/pricing) and starting a trial, or by exploring additional features with a paid offering. After initiating your trial or acquiring a license, assign it to a user by following these steps: @@ -59,7 +59,7 @@ If you do not assign a license, the Snowflake emulator will not start even if yo ::: To view your own assigned license, visit the [My License page](https://app.localstack.cloud/workspace/my-license). -For more details on inviting users, assigning licenses, or managing roles, see [Users and Licenses](/aws/configuration/web-app/managing-users-licenses/). +For more details on inviting users, assigning licenses, or managing roles, see [Users and Licenses](/aws/organizations-admin/managing-users-licenses/). ## Configuring your Auth Token @@ -139,7 +139,7 @@ Developer Auth Tokens cannot be used in CI. CI Auth Tokens are available on the [Auth Tokens page](https://app.localstack.cloud/workspace/auth-tokens) and are configured similarly to Developer Auth Tokens. To set the CI Auth Token, add the Auth Token value in the `LOCALSTACK_AUTH_TOKEN` environment variable of your CI provider, and reference it when starting the Snowflake emulator in your CI workflow. -The same patterns used for [LocalStack in CI](/aws/integrations/continuous-integration/) apply to Snowflake. +The same patterns used for [LocalStack in CI](/aws/ci-pipelines/) apply to Snowflake. ## Rotating the Auth Token diff --git a/src/data/azure-coverage/Microsoft.App.json b/src/data/azure-coverage/Microsoft.App.json index 109cf99ed..3cb790ef7 100644 --- a/src/data/azure-coverage/Microsoft.App.json +++ b/src/data/azure-coverage/Microsoft.App.json @@ -426,23 +426,23 @@ }, "HttpRouteConfig": { "CreateOrUpdate": { - "implemented": false, + "implemented": true, "pro": true }, "Delete": { - "implemented": false, + "implemented": true, "pro": true }, "Get": { - "implemented": false, + "implemented": true, "pro": true }, "List": { - "implemented": false, + "implemented": true, "pro": true }, "Update": { - "implemented": false, + "implemented": true, "pro": true } }, diff --git a/src/data/azure-coverage/Microsoft.Compute.json b/src/data/azure-coverage/Microsoft.Compute.json index 03c41bc60..3502311a4 100644 --- a/src/data/azure-coverage/Microsoft.Compute.json +++ b/src/data/azure-coverage/Microsoft.Compute.json @@ -764,7 +764,7 @@ "pro": true }, "GetVirtualMachineScaleSetNetworkInterface": { - "implemented": false, + "implemented": true, "pro": true }, "ListCloudServiceNetworkInterfaces": { @@ -784,7 +784,7 @@ "pro": true }, "ListVirtualMachineScaleSetVMNetworkInterfaces": { - "implemented": false, + "implemented": true, "pro": true } }, @@ -1292,7 +1292,7 @@ "pro": true }, "Get": { - "implemented": false, + "implemented": true, "pro": true }, "GetInstanceView": { @@ -1300,7 +1300,7 @@ "pro": true }, "List": { - "implemented": false, + "implemented": true, "pro": true }, "PerformMaintenance": { @@ -1344,7 +1344,7 @@ "pro": true }, "Update": { - "implemented": false, + "implemented": true, "pro": true } }, diff --git a/src/data/azure-coverage/Microsoft.DBforPostgreSQL.json b/src/data/azure-coverage/Microsoft.DBforPostgreSQL.json index 8bd710d25..d781dba87 100644 --- a/src/data/azure-coverage/Microsoft.DBforPostgreSQL.json +++ b/src/data/azure-coverage/Microsoft.DBforPostgreSQL.json @@ -32,11 +32,11 @@ "pro": true }, "AdvancedThreatProtectionSettings_Get": { - "implemented": false, + "implemented": true, "pro": true }, "AdvancedThreatProtectionSettings_ListByServer": { - "implemented": false, + "implemented": true, "pro": true }, "BackupsAutomaticAndOnDemand_Create": { @@ -76,7 +76,7 @@ "pro": true }, "CapturedLogs_ListByServer": { - "implemented": false, + "implemented": true, "pro": true }, "CheckMigrationNameAvailability": { @@ -176,19 +176,19 @@ "pro": true }, "PrivateLinkResources_Get": { - "implemented": false, + "implemented": true, "pro": true }, "PrivateLinkResources_ListByServer": { - "implemented": false, + "implemented": true, "pro": true }, "Replicas_ListByServer": { - "implemented": false, + "implemented": true, "pro": true }, "ServerThreatProtectionSettings_CreateOrUpdate": { - "implemented": false, + "implemented": true, "pro": true }, "Servers_CreateOrUpdate": { diff --git a/src/data/cloudformation/coverage.json b/src/data/cloudformation/coverage.json index 6e3202c02..54a7bdb1c 100644 --- a/src/data/cloudformation/coverage.json +++ b/src/data/cloudformation/coverage.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-06-22T06:52:20.753149+00:00", + "generated_at": "2026-07-06T06:35:00.865512+00:00", "database_id": "9b3ebbcc1f6749fb908eb2e3582386b0", "total_resources": 273, "resources": [ diff --git a/src/data/licensing/current-plans.json b/src/data/licensing/current-plans.json index 9071060b9..229af5ac7 100644 --- a/src/data/licensing/current-plans.json +++ b/src/data/licensing/current-plans.json @@ -677,7 +677,7 @@ }, { "name": "Extensions", - "docsUrl": "/aws/configuration/extensions/", + "docsUrl": "/aws/customization/integrations/extensions/", "plans": { "Hobby": true, "Base": true, @@ -801,7 +801,7 @@ }, { "name": "Telemetry Sharing", - "docsUrl": "/aws/configuration/config/usage-tracking/", + "docsUrl": "/aws/customization/advanced/usage-tracking/", "plans": { "Hobby": "enforced", "Base": "default on", diff --git a/src/styles/custom.css b/src/styles/custom.css index 6a7e86e07..6c051a1d0 100644 --- a/src/styles/custom.css +++ b/src/styles/custom.css @@ -102,6 +102,19 @@ vertical-align: middle; } +.users-icon::before { + content: ""; + display: inline-block; + width: 16px; + height: 16px; + background-image: url('/src/assets/images/users.svg'); + background-size: contain; + background-repeat: no-repeat; + background-position: center; + margin-right: 6px; + vertical-align: middle; +} + .book-icon::before { content: ""; display: inline-block;