AWS 提供程序中的地形配置文件字段使用情况



我有一个这样的$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 提供商的有效凭证源。 请参阅 https://terraform.io/docs/providers/aws/index.html 以获取更多信息 为 AWS 提供商提供凭证

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

遗憾的是,您还需要向后端配置提供 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 二进制文件而不是提供者二进制文件管理,并且后端初始化几乎发生在其他任何事情之前。

相关内容

  • 没有找到相关文章

最新更新