如何将terraform与atlassian/localstack集成?

cph*_*ver 13 amazon-web-services terraform atlassian-localstack

Terraform可以配置自定义S3端点,似乎localstack可以为S3,SES,Cloudformation和其他少数服务创建本地堆栈.

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

Mar*_*ins 13

Terraform并未正式支持"AWS-workalike"系统,因为它们通常与AWS本身存在微妙的怪癖和差异.但是,它是尽力支持的,如果localstack能够为Terraform的目的提供足够逼真的S3印象,则可能会有效.

根据localstack文档,默认情况下会公开S3 API http://localhost:4572,因此以这种方式设置自定义端点可能有效:

provider "aws" {
  endpoints {
    s3 = "http://localhost:4572"
  }
}
Run Code Online (Sandbox Code Playgroud)

根据localstack的功能,您可能需要设置一些其他设置:

  • s3_force_path_style 为桶和对象使用基于路径的寻址方案.
  • skip_credentials_validation因为localstack似乎缺乏AWS令牌服务的实现.
  • skip_metadata_api_check 如果不使用IAM样式的凭据,则阻止Terraform尝试从EC2元数据API获取凭据.


Geo*_*oth 9

建立@ 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"
}
Run Code Online (Sandbox Code Playgroud)