要在 Terraform 远程状态中使用 AWS_PROFILE 环境变量设置的 AWS DefaultCredentialProvider,需要将此环境变量添加到远程状态数据源的配置中。
以下是使用 S3 存储后端的远程状态数据源配置示例:
terraform {
backend "s3" {
bucket = "example-bucket"
key = "terraform.state"
region = "us-west-2"
# Add AWS_PROFILE env var to provider config
profile = "${var.aws_profile}"
# Optional: Encrypt state in S3 with KMS
kms_key_id = "1234abcd-12ab-34cd-56ef-1234567890ab"
}
}
# Define variable for AWS profile name
variable "aws_profile" {}
# Configure AWS provider with AWS_PROFILE env var
provider "aws" {
region = "us-west-2"
profile = var.aws_profile
}
请注意,此示例中的 aws_profile 变量必须在 Terraform 命令行中设置或通过 .tfvars 文件设置。例如:
terraform apply -var 'aws_profile=myprofile'
设置后,该变量将传递到远程状态数据源和 AWS 提供程序配置中,从而使 AWS_PROFILE 环境变量设置的 AWS DefaultCredentialProvider 在 Terraform 远程状态中生效。