AWS 提供商中的 Terraform 配置文件字段用法
Terraform profile field usage in AWS provider
我有一个这样的 $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
它说它没有找到任何有效的凭据:
Initializing the backend...
Error: No valid credential sources found for AWS Provider.
Please see https://terraform.io/docs/providers/aws/index.html for more information on
providing credentials for the AWS Provider
作为解决方法,我在我的凭据文件中将 config2
更改为 default
,并从 provider
块中删除了 profile
字段,因此它可以工作,但我真的需要使用类似于第一种方法的东西。我在这里错过了什么?
遗憾的是,您还需要向后端配置以及您的 AWS 提供商配置提供 IAM 凭证配置。
此处 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 二进制文件而不是提供者二进制文件管理,并且后端初始化发生在几乎所有其他事情之前。
我有一个这样的 $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
它说它没有找到任何有效的凭据:
Initializing the backend...
Error: No valid credential sources found for AWS Provider. Please see https://terraform.io/docs/providers/aws/index.html for more information on providing credentials for the AWS Provider
作为解决方法,我在我的凭据文件中将 config2
更改为 default
,并从 provider
块中删除了 profile
字段,因此它可以工作,但我真的需要使用类似于第一种方法的东西。我在这里错过了什么?
遗憾的是,您还需要向后端配置以及您的 AWS 提供商配置提供 IAM 凭证配置。
此处 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 二进制文件而不是提供者二进制文件管理,并且后端初始化发生在几乎所有其他事情之前。