gpt4 book ai didi

Terraform 不使用提供的 AWS 配置文件?

转载 作者:行者123 更新时间:2023-12-05 03:45:49 24 4
gpt4 key购买 nike

我稍后会更新,但现在......

$ 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_keysecret_key 键/值对 block ,它会在正确的帐户中创建 VPC。我当然不想这样做,只是想证明该脚本确实适用于 myprofile 帐户。

更新:注意以下命令不返回任何内容(空白)

$ echo $AWS_ACCESS_KEY_ID
$ echo $AWS_SECRET_ACCESS_KEY

并且运行 env 不会显示这些变量。

最佳答案

基于评论。

问题是由于设置了 AWS_PROFILE 环境变量引起的。根据TF docs ,该变量的优先级高于 Shared credentials/configuration file:

  • 静态凭证
  • 环境变量
  • 共享凭据/配置文件
  • CodeBuild、ECS 和 EKS 角色
  • EC2 实例元数据服务(IMDS 和 IMDSv2)

关于Terraform 不使用提供的 AWS 配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65634642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com