$ -weight: 500;">docker compose down
# or: -weight: 500;">docker kill $(-weight: 500;">docker ps -q --filter ancestor=localstack/localstack)
-weight: 500;">docker compose down
# or: -weight: 500;">docker kill $(-weight: 500;">docker ps -q --filter ancestor=localstack/localstack)
-weight: 500;">docker compose down
# or: -weight: 500;">docker kill $(-weight: 500;">docker ps -q --filter ancestor=localstack/localstack)
# Option A: single binary, no Docker
-weight: 500;">curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/-weight: 500;">install.sh | bash
fakecloud # Option B: Docker
-weight: 500;">docker run --rm -p 4566:4566 ghcr.io/faiscadev/fakecloud # Option C: cargo
cargo -weight: 500;">install fakecloud
# Option A: single binary, no Docker
-weight: 500;">curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/-weight: 500;">install.sh | bash
fakecloud # Option B: Docker
-weight: 500;">docker run --rm -p 4566:4566 ghcr.io/faiscadev/fakecloud # Option C: cargo
cargo -weight: 500;">install fakecloud
# Option A: single binary, no Docker
-weight: 500;">curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/-weight: 500;">install.sh | bash
fakecloud # Option B: Docker
-weight: 500;">docker run --rm -p 4566:4566 ghcr.io/faiscadev/fakecloud # Option C: cargo
cargo -weight: 500;">install fakecloud
// TypeScript
import { S3Client } from "@aws-sdk/client-s3";
const s3 = new S3Client({ endpoint: "http://localhost:4566", region: "us-east-1", credentials: { accessKeyId: "test", secretAccessKey: "test" }, forcePathStyle: true,
});
// TypeScript
import { S3Client } from "@aws-sdk/client-s3";
const s3 = new S3Client({ endpoint: "http://localhost:4566", region: "us-east-1", credentials: { accessKeyId: "test", secretAccessKey: "test" }, forcePathStyle: true,
});
// TypeScript
import { S3Client } from "@aws-sdk/client-s3";
const s3 = new S3Client({ endpoint: "http://localhost:4566", region: "us-east-1", credentials: { accessKeyId: "test", secretAccessKey: "test" }, forcePathStyle: true,
});
# Python (boto3)
import boto3
s3 = boto3.client( "s3", endpoint_url="http://localhost:4566", aws_access_key_id="test", aws_secret_access_key="test", region_name="us-east-1",
)
# Python (boto3)
import boto3
s3 = boto3.client( "s3", endpoint_url="http://localhost:4566", aws_access_key_id="test", aws_secret_access_key="test", region_name="us-east-1",
)
# Python (boto3)
import boto3
s3 = boto3.client( "s3", endpoint_url="http://localhost:4566", aws_access_key_id="test", aws_secret_access_key="test", region_name="us-east-1",
)
services: localstack: image: localstack/localstack:latest ports: - "4566:4566" environment: - SERVICES=s3,sqs,sns,dynamodb,lambda - DEBUG=1
services: localstack: image: localstack/localstack:latest ports: - "4566:4566" environment: - SERVICES=s3,sqs,sns,dynamodb,lambda - DEBUG=1
services: localstack: image: localstack/localstack:latest ports: - "4566:4566" environment: - SERVICES=s3,sqs,sns,dynamodb,lambda - DEBUG=1
services: fakecloud: image: ghcr.io/faiscadev/fakecloud:latest ports: - "4566:4566"
services: fakecloud: image: ghcr.io/faiscadev/fakecloud:latest ports: - "4566:4566"
services: fakecloud: image: ghcr.io/faiscadev/fakecloud:latest ports: - "4566:4566"
services: fakecloud: image: ghcr.io/faiscadev/fakecloud:latest ports: - "4566:4566" volumes: - /var/run/-weight: 500;">docker.sock:/var/run/-weight: 500;">docker.sock
services: fakecloud: image: ghcr.io/faiscadev/fakecloud:latest ports: - "4566:4566" volumes: - /var/run/-weight: 500;">docker.sock:/var/run/-weight: 500;">docker.sock
services: fakecloud: image: ghcr.io/faiscadev/fakecloud:latest ports: - "4566:4566" volumes: - /var/run/-weight: 500;">docker.sock:/var/run/-weight: 500;">docker.sock
services: localstack: image: localstack/localstack ports: - 4566:4566 env: LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_TOKEN }}
services: localstack: image: localstack/localstack ports: - 4566:4566 env: LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_TOKEN }}
services: localstack: image: localstack/localstack ports: - 4566:4566 env: LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_TOKEN }}
steps: - run: -weight: 500;">curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/-weight: 500;">install.sh | bash - run: fakecloud & - run: | for i in $(seq 1 30); do -weight: 500;">curl -sf http://localhost:4566/_fakecloud/health && exit 0 sleep 1 done exit 1
steps: - run: -weight: 500;">curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/-weight: 500;">install.sh | bash - run: fakecloud & - run: | for i in $(seq 1 30); do -weight: 500;">curl -sf http://localhost:4566/_fakecloud/health && exit 0 sleep 1 done exit 1
steps: - run: -weight: 500;">curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/-weight: 500;">install.sh | bash - run: fakecloud & - run: | for i in $(seq 1 30); do -weight: 500;">curl -sf http://localhost:4566/_fakecloud/health && exit 0 sleep 1 done exit 1
provider "aws" { access_key = "test" secret_key = "test" region = "us-east-1" skip_credentials_validation = true skip_metadata_api_check = true skip_requesting_account_id = true endpoints { s3 = "http://localhost:4566" sqs = "http://localhost:4566" dynamodb = "http://localhost:4566" lambda = "http://localhost:4566" }
}
provider "aws" { access_key = "test" secret_key = "test" region = "us-east-1" skip_credentials_validation = true skip_metadata_api_check = true skip_requesting_account_id = true endpoints { s3 = "http://localhost:4566" sqs = "http://localhost:4566" dynamodb = "http://localhost:4566" lambda = "http://localhost:4566" }
}
provider "aws" { access_key = "test" secret_key = "test" region = "us-east-1" skip_credentials_validation = true skip_metadata_api_check = true skip_requesting_account_id = true endpoints { s3 = "http://localhost:4566" sqs = "http://localhost:4566" dynamodb = "http://localhost:4566" lambda = "http://localhost:4566" }
}
import { FakeCloud } from "fakecloud";
const fc = new FakeCloud(); const { emails } = await fc.ses.getEmails();
expect(emails).toHaveLength(1);
expect(emails[0].destination.toAddresses).toContain("[email protected]"); await fc.reset();
import { FakeCloud } from "fakecloud";
const fc = new FakeCloud(); const { emails } = await fc.ses.getEmails();
expect(emails).toHaveLength(1);
expect(emails[0].destination.toAddresses).toContain("[email protected]"); await fc.reset();
import { FakeCloud } from "fakecloud";
const fc = new FakeCloud(); const { emails } = await fc.ses.getEmails();
expect(emails).toHaveLength(1);
expect(emails[0].destination.toAddresses).toContain("[email protected]"); await fc.reset();
aws --endpoint-url http://localhost:4566 s3 mb s3://test-bucket
echo hello | aws --endpoint-url http://localhost:4566 s3 cp - s3://test-bucket/hello.txt
aws --endpoint-url http://localhost:4566 s3 ls s3://test-bucket/
aws --endpoint-url http://localhost:4566 s3 rb s3://test-bucket --force
aws --endpoint-url http://localhost:4566 s3 mb s3://test-bucket
echo hello | aws --endpoint-url http://localhost:4566 s3 cp - s3://test-bucket/hello.txt
aws --endpoint-url http://localhost:4566 s3 ls s3://test-bucket/
aws --endpoint-url http://localhost:4566 s3 rb s3://test-bucket --force
aws --endpoint-url http://localhost:4566 s3 mb s3://test-bucket
echo hello | aws --endpoint-url http://localhost:4566 s3 cp - s3://test-bucket/hello.txt
aws --endpoint-url http://localhost:4566 s3 ls s3://test-bucket/
aws --endpoint-url http://localhost:4566 s3 rb s3://test-bucket --force - SERVICES env var. Drop it. fakecloud starts all services by default.
- LOCALSTACK_AUTH_TOKEN. Drop it.
- Persisted state. LocalStack Pro has PERSISTENCE=1. fakecloud has --persist /path/to/dir. - Install: -weight: 500;">curl -fsSL https://raw.githubusercontent.com/faiscadev/fakecloud/main/-weight: 500;">install.sh | bash
- Repo: github.com/faiscadev/fakecloud
- Site: fakecloud.dev
- Issues: github.com/faiscadev/fakecloud/issues