Codeship / Docker上的Terraform S3后端身份验证

时间:2018-11-20 10:32:15

标签: docker amazon-s3 terraform codeship

我正在使用Terraform版本0.11.10,并且已经设置了S3后端,当我使用AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量进行身份验证时,它可以在本地工作。

provider "aws" {
  region  = "eu-west-1"
}

terraform {
  backend "s3" {
    bucket         = "terraform-state-xxxxx"
    region         = "eu-west-1"
    key            = "terraform/dev.tfstate"
    dynamodb_table = "terraform-locks"
  }
}

但是,当我尝试使用相同的环境变量在Codeship上的hashicorp / terraform:0.11.10 Docker容器中运行完全相同的代码时,会出现以下错误:

  

初始化后端...

     

配置后端“ s3”时出错:InvalidClientTokenId:安全性   请求中包含的令牌无效。

如果我设置skip_credentials_validation = "true",则会得到以下信息:

  

InvalidAccessKeyId:您提供的AWS Access Key ID在我们的记录中不存在。

为什么不使用环境变量中的凭据?

没有〜/ .aws / credentials文件或据我所知可以从中获取凭据的任何其他地方。

1 个答案:

答案 0 :(得分:0)

在我的情况下,我尝试将ACCESS_KEY_ID和SECRET_ACCESS_KEY设置为环境变量,但事实证明,我还有一个〜/ .aws / credentials -file,而我的盒子的设置已设置那里的默认值。似乎使用了〜/ .aws / credentials文件,而没有使用环境变量。