我正在使用Terraform版本0.11.10,并且已经设置了S3后端,当我使用AWS_ACCESS_KEY_ID
和AWS_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文件或据我所知可以从中获取凭据的任何其他地方。
答案 0 :(得分:0)
在我的情况下,我尝试将ACCESS_KEY_ID和SECRET_ACCESS_KEY设置为环境变量,但事实证明,我还有一个〜/ .aws / credentials -file,而我的盒子的设置已设置那里的默认值。似乎使用了〜/ .aws / credentials文件,而没有使用环境变量。