Terraform可以配置自定义的S3端点,而localstack似乎可以为S3、SES、Cloudformation和其他一些服务创建本地堆栈。
问题是在Terraform配置中要写什么才能使用localstack的S3端点?
Terraform可以配置自定义的S3端点,而localstack似乎可以为S3、SES、Cloudformation和其他一些服务创建本地堆栈。
问题是在Terraform配置中要写什么才能使用localstack的S3端点?
Terraform官方不支持“类似AWS”的系统,因为它们通常与AWS本身存在微妙的怪癖和差异。但是,它可以在最佳努力的基础上得到支持,如果localstack能够为Terraform的目的提供足够逼真的S3印象,则可能会起作用。
根据localstack文档,默认情况下,在http://localhost:4572
暴露了S3 API,因此通过这种方式设置自定义端点可能有效:
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"
}