Terraform导入默认选择一个不同于提供者代码块中设置的AWS配置文件



所以我想开始从AWS帐户导入现有的基础设施,并且我在main.tf文件中有以下简单代码:

provider "aws" {
shared_credentials_file = "$HOME/.aws/credentials"
profile                 = "profile_I_want"
region                  = "us-east-1"
}
resource "aws_ecs_cluster" "my_cluster" {
# name = "my-cluster"
}

我的AWS凭据文件有两个配置文件+默认的一个集:

[default]
aws_secret_access_key = secretkey2
aws_access_key_id = accesskey2
[another_profile]
aws_secret_access_key = secretkey1
aws_access_key_id = accesskey1
[profile_I_want]
aws_secret_access_key = secretkey2
aws_access_key_id = accesskey2

注:another_profileprofile_I_want对应不同的AWS帐号。

这些是我正在使用的版本:

Terraform v0.12.28
+ provider.aws v2.70.0

当我执行terraform import aws_ecs_service.my_service my-service时,会出现下一个错误:

aws_ecs_cluster.my_cluster: Refreshing state... [id=arn:aws:ecs:us-east-1:another_profile_ID:cluster/my-cluster]
Error: Cannot import non-existent remote object

注意another_profile_IDarn

以下是我的问题:

  1. Terraform在某一点上默认选择another_profile,我不知道如何更改它。我可以从profile_I_want帐户设置和导入基础设施吗
  2. 当目录中没有以前的.tfstate文件时,我可以导入基础结构吗

我想我找到了一个解决方案,至少在我的情况下,terraform import似乎取了环境变量AWS_ACCESS_KEYAWS_SECRET_KEY的值,所以我只是在处理这个项目时更改了这两个变量的值。

最新更新