【问题标题】:Terraform profile field usage in AWS providerAWS 提供商中的 Terraform 配置文件字段使用情况
【发布时间】:2019-11-17 02:47:05
【问题描述】:

我有一个像这样的$HOME/.aws/credentials 文件:

[config1]
aws_access_key_id=accessKeyId1
aws_secret_access_key=secretAccesskey1

[config2]
aws_access_key_id=accessKeyId2
aws_secret_access_key=secretAccesskey2

所以我期待通过这种配置,terraform 将选择第二个凭据:

terraform {
  backend "s3" {
    bucket  = "myBucket"
    region  = "eu-central-1"
    key     = "path/to/terraform.tfstate"
    encrypt = true
  }
}

provider "aws" {
  profile = "config2"
  region  = "eu-central-1"
}

但是当我尝试terraform init 时,它说它没有找到任何有效的凭据:

正在初始化后端...

错误:未找到 AWS Provider 的有效凭证源。 有关更多信息,请参阅https://terraform.io/docs/providers/aws/index.html 为 AWS Provider 提供凭证

作为解决方法,我在凭据文件中将config2 更改为default,并从provider 块中删除了profile 字段,因此它可以工作,但我确实需要使用类似于第一种方法的方法。我在这里错过了什么?

【问题讨论】:

  • 你是如何配置你的远程状态的?你能分享一下确切的错误吗?

标签: terraform terraform-provider-aws


【解决方案1】:

很遗憾,您还需要将 IAM 凭证配置提供给后端配置以及您的 AWS 提供商配置。

S3 后端配置在此处采用与 AWS 提供商相同的参数,因此您可以像这样指定后端配置:

terraform {
  backend "s3" {
    bucket  = "myBucket"
    region  = "eu-central-1"
    key     = "path/to/terraform.tfstate"
    encrypt = true
    profile = "config2"
  }
}

provider "aws" {
  profile = "config2"
  region  = "eu-central-1"
}

这背后有几个原因需要单独完成。原因之一是您可以为 S3 存储桶以及您将通过 AWS 提供商管理的资源独立使用不同的 IAM 凭证、账户和区域。即使您在另一个云提供商中创建资源或根本不使用云提供商,您也可能希望使用 S3 作为后端,Terraform 可以在许多无法存储 Terraform 状态的地方管理资源。主要原因是后端实际上是由核心 Terraform 二进制文件而不是提供程序二进制文件管理的,并且后端初始化几乎发生在其他任何事情之前。

【讨论】:

  • 按照我建议的更改工作并删除了 .terraform 文件夹
猜你喜欢
  • 2023-01-19
  • 1970-01-01
  • 2020-04-21
  • 2021-09-29
  • 2021-03-27
  • 2019-04-06
  • 2023-04-02
  • 2021-05-31
  • 2019-06-06
相关资源
最近更新 更多