v2 Getting Started (AWS)#606
Conversation
The concepts behind this draft: 1. Design paths for the main LocalStack use cases 2. Simplify the quickstart to get them to success faster 3. Have both an awslocal and a terraform quickstart 4. Bring AI and agent use cases up front [DOC-12](https://linear.app/localstack/issue/DOC-12/docs-quickstart-v2)
Deploying localstack-docs with
|
| Latest commit: |
df7a4ec
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://f6265903.localstack-docs.pages.dev |
| Branch Preview URL: | https://revise-getting-started.localstack-docs.pages.dev |
|
added |
Fixed some issues on the quick start and reordered the pages to make a more logical order
This was per the suggestion of Colin
peter-smith-phd
left a comment
There was a problem hiding this comment.
Thanks for sharing this PR. It's really nice to see the focus of Local, CI, and AI, and the working example is the perfect size to get something up and running in 10 minutes.
But, I think there's more trimming to be done. There's still a lot of complexity in these pages that go beyond "Getting Started". It'd suggest you document the happy path for the common case, and just hyperlink to the more advanced pages for more detail. If we can't get the happy path working well, then we need to fix the software to make it work better.
| - **Validate IaC before applying** — Deploy your Terraform, CDK, or CloudFormation to LocalStack first. Confirm it works the way you expect before applying to a real AWS environment. | ||
| - **Safe experimentation** — Explore new AWS services and architectures freely, with no risk to production systems. | ||
|
|
||
| LocalStack for AWS also includes advanced capabilities for teams: [Cloud Pods](/aws/capabilities/state-management/cloud-pods/) for sharing and restoring state, [IAM policy enforcement](/aws/capabilities/security-testing/iam-policy-enforcement/), [Chaos Engineering](/aws/capabilities/chaos-engineering/), and more. |
There was a problem hiding this comment.
Given that IAM Policy enforcement is just a standard part of AWS's IAM service, this doesn't feel like it's something to brag about. Can we instead mention the ability to disable enforcement, and instead detect policy violations with tools like App Inspector?
| { | ||
| title: 'AI & Agent Workflows', | ||
| description: | ||
| 'Connect LocalStack to your AI coding assistant via the MCP server, or deploy infrastructure automatically using LocalStack Skills.', |
There was a problem hiding this comment.
So has the MCP server been officially bless by PM as part of our product offering? (I feel it should be, but I many folks probably see it as a DevRel thing).
|
|
||
| ### lstk | ||
|
|
||
| `lstk` is a lightweight, Go-based CLI that handles the full startup sequence in one command: browser-based login, image pull, and container launch. |
There was a problem hiding this comment.
Why is the "Go-based" part relevant to users? I know it was an internal switch from Python -> Go, and that's a big deal within LocalStack, but why would customers care?
|
|
||
| The quickest way get started with LocalStack is by using the LocalStack CLI. | ||
| It allows you to start LocalStack from your command line. | ||
| There are two CLI options for running LocalStack on your laptop. Start with `lstk` if you want the fastest path to a running instance, or use the LocalStack CLI if you need full feature support. |
There was a problem hiding this comment.
I'm hoping that by end of June, we should recommend lstk as the only path forward. Of course, if this PR gets merged sooner than that, you need both versions.
| ### LocalStack CLI | ||
|
|
||
| The full-featured LocalStack CLI gives you access to all LocalStack capabilities. | ||
| Please make sure that you have a working [Docker installation](https://docs.docker.com/get-docker/) on your machine before moving on. |
There was a problem hiding this comment.
I'm pretty sure lstk also requires Docker.
|
|
||
| ## Overview | ||
|
|
||
| LocalStack works great in CI environments, allowing your integration tests to run incredibly fast and with no cloud costs. |
There was a problem hiding this comment.
When I read this section, I struggled a bit with the complexity. This all great information, but it doesn't feel like a "Getting Started" type of topic. I would suspect that customers will only start using LocalStack in CI once they've already got familiar with LocalStack's "local development" model.
I don't think it hurts to keep the "Key differences from local development" information, but the effort to get LocalStack running in CI is more of an advanced topic for later in the docs. It doesn't feel like 5-10 minutes to get a meaningful experience.
|
|
||
| ## Overview | ||
|
|
||
| AI-assisted development workflows need a fast and secure environment to develop and test in. |
There was a problem hiding this comment.
I really love this page! It definitely feels like a quick start type of introduction, although I'm missing the actual example to run.
Perhaps you could provide a sequence of prompts for each of the main steps? For example, "Build a Terraform-based application to do blah blah blah", then "deploy this application to LocalStack", then "test this application with..."
That would be great to take it beyond a list of facts, to get an actual running example.
| ## Choose your path | ||
|
|
||
| <SectionCards | ||
| sections={[ |
There was a problem hiding this comment.
Everyone of these paths skips me over the "Installation" section, was that intentional? I also don't get much information about the "Auth Token" unless I explicitly click on the navigation bar.
I guess it depends on whether you're nudging the user toward getting up and running ("Local Development") or whether you just want to provide them with fact ("CI/CD" and "AI & Agent").
|
|
||
| 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. | ||
| The Auth Token activates LocalStack for AWS. It ties the running instance to your workspace and license and is required whenever you use LocalStack for AWS. |
There was a problem hiding this comment.
On the Installation page, there's no reference to Auth token, which is a basic requirement to get LocalStack started. Could we add a half-page summary of what's required to get your auth token configured on that page, instead of going into a lot of detail on this page?
In general, this "Auth Token" page goes into a lot of complex detail (e.g. CI, Docker Compose) that seems to be beyond "Getting Started". Should it be moved into a later section, and perhaps just link those page from here?
| order: 5 | ||
| order: 7 | ||
| --- | ||
|
|
There was a problem hiding this comment.
This FAQ is long, and I'd bet that most of it isn't "Getting Started" material. If the user finds themselves getting stuck during the Getting Started process, then we need to fix the software, rather than trying to document-around the complexity.
These FAQs are all very important, but just out of place in this section.
| title="LocalStack on Kubernetes (Enterprise)" | ||
| href="/aws/enterprise/kubernetes/" | ||
| client:load | ||
| > |
There was a problem hiding this comment.
The Kubernetes card falling into a full-width row below the 2-column grid looks a bit accidental. Since it's Enterprise-only anyway, might be worth giving it a distinct visual treatment (badge, different border,etc) so it looks intentional.
| { | ||
| title: 'Local Development', | ||
| description: | ||
| 'Set up LocalStack on your laptop and get a serverless app running in under 10 minutes. Deploy Lambda functions, DynamoDB tables, and more — no AWS account needed.', |
There was a problem hiding this comment.
Almost every new user should start with Local Development, but the page doesn't tell them that. Worth adding something like "New to LocalStack? Start here →" on that card so first-timers aren't left guessing.
PR Audit SummaryStatus: Needs Significant ReworkThis PR introduces several critical technical inaccuracies, broken code snippets, and information architectural redundancies. To maintain our technical integrity and avoid introducing "docs debt," the following must be addressed before merging. Technical & Architectural Requirements1) Technical Accuracy (High Priority)
2) Code Integrity (Blockers):All code blocks must be validated and "copy-paste ready" before deployment.
3) Documentation Information Architecture (DRY Principles):
4) Editorial Standards:
Why this is necessary:We are holding this PR to ensure the "Getting Started" experience (the most high-traffic area of our site) is technically accurate and the information architecture is consistent. Merging in the current state would introduce immediate technical debt and user friction. |
Information Architecture Realignment: Removing Quickstart Anti-PatternAs part of the v2 Getting Started experience, I am realigning our information architecture (and sidebar hierarchy) to resolve a long-standing architectural anti-pattern: housing a specific Quickstart tutorial within the general "Getting Started" folder. Rationale for the Restructure:
Action Taken: I am stripping the "Quickstart" branding from the "Local Development" page and reframing it as a declarative guide for deploying your first local serverless API. This ensures the folder remains a cohesive onboarding path, while the upcoming Quickstart Library will serve as the dedicated home for specialized, multi-language recipes. |
The reference to the k8 tutorial has been moved into a standard Note component. This file is now dead code.
Removed redundant "Next Steps" clutter and relocated Docker, Compose, and Helm to a dedicated orchestration section. Standardized tone and corrected tool categorizations.
Consolidated use cases, removed duplicated MCP configuration, and deleted non-functional validation content. Standardized the tone and improved technical context throughout the guide.
Eliminated redundant introduction slop and consolidated configuration methods by execution type. Simplified token comparisons, optimized verification snippets, and unified security warnings for better technical clarity.
| Start LocalStack with `SMTP_HOST=host.docker.internal:1025`, pointing to the mock SMTP server. | ||
| <Tabs> | ||
| <TabItem label="lstk">```bash lstk stop ```</TabItem> | ||
| <TabItem label="LocalStack CLI">```bash localstack stop ```</TabItem> |
There was a problem hiding this comment.
I think putting it in a new line should fix the issue.
| ```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 | ||
| ``` |
There was a problem hiding this comment.
The Python handler heredoc will fail. Because it's << 'EOF' (quoted, not <<-) and the whole block is nested inside <Steps> → ordered list → <TabItem> → <Tabs>, the leading indentation is captured into handler.py. The first line import ... ends up indented, which Python rejects and will always lead to an error when a user copy pastes the command into the terminal.
|
|
||
| ### Helm | ||
| ```bash | ||
| helm repo add localstack-repo [https://helm.localstack.cloud](https://helm.localstack.cloud) |
There was a problem hiding this comment.
There is no way this command runs 😅 Markdown link syntax isn't processed inside a fenced code block, so this command is literally uncopyable.
| {/* prettier-ignore-start */} | ||
|
|
||
| <Tabs> | ||
| <TabItem label="lstk">```bash lstk stop ```</TabItem> |
There was a problem hiding this comment.
This is still wrong. A single-line bash lstk stop makes bash lstk stop the info-string, not a code block with lstk stop as content.
|
|
||
| - name: Run tests | ||
| run: | | ||
| # Your test commands here, e.g.: |
There was a problem hiding this comment.
This might cause the CI to basically fail. The # comment is indented to the same level as the run: key, while the commands below it are indented further.
|
|
||
| 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. | ||
| ## Token Types |
There was a problem hiding this comment.
Not exactly a comment per se on this, but just noticing that most of these new docs are using title case when most of the docs we have now uses sentence case.
| @@ -0,0 +1,153 @@ | |||
| --- | |||
| title: CI/CD Integration | |||
| description: implementation guides for LocalStack in automated pipelines, including GitHub Actions, Docker Compose, and state management. | |||
There was a problem hiding this comment.
Let's not start with lowercase over here:
| description: implementation guides for LocalStack in automated pipelines, including GitHub Actions, Docker Compose, and state management. | |
| description: Implementation guides for LocalStack in automated pipelines, including GitHub Actions, Docker Compose, and state management. |
|
|
||
| ```bash | ||
| rm -rf /tmp/localstack-demo | ||
|
|
There was a problem hiding this comment.
Empty lines here. Can we double check if there are no empty lines anywhere else in the command block since they serve no purpose?
|
|
||
| To verify that the LocalStack CLI was installed correctly, you can check the version in your terminal: | ||
|
|
||
| <Code code={`localstack --version\n${LOCALSTACK_VERSION}`} lang="bash" /> |
There was a problem hiding this comment.
This renders the literal string ${LOCALSTACK_VERSION} rather than a version so it needs to be fixed before merge.
| image: localstack/localstack-pro | ||
| ports: | ||
| - "127.0.0.1:4566:4566" | ||
| - "127.0.0.1:4510-4559:4510-4559" |
There was a problem hiding this comment.
Why have we removed the :443 HTTPS gateway port reference? This is fine for a simple example, but this is going to break many customer samples that depend on port 443 being exposed. FWIW, even lstk itself binds :443 by default 😄

This PR is still in early draft form.
The concepts behind this draft:
DOC-12