如何将Terraform与Atlassian/Localstack集成?

16

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

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

2个回答

13

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获取凭证。

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"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接