使用 s3 后端初始化 terraform 时出现问题 - CredentialRequiresARNError

Posted

技术标签:

【中文标题】使用 s3 后端初始化 terraform 时出现问题 - CredentialRequiresARNError【英文标题】:Problem Initializing terraform with s3 backend - CredentialRequiresARNError 【发布时间】:2021-11-13 10:48:45 【问题描述】:

我在以下设置中初始化 terraform s3 后端时遇到问题。这适用于 terraform 版本 0.11.15,但适用于 0.15.5 和 1.0.7。

有2个文件:

terraform.tf

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


terraform 
  backend "s3" 
  


resource "aws_s3_bucket" "this" 
  bucket = "test-bucket"
  acl    = "private"

test-env.tfvars

encrypt = true
dynamodb_table = "terraform-test-backend"
bucket = "terraform-test-backend"
key = "terraform/deployment/test-release.tfstate"
region = "eu-west-1"

当我使用 terraform 0.11.15 运行 terraform init -backend-config=test-env.tfvars 时,它可以工作并且我可以执行 terraform apply。这是输出:

Successfully configured the backend "s3"! Terraform will automatically                                                                                                                                                                        
use this backend unless the backend configuration changes.                                                                                                                                                                                    
                                                                                                                                                                                                                                              
Initializing provider plugins...                                                                                                                                                                                                              
- Checking for available provider plugins on https://releases.hashicorp.com...                                                                                                                                                                
- Downloading plugin for provider "aws" (2.70.0)...                                                                                                                                                                                           
* provider.aws: version = "~> 2.70"

但是当我尝试使用 0.15.5 和 1.0.7 版本时,我收到以下错误:

Error: error configuring S3 Backend: Error creating AWS session: CredentialRequiresARNError: credential type source_profile requires role_arn, profile default

任何想法如何解决它?

【问题讨论】:

【参考方案1】:

针对 s3 后端和 terraform 在 >0.13 版本中检查凭据的方式进行了一些更改。 看看following GitHub issue 或者更具体的 this one。此外,它在Changelog

中列出

我认为您面临的问题与您的 aws 配置文件的设置方式有关(请查看您的 ~/.aws/config)。

【讨论】:

谢谢 :-) 你说得对,配置文件配置错误。

以上是关于使用 s3 后端初始化 terraform 时出现问题 - CredentialRequiresARNError的主要内容,如果未能解决你的问题,请参考以下文章

使用 terraform 初始设置 terraform 后端

带有 DynamoDB 后端的 terraform:创建新工作区时出现 400 Bad Request

无法使用“terraform init -reconfigure”将 S3 后端中的 Terraform 远程状态转换为本地状态

Terraform 参考为远程后端创建了 S3 存储桶

Terraform init │ 错误:配置 S3 后端时出错:找不到 S3 后端的有效凭证源

使用 AlamoFire 和预签名 URL 将图像上传到 S3 存储桶时出现问题