如果在使用Terraform的AWS提供程序中出现“创建EC2元数据会话时发生错误”的情况,可以采取以下措施解决
首先
最近我开始学习使用Terraform,然后在使用过程中想尝试迁移到Terraform Cloud,因此我也想尝试使用AWS提供商的Dynamic Credentials。但在尝试的过程中出现了标题所述的错误,因此我将解决方法记录下来作为备忘。
解决方案 (jiě jué àn)
为了那些想要快速了解的人们,我提前写下了以下的解决步骤,实际上只需要完成以下步骤即可解决。
- AWSプロバイダーバージョンを2系から3系にupgradeした
事情的发生
按照以下步骤将之前在本地运行的Terraform状态管理迁移到Terraform Cloud,但在本地执行terraform plan时遇到错误,无法部署。
具体来说,发生了以下错误。
Planning failed. Terraform encountered an error while generating this plan.
╷
│ Error: error creating EC2 Metadata session: CredentialRequiresARNError: credential type web_identity_token_file requires role_arn, profile default
│
│ with provider["registry.terraform.io/hashicorp/aws"],
│ on variables.tf line 18, in provider "aws":
│ 18: provider "aws" {
│
╵
当发生错误时的tf文件如下。
我在组织和工作区中放置了占位符。
terraform {
required_version = ">= 0.14"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 2.0"
}
}
backend "remote" {
organization = "sample_org"
workspaces {
name = "sample_workspace"
}
}
}
provider "aws" {
region = "ap-northeast-1"
}
调查原因 chá)
我认为这个链接所提供的内容与最初的AWS页面非常相似,不过我查看了以下官方页面来调查原因,但并没有找到特定的可能原因。
此外,我还从AWS管理控制台中查看了被Terraform Cloud假设的IAM角色的“最后活动”,发现显示为“无”。因此,我开始怀疑是否有配置错误,导致假设本身没有被执行,并对所有配置内容进行了全面确认,但没有发现任何错误。
搞定!
没有特别的原因,只是隐约觉得可能是由于提供程序版本太旧了。于是我将版本修正为3系,并使用”terraform init -upgrade”和”terraform plan”命令执行时没有发生任何错误,指令成功执行。
※由于我是唯一使用此环境的人,所以不需要太过关注版本差异,我升级了版本。
~省略~
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0"
}
}
~省略~
最后
在解决问题后,我试图寻找相应的文件,但没有特别找到,如果您知道的话,能告诉我就很高兴了。无论如何,很高兴问题得到解决。