16

Terraform 可以配置自定义 S3 端点,并且似乎localstack可以为 S3、SES、Cloudformation 和其他一些服务创建本地堆栈。

问题是在 Terraform 配置中写什么来使用 localstack 的 S3 端点?

4

2 回答 2

13

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 获取凭证。
于 2017-05-12T00:51:41.290 回答
11

以@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"
}
于 2017-12-12T05:17:05.050 回答