使用 LocalStack 在本地配置 AWS S3 存储桶
LocalStack是一个强大的工具,可以在本地系统上模拟 AWS 服务。您可以CLI像在云端一样运行命令和 Terraform 脚本。
在这篇简短的介绍中,我将向您展示如何设置 LocalStack 并通过 CLI 命令和 Terraform 启动 S3 实例。
安装要求:
- Python
- 管道
- Docker
- Terraform
安装
pip install localstack
创业公司
在开始运行 localstack 之前,请确保 Docker 服务已启动并正在运行。
了解如何使用 DockerDesktop 在本地创建容器。
从容器中以 Docker 模式启动 LocalStack
检查服务状态
% localstack status services
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Service ┃ Status ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ acm │ ✔ available │
│ apigateway │ ✔ available │
│ cloudformation │ ✔ available │
│ cloudwatch │ ✔ available │
│ config │ ✔ available │
│ dynamodb │ ✔ available │
│ dynamodbstreams │ ✔ available │
│ ec2 │ ✔ available │
│ es │ ✔ available │
│ events │ ✔ available │
│ firehose │ ✔ available │
│ iam │ ✔ available │
│ kinesis │ ✔ available │
│ kms │ ✔ available │
│ lambda │ ✔ available │
│ logs │ ✔ available │
│ opensearch │ ✔ available │
│ redshift │ ✔ available │
│ resource-groups │ ✔ available │
│ resourcegroupstaggingapi │ ✔ available │
│ route53 │ ✔ available │
│ route53resolver │ ✔ available │
│ s3 │ ✔ available │
│ s3control │ ✔ available │
│ secretsmanager │ ✔ available │
│ ses │ ✔ available │
│ sns │ ✔ available │
│ sqs │ ✔ available │
│ ssm │ ✔ available │
│ stepfunctions │ ✔ available │
│ sts │ ✔ available │
│ support │ ✔ available │
│ swf │ ✔ available │
└──────────────────────────┴─────────────┘
container现在您应该可以在 DockerDesktop 控制面板上看到 localstack正在运行。
通过 AWS CLI 创建 S3
让我们进入 localstack 容器,看看有哪些服务正在运行。
添加 AWS 配置文件
aws configure --profile default
Enter following values
Access key/Secret : test
Region: eu-west-2
profile : you can leave it blank`
检查配置:$ aws configure list
创建 S3 存储桶。
我们将部署到 localhost:4566。
aws s3 mb s3://my-bucket --endpoint-url http://localhost:4566
make_bucket: my-bucket
通过 Terraform 创建 S3
请确保 Terraform 已在您的系统上运行。
% terraform --version
Terraform v1.2.2
on darwin_arm64
现在你可以跟着我的步骤一步步操作,或者从我的代码库中查看这段代码:
使用 Terraform 在 LocalStack 上部署 S3。
是时候做一些基础设施即代码(IaC)了。
main.tf
resource "aws_s3_bucket" "s3-localstack" {
bucket = "my-bucket-1"
}
provider.tf
provider "aws" {
access_key = "test"
secret_key = "test"
region = "us-east-1"
skip_credentials_validation = true
skip_requesting_account_id = true
skip_metadata_api_check = true
s3_use_path_style = true
endpoints {
s3 = "http://localhost:4566"
}
}
运行常规的Terraform 命令
初始化工作目录:terraform init
计划变更,请核实:terraform plan
应用更改:terraform apply
就是这样
检查哪些服务正在运行
% localstack status services
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Service ┃ Status ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ acm │ ✔ available │
│ apigateway │ ✔ available │
│ cloudformation │ ✔ available │
│ cloudwatch │ ✔ available │
│ config │ ✔ available │
│ dynamodb │ ✔ available │
│ dynamodbstreams │ ✔ available │
│ ec2 │ ✔ available │
│ es │ ✔ available │
│ events │ ✔ available │
│ firehose │ ✔ available │
│ iam │ ✔ available │
│ kinesis │ ✔ available │
│ kms │ ✔ available │
│ lambda │ ✔ available │
│ logs │ ✔ available │
│ opensearch │ ✔ available │
│ redshift │ ✔ available │
│ resource-groups │ ✔ available │
│ resourcegroupstaggingapi │ ✔ available │
│ route53 │ ✔ available │
│ route53resolver │ ✔ available │
│ s3 │ ✔ running │--> here we are
│ s3control │ ✔ available │
│ secretsmanager │ ✔ available │
│ ses │ ✔ available │
│ sns │ ✔ available │
│ sqs │ ✔ available │
│ ssm │ ✔ available │
│ stepfunctions │ ✔ available │
│ sts │ ✔ available │
│ support │ ✔ available │
│ swf │ ✔ available │
└──────────────────────────┴─────────────┘
请继续测试您的脚本。
谢谢。



