繁体   English   中英

配置 Terraform AWS 提供程序时出错 - Linux

[英]Error configuring Terraform AWS Provider - Linux

[ - - - - - - - - - - - - 更新 - - - - - - - - - - - - - -]

我现在尝试了一个将 terraform 与 s3 集成的教程。 创建了 S3 存储桶,我创建了一个 IAM 用户,我正在使用它的访问密钥和秘密密钥。 尽管如此,在terraform init之后,我不断收到有关提供程序的错误:

后端.tf

terraform {
  required_version = ">=0.12.0"
  backend "s3" {
    region  = "us-east-1"
    key     = "terraform.tfstate"
    profile = "tu"
    bucket  = "terraformstatebucket3107"
  }
}

.aws 文件夹中的配置文件

[tu]
region = us-east-1
output = json

.aws 文件夹中的凭证文件

[tu]
aws_access_key_id = AKIA*****************
aws_secret_access_key = nn3M1*****************

错误:

Initializing the backend...

Error: error configuring S3 Backend: no valid credential sources for S3 Backend found.

Please see https://www.terraform.io/docs/backends/types/s3.html
for more information about providing credentials.

Error: NoCredentialProviders: no valid providers in chain. Deprecated.
    For verbose messaging see aws.Config.CredentialsChainVerboseErrors

所以,我已经尝试了这里建议的所有解决方案,但不幸的是,它们都没有解决我的问题。 经过一番挖掘,我找到了一个适合我的解决方案。 那是使用-backend-config选项执行terraform init命令,如下所示:

terraform init -backend-config="access_key=<your access key>" -backend-config="secret_key=<your secret key>"

这是我找到此解决方案的问题: 配置 Terraform S3 后端时出错

您需要检查几件事。

  1. .aws文件夹下应该有一个带有名称凭据的文件,并且该文件的内容应该具有访问密钥和密钥。

     [tu] aws_access_key_id = *************** aws_secret_access_key = ************************
  2. 如果上述文件存在正确的密钥,并且仍然出现相同的错误,那么我建议您应该在提供程序块中提及访问密钥和秘密密钥,如下所示

     provider "aws" { access_key = var.aws_access_key secret_key = var.aws_secret_key region = var.region }

并将上述变量值存储在.tfvars文件中

aws_access_key ="****your access key****"
aws_secret_key = "***your secret key****"

希望通过这些设置它应该可以工作,即使这个问题仍然存在,然后我在你的 .aws/config 中看到你提到了mfa arn

如果启用了多因素身份验证,则尝试在backend.tf文件中添加mfa 会话令牌以及我上面提到的提供程序块

terraform {
  required_version = ">=0.12.0"
  backend "s3" {
    region  = "us-east-1"
    key     = "terraform.tfstate"
    bucket  = "terraformstatebucket3107"
    token   = "*****Your MFA SessionToken*****"
  }
}

要获取 MFA SessionToken,请在此处查看

运行terraform init您必须为您的凭据(aws 密钥)添加-backend-config选项。

尝试使用 Terraform Cloud 作为状态的后端存储运行时遇到了这个问题。

确保在 Terraform Cloud 中设置环境变量或将执行模式设置为“本地”,以便使用本地系统。

由于我已将其设置为运行“远程”并且其他所有内容实际上都是正确的,因此我花了一段时间对未找到的配置文件进行故障排除。

Terraform 云执行模式选项的屏幕截图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM