Terraform 可以配置自定义 S3 端点,并且似乎localstack可以为 S3、SES、Cloudformation 和其他一些服务创建本地堆栈。
问题是在 Terraform 配置中写什么来使用 localstack 的 S3 端点?
Terraform 可以配置自定义 S3 端点,并且似乎localstack可以为 S3、SES、Cloudformation 和其他一些服务创建本地堆栈。
问题是在 Terraform 配置中写什么来使用 localstack 的 S3 端点?
Terraform 并未正式支持“AWS-workalike”系统,因为它们相对于 AWS 本身通常存在细微的怪癖和差异。但是,它在尽力而为的基础上得到支持,如果 localstack 能够为 Terraform 的目的提供足够真实的 S3 印象,它可能会起作用。
根据 localstack 文档,默认情况下 S3 API 在 公开http://localhost:4572
,因此以这种方式设置自定义端点可能有效:
provider "aws" {
endpoints {
s3 = "http://localhost:4572"
}
}
根据 localstack 的功能,您可能需要设置一些其他设置:
s3_force_path_style
为桶和对象使用基于路径的寻址方案。skip_credentials_validation
,因为 localstack 似乎缺少 AWS 令牌服务的实现。skip_metadata_api_check
如果不使用 IAM 样式的凭证,以防止 Terraform 尝试从 EC2 元数据 API 获取凭证。以@martin-atkins 的回答为基础,这是一个与 Localstack 一起使用的示例 Terraform 文件:
provider "aws" {
region = "us-east-1"
access_key = "anaccesskey"
secret_key = "asecretkey"
skip_credentials_validation = true
skip_metadata_api_check = true
s3_force_path_style = true
endpoints {
s3 = "http://localhost:4572"
}
}
resource "aws_s3_bucket" "b" {
bucket = "my-tf-test-bucket"
acl = "public-read"
}