LocalStack
LocalStack 是一个可以在本地运行的云服务([[AWS 云服务平台]])模拟器。
LocalStack 提供云开发者工具,可以加速和简化测试和开发流程。
快速上手¶
multipass launch docker
docker run --rm -it -p 0.0.0.0:4566:4566 -p 4510-4559:4510-4559 localstack/localstack
open http://$(multipass exec docker -- hostname -I | awk '{print $1}'):4566/health
问题¶
在 [[Multipass]] 构建的 [[Docker]] 环境中启动 [[LocalStack]],使用 LocalStack Cockpit 时会遇到 Docker not available
的报错。 LocalStack Cockpit 默认使用 sdkDockerClient
,DOCKER_HOST
为 Unix Domain,宿主机和虚拟机间无法通信。 可以修改 [[LocalStack]] 配置 LEGACY_DOCKER_CLIENT
,好像没有用。
LocalStack Cockpit 有点鸡肋,目前只能查看 [[LocalStack]] 状态。
特别注意, 容器名称要为 localstack_main
。
命令行¶
详见 AWS Command Line Interface 。
pip install awscli awscli-local
配置¶
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test
export DEFAULT_REGION=cn-north-1
export LOCALSTACK_HOST=localhost
complete -C '/opt/homebrew/bin/aws_completer' awslocal
aws configure --profile default
使用¶
命令格式: aws <command> <subcommand> [options and parameters]
AWS 服务¶
见 [[AWS 云服务平台]],详见 AWS Service Feature Coverage | Docs (localstack.cloud)。
S3¶
# open http://localhost:4566/my-bucket/index.html
# open http://s3.localhost.localstack.cloud:4566/my-bucket/index.html
open http://my-bucket.s3.localhost.localstack.cloud:4566/index.html
详见 DNS Server | Docs (localstack.cloud)。
CDK¶
open https://2gtnmgnupp.execute-api.localhost.localstack.cloud:4566/prod/
TerraformLocal¶
pip install terraform-local
问题¶
Creating EC2 via terraform throws InvalidParameterValue: Value (disableApiStop)
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.18.0"
}
}
}
原理剖析¶
配置详解¶
工作原理¶
![[localstack.png]]
资源¶
- LocalStack | S3
- LocalStack | API Gateway V2
- LocalStack | Lambda
- LocalStack | CloudFormation
- Configuration | Docs (localstack.cloud)
- DNS Server | Docs (localstack.cloud)
- Environment variables in Compose | Docker Documentation
最后更新: September 10, 2023