Terraform 不使用提供的 AWS 配置文件?
Terraform not using provided AWS profile?
我稍后会更新,但现在...
$ terraform --version
Terraform v0.12.17
+ provider.aws v3.23.0
我在 ./aws/credentials
和 ~/.aws/config
文件中设置了 AWS 配置文件,就像这样...
~/.aws/credentials
[default]
aws_access_key_id=****
aws_secret_access_key=****
[myprofile]
aws_access_key_id=****
aws_secret_access_key=****
~/.aws/config
[default]
region=us-east-1
output=json
[profile myprofile]
region=us-east-1
output=json
在我的 Terraform 计划中,我有
provider "aws" {
region = "us-east-1"
profile = "myprofile"
}
terraform {
required_version = ">= 0.12.17, < 0.13"
}
resource "aws_vpc" "vpc" {
cidr_block = "10.123.123.0/24"
tags = {
Name = "test_vpc"
}
}
output "vpc_id" {
value = aws_vpc.vpc.id
}
我有一个创建 VPC 的计划,所以我这样做了
$ export AWS_PROFILE=myprofile
$ terraform apply
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Outputs:
module_vpc_id = vpc-123456abced
如您所见,计划创建了 VPC,但是,VPC 不是在 myprofile
账户中而是在 default
账户中创建的。我知道是因为 1) 我没有在 myprofile
帐户中看到它,并且 2) 当我销毁计划时,它显示 owner_id
作为 default
帐号。为什么?
更新: 请注意,如果我在我的 provider {}
块中添加 access_key
和 secret_key
key/value 对,它会创建正确帐户中的 VPC。我当然不想这样做,只是想证明该脚本确实适用于 myprofile
帐户。
更新:注意以下命令return无(空白)
$ echo $AWS_ACCESS_KEY_ID
$ echo $AWS_SECRET_ACCESS_KEY
和 运行 env
不显示这些变量。
根据评论。
此问题是由于设置了 AWS_PROFILE
环境变量引起的。根据 TF docs,该变量的优先级高于 Shared credentials/configuration file
:
- 静态凭据
- 环境变量
- 共享credentials/configuration文件
- CodeBuild、ECS 和 EKS 角色
- EC2 实例元数据服务(IMDS 和 IMDSv2)
我稍后会更新,但现在...
$ terraform --version
Terraform v0.12.17
+ provider.aws v3.23.0
我在 ./aws/credentials
和 ~/.aws/config
文件中设置了 AWS 配置文件,就像这样...
~/.aws/credentials
[default]
aws_access_key_id=****
aws_secret_access_key=****
[myprofile]
aws_access_key_id=****
aws_secret_access_key=****
~/.aws/config
[default]
region=us-east-1
output=json
[profile myprofile]
region=us-east-1
output=json
在我的 Terraform 计划中,我有
provider "aws" {
region = "us-east-1"
profile = "myprofile"
}
terraform {
required_version = ">= 0.12.17, < 0.13"
}
resource "aws_vpc" "vpc" {
cidr_block = "10.123.123.0/24"
tags = {
Name = "test_vpc"
}
}
output "vpc_id" {
value = aws_vpc.vpc.id
}
我有一个创建 VPC 的计划,所以我这样做了
$ export AWS_PROFILE=myprofile
$ terraform apply
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Outputs:
module_vpc_id = vpc-123456abced
如您所见,计划创建了 VPC,但是,VPC 不是在 myprofile
账户中而是在 default
账户中创建的。我知道是因为 1) 我没有在 myprofile
帐户中看到它,并且 2) 当我销毁计划时,它显示 owner_id
作为 default
帐号。为什么?
更新: 请注意,如果我在我的 provider {}
块中添加 access_key
和 secret_key
key/value 对,它会创建正确帐户中的 VPC。我当然不想这样做,只是想证明该脚本确实适用于 myprofile
帐户。
更新:注意以下命令return无(空白)
$ echo $AWS_ACCESS_KEY_ID
$ echo $AWS_SECRET_ACCESS_KEY
和 运行 env
不显示这些变量。
根据评论。
此问题是由于设置了 AWS_PROFILE
环境变量引起的。根据 TF docs,该变量的优先级高于 Shared credentials/configuration file
:
- 静态凭据
- 环境变量
- 共享credentials/configuration文件
- CodeBuild、ECS 和 EKS 角色
- EC2 实例元数据服务(IMDS 和 IMDSv2)