docs(seo): 6 more slug-exact mock-X/local-X landings#685
Conversation
Each catches one upstream query: - /mock-sns/ -- 'mock sns for tests', 'fake sns' - /mock-kms/ -- 'mock kms', 'aws kms local' - /mock-ses/ -- 'mock ses', 'local ses email testing' - /mock-cognito/ -- 'mock cognito', 'cognito local auth testing' (Cognito is LocalStack-paid) - /local-rds/ -- 'local rds postgres', 'mock rds' (RDS is LocalStack-paid) - /local-elasticache/ -- 'local elasticache redis', 'mock elasticache' (ElastiCache is LocalStack-paid) All depth-first framed. All reference real engine execution (Lambda containers, Postgres/MySQL/MariaDB, Redis/Valkey) where applicable.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
7 issues found across 6 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="website/content/mock-ses.md">
<violation number="1" location="website/content/mock-ses.md:50">
P2: The Node.js SESv2 client is not configured to use the local fakecloud endpoint, so the example may call real AWS instead of localhost.</violation>
</file>
<file name="website/content/local-rds.md">
<violation number="1" location="website/content/local-rds.md:144">
P2: The comparison table incorrectly marks `docker run postgres` as providing real MySQL support. This is factually wrong and can mislead readers comparing options.</violation>
</file>
<file name="website/content/mock-cognito.md">
<violation number="1" location="website/content/mock-cognito.md:40">
P2: The client config omits `ALLOW_USER_SRP_AUTH`, so the later `USER_SRP_AUTH` example will fail with this setup.</violation>
</file>
<file name="website/content/mock-kms.md">
<violation number="1" location="website/content/mock-kms.md:49">
P2: The `kms encrypt` CLI example passes raw text to `--plaintext` without `--cli-binary-format raw-in-base64-out`, so the command is invalid on AWS CLI v2 defaults.</violation>
<violation number="2" location="website/content/mock-kms.md:59">
P2: This `kms encrypt` example also uses raw `--plaintext` without `--cli-binary-format raw-in-base64-out`, making the snippet incorrect for default AWS CLI v2 behavior.</violation>
</file>
<file name="website/content/local-elasticache.md">
<violation number="1" location="website/content/local-elasticache.md:46">
P2: The connection command hard-codes port 6379, but ElastiCache endpoints use the mapped host port returned by `DescribeCacheClusters`.</violation>
<violation number="2" location="website/content/local-elasticache.md:104">
P2: The test snippet hard-codes `redis://localhost:6379` instead of using the endpoint returned by `DescribeCacheClusters`.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
|
|
||
| ```ts | ||
| import { SESv2Client, SendEmailCommand } from '@aws-sdk/client-sesv2'; | ||
| const ses = new SESv2Client({}); |
There was a problem hiding this comment.
P2: The Node.js SESv2 client is not configured to use the local fakecloud endpoint, so the example may call real AWS instead of localhost.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At website/content/mock-ses.md, line 50:
<comment>The Node.js SESv2 client is not configured to use the local fakecloud endpoint, so the example may call real AWS instead of localhost.</comment>
<file context>
@@ -0,0 +1,169 @@
+
+```ts
+import { SESv2Client, SendEmailCommand } from '@aws-sdk/client-sesv2';
+const ses = new SESv2Client({});
+
+await ses.send(new SendEmailCommand({
</file context>
| | fakecloud | Yes (Docker) | Yes (Docker) | Yes | Yes | Free | | ||
| | LocalStack Pro | Yes | Yes | Yes | Yes | Paid | | ||
| | LocalStack Community | **No** | No | No | No | — (not available) | | ||
| | Plain `docker run postgres` | Yes (DB only) | Yes | Manual | Manual | Free, but no RDS API | |
There was a problem hiding this comment.
P2: The comparison table incorrectly marks docker run postgres as providing real MySQL support. This is factually wrong and can mislead readers comparing options.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At website/content/local-rds.md, line 144:
<comment>The comparison table incorrectly marks `docker run postgres` as providing real MySQL support. This is factually wrong and can mislead readers comparing options.</comment>
<file context>
@@ -0,0 +1,153 @@
+| fakecloud | Yes (Docker) | Yes (Docker) | Yes | Yes | Free |
+| LocalStack Pro | Yes | Yes | Yes | Yes | Paid |
+| LocalStack Community | **No** | No | No | No | — (not available) |
+| Plain `docker run postgres` | Yes (DB only) | Yes | Manual | Manual | Free, but no RDS API |
+| Moto | Stubbed | Stubbed | Stubbed | Stubbed | Free |
+
</file context>
| client = cog.create_user_pool_client( | ||
| UserPoolId=pool['UserPool']['Id'], | ||
| ClientName='web', | ||
| ExplicitAuthFlows=['ALLOW_USER_PASSWORD_AUTH', 'ALLOW_REFRESH_TOKEN_AUTH']) |
There was a problem hiding this comment.
P2: The client config omits ALLOW_USER_SRP_AUTH, so the later USER_SRP_AUTH example will fail with this setup.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At website/content/mock-cognito.md, line 40:
<comment>The client config omits `ALLOW_USER_SRP_AUTH`, so the later `USER_SRP_AUTH` example will fail with this setup.</comment>
<file context>
@@ -0,0 +1,144 @@
+client = cog.create_user_pool_client(
+ UserPoolId=pool['UserPool']['Id'],
+ ClientName='web',
+ ExplicitAuthFlows=['ALLOW_USER_PASSWORD_AUTH', 'ALLOW_REFRESH_TOKEN_AUTH'])
+```
+
</file context>
| --alias-name alias/my-key --target-key-id <key-id> | ||
|
|
||
| aws --endpoint-url http://localhost:4566 kms encrypt \ | ||
| --key-id alias/my-key --plaintext "hello" |
There was a problem hiding this comment.
P2: This kms encrypt example also uses raw --plaintext without --cli-binary-format raw-in-base64-out, making the snippet incorrect for default AWS CLI v2 behavior.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At website/content/mock-kms.md, line 59:
<comment>This `kms encrypt` example also uses raw `--plaintext` without `--cli-binary-format raw-in-base64-out`, making the snippet incorrect for default AWS CLI v2 behavior.</comment>
<file context>
@@ -0,0 +1,105 @@
+ --alias-name alias/my-key --target-key-id <key-id>
+
+aws --endpoint-url http://localhost:4566 kms encrypt \
+ --key-id alias/my-key --plaintext "hello"
+```
+
</file context>
| ```sh | ||
| aws --endpoint-url http://localhost:4566 kms create-key --description "test-key" | ||
| aws --endpoint-url http://localhost:4566 kms encrypt \ | ||
| --key-id <key-id> --plaintext "hello world" --query CiphertextBlob --output text |
There was a problem hiding this comment.
P2: The kms encrypt CLI example passes raw text to --plaintext without --cli-binary-format raw-in-base64-out, so the command is invalid on AWS CLI v2 defaults.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At website/content/mock-kms.md, line 49:
<comment>The `kms encrypt` CLI example passes raw text to `--plaintext` without `--cli-binary-format raw-in-base64-out`, so the command is invalid on AWS CLI v2 defaults.</comment>
<file context>
@@ -0,0 +1,105 @@
+```sh
+aws --endpoint-url http://localhost:4566 kms create-key --description "test-key"
+aws --endpoint-url http://localhost:4566 kms encrypt \
+ --key-id <key-id> --plaintext "hello world" --query CiphertextBlob --output text
+```
+
</file context>
| Connect: | ||
|
|
||
| ```sh | ||
| redis-cli -h <endpoint> -p 6379 |
There was a problem hiding this comment.
P2: The connection command hard-codes port 6379, but ElastiCache endpoints use the mapped host port returned by DescribeCacheClusters.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At website/content/local-elasticache.md, line 46:
<comment>The connection command hard-codes port 6379, but ElastiCache endpoints use the mapped host port returned by `DescribeCacheClusters`.</comment>
<file context>
@@ -0,0 +1,125 @@
+Connect:
+
+```sh
+redis-cli -h <endpoint> -p 6379
+```
+
</file context>
| redis-cli -h <endpoint> -p 6379 | |
| redis-cli -h <endpoint-address> -p <endpoint-port> |
| }); | ||
|
|
||
| test('app caches via real redis behind ElastiCache emulation', async () => { | ||
| const redis = createClient({ url: 'redis://localhost:6379' }); |
There was a problem hiding this comment.
P2: The test snippet hard-codes redis://localhost:6379 instead of using the endpoint returned by DescribeCacheClusters.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At website/content/local-elasticache.md, line 104:
<comment>The test snippet hard-codes `redis://localhost:6379` instead of using the endpoint returned by `DescribeCacheClusters`.</comment>
<file context>
@@ -0,0 +1,125 @@
+});
+
+test('app caches via real redis behind ElastiCache emulation', async () => {
+ const redis = createClient({ url: 'redis://localhost:6379' });
+ await redis.connect();
+ await redis.set('key', 'value');
</file context>
Batch 4A. Six more slug-exact landing pages covering underserved upstream queries.
mock sns for tests,fake snsmock kms,aws kms localmock ses,local ses email testing, highlights the real-receipt-rule-execution differentiator (LocalStack Community stores inbound but does not execute)mock cognito, Cognito is LocalStack-paid-only post Mar 2026local rds postgres, RDS is LocalStack-paidlocal elasticache redis, ElastiCache is LocalStack-paidEach follows the established page.html template and depth-first framing. Comparison tables highlight real engine execution vs stubs.
Summary by cubic
Adds six slug-exact SEO landing pages for SNS, KMS, SES, Cognito, RDS, and ElastiCache to capture upstream queries and highlight fakecloud’s real engine execution vs stubs. Each page uses the existing page.html template with concise how-tos and comparison tables.
Written for commit 6500d19. Summary will update on new commits.