terraform 初学者:我的 EC2 实例去哪儿了?

terraform beginner: where is my EC2 instance gone?

我创建了一个全新的(免费)AWS 账户。

我使用 terraform 创建了一个 EC2 实例,但在 aws 控制台中看不到它。

我的 terraform 脚本很简单

provider "aws" {
  region = "us-east-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
  tags = {
    Name = "terraform-example"
  }
}

terraform apply 成功完成,但在 AWS 控制台上转到 EC2 时,它告诉我没有实例...

即使我以 AWS 根帐户登录。

出于好奇,我通过 AWS 控制台手动创建了一个 EC2 实例。我可以看到这是手动创建的。

如果我再次 运行 terraform plan,它仍然说一切正常...

它不应该尝试删除这个新的手动实例吗?

这是否确认我的 Terraform 实例没有查看我认为是的帐户???


后来,我将完全相同的凭据和 main.tf 文件带到了另一台笔记本电脑

最初 terraform plan 无法识别我之前创建的 EC2(或任何东西)(我想这是因为我没有跨 Terraform 状态文件复制...)。

运行 terraform apply 重新创建了项目...这次我可以看到我创建的实例...

下一步:尝试查明这个初始 EC2 实例是否已在另一个区域创建...我希望通过计费/或 activity...

查明

您是否在 AWS 控制台中选择了 us-east-2 区域(俄亥俄州)。默认情况下,我认为新的美国帐户默认为 us-east-1(弗吉尼亚),但您的 TF AWS 提供商配置为部署到 us-east-2。

那是因为我没有使用我认为的凭据...

我以为我已经设置了 2 个 env 变量 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 但是我在分配 AWS_SECRET_ACCESS_KEY 时输入错误并且没有设置。

碰巧我的 ~/.aws 文件夹中有一个 "credentials" 文件,其中包含大约一年前我在另一个 AWS 帐户上所做的测试(我都忘记了)。

删除 .aws/credentials 文件并正确分配 AWS_SECRET_ACCESS_KEY 后,一切都按预期运行。

我使用了 Laura M.(感谢)给我的一个技巧来显示 terraform 使用了哪些用户详细信息

data "aws_caller_identity" "current" {}

output "account_id" {
  value = "${data.aws_caller_identity.current.account_id}"
}

output "caller_arn" {
  value = "${data.aws_caller_identity.current.arn}"
}

output "caller_user" {
  value = "${data.aws_caller_identity.current.user_id}"
}