【问题标题】:Terraform getting error when configuring S3 BackendTerraform 在配置 S3 后端时出错
【发布时间】:2021-09-26 10:09:06
【问题描述】:

尝试将我的状态文件存储在 s3 存储桶中,但在尝试“Terraform init”时出现此错误:

  • 确保我的 aws 凭据没有“/# $ ..”
error configuring S3 Backend: error validating provider credentials: 
error calling sts:GetCallerIdentity: 
InvalidClientTokenId: The security token included in the request is invalid.

main.tf:

provider "aws" {
  region     = var.region
  access_key = var.acc_key
  secret_key = var.sec_key
}

terraform {
  backend "s3" {
    bucket         = "mybucket-terra-prac"
    key            = "terraform.tfstate"
    region         = "eu-central-1"
  }
}
resource "aws_instance" "web" {
  ami           = var.ami
  instance_type = "t2.large"
  associate_public_ip_address=true
  key_name = var.public_key
  tags = {
    Name = var.ec2_name
  }
}

variables.tf 文件中的变量(类型和默认值):

variable "acc_key" {}
variable "sec_key" {}
variable "public_key" {}
variable "ami" {}

【问题讨论】:

    标签: amazon-web-services amazon-s3 terraform terraform-provider-aws


    【解决方案1】:

    尝试执行aws sts get-caller-identity 命令,看看您使用的凭据是否正确。

    【讨论】:

      【解决方案2】:

      我不完全确定,但我认为在 aws provider 部分中指定 region 时不能使用变量。我认为您需要将其硬编码到您所在的地区。同样也不完全确定,但在 secretaccess 键中使用变量应该是硬编码的,而不是指向一个变量(这些参数是为了在 terraform 文件中直接指定值时使用)。

      并且terraform部分应该放在文件开头aws provider部分之前。

      【讨论】:

      • 嘿,谢谢你的回答,但尝试了所有但没有工作..(提供者之前的 terraform 块,硬编码区域 + acc + 密钥)
      • 好吧,那真的很奇怪。如果可以,您可以删除现有的状态文件并再次启动 terraform(再一次,仅在您没有生产或您有能力删除 tfstate 文件时才这样做)。但我认为更有可能是您的访问令牌有问题,或者您没有对存储桶正确的 IAM 权限。您可以查看您需要的 IAM 政策here,但我相信您已经看过此页面。
      • 您也可以尝试生成一个新的访问密钥,看看它是否有效。
      • 你检查this问题了吗?
      【解决方案3】:

      您的 AWS 提供商似乎缺少“令牌”字段。 尝试将此字段添加到您的 AWS 提供商部分。 您的 AWS 提供商块应如下所示:

      provider "aws" {
        region     = var.region
        access_key = var.acc_key
        secret_key = var.sec_key
        token      = var.token
      }
      

      另外不要忘记在你的文件 variables.tf 中添加这一行:

      变量“令牌”{}

      【讨论】:

        【解决方案4】:

        我遇到了类似的错误:

        Error: error configuring Terraform AWS Provider: error validating provider credentials: error calling sts:GetCallerIdentity: InvalidClientTokenId: The security token included in the request is invalid.
              status code: 403, request id: f07a9a38-ef21-44ee-a122-71800b865fea
        
          with provider["registry.terraform.io/hashicorp/aws"],
          on main.tf line 1, in provider "aws":
           1: provider "aws" {
        

        原来我工作的地区是not enabled。仅供参考,启用区域需要几分钟时间。

        【讨论】:

          【解决方案5】:

          就我而言,首先我需要在我的 AWS CLI(公司策略)上配置 MFA,然后我编辑了 ~/.aws/credentials (vim ~/.aws/credentials) 添加正确的个人资料。

          就我而言,它显示的是[default]。编辑后我仍然在 vs 代码上遇到错误。我在本地终端上尝试过,它成功了。

          【讨论】:

          • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
          猜你喜欢
          • 2019-08-22
          • 2021-12-23
          • 2018-11-21
          • 2021-09-04
          • 2021-04-04
          • 2022-06-20
          • 1970-01-01
          • 2021-07-04
          • 2021-11-13
          相关资源
          最近更新 更多