配置 S3 后端时 Terraform 出现错误

问题描述 投票:0回答:11

尝试将我的状态文件存储在 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
11个回答
5
投票

尝试执行

aws sts get-caller-identity
命令并查看您使用的凭据是否正确。


3
投票

就我而言,我可以通过删除

.terraform/
文件夹然后再次运行
terraform init
来解决问题。


1
投票

我不完全确定,但我认为在

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

并且

terraform
部分应放置在文件开头的
aws provider
部分之前。


0
投票

我遇到了类似的错误:

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" {

事实证明我工作的区域是未启用。仅供参考,启用一个区域需要几分钟时间。


0
投票

就我而言,首先我需要在 AWS CLI(公司策略)上配置 MFA,然后编辑

~/.aws/credentials (vim ~/.aws/credentials)
添加正确的配置文件。

就我而言,它显示

[default]
。编辑后,我在 vs code 上仍然遇到错误。我在本地终端上尝试过,它成功了。


0
投票

对我来说问题是。我在

~/.aws/config

中定义了一个现有的 aws 令牌

尝试检查一下,特别是如果您使用多个配置文件。


0
投票

默认构造函数客户端使用系统环境变量中的默认凭证搜索凭证:AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY。

所以取消设置它们。

然后执行

aws sts get-caller-identity
命令并查看您是否使用了正确的凭据。


0
投票

在控制台上使用“aws configure”并添加新/旧凭据即可,因为之后我的工作正常


0
投票

access_keysecret_key 添加到后端配置

backend "s3" {
bucket = "s3-demo-bucket-XXX"
key    = "s3remotestate.tf.state"
region = "us-east-1"

access_key = "XX"
secret_key = "XX

}


-1
投票

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

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

另外不要忘记将这一行添加到您的文件variables.tf中:

变量“令牌”{}


-2
投票
terraform init
-backend-config="access_key=${{ secrets.AWS_ACCESS_KEY }}"
-backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY}}"

复制自Reddit

© www.soinside.com 2019 - 2024. All rights reserved.