【问题标题】:terraform beginner: where is my EC2 instance gone?terraform 初学者:我的 EC2 实例去哪儿了?
【发布时间】:2020-01-31 04:40:48
【问题描述】:

我创建了一个全新的(免费)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 状态文件...)。

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

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

【问题讨论】:

  • 嗨 Eric - 我可以想象 TF 状态文件与实际状态的托管状态不一致,因此值得尝试运行显示信息来获取 instanceId 或者运行销毁并计划/应用。或者 - 不确定您是否有多个帐户,但值得仔细检查为您的 terraform 设置的 API 密钥是否实际上用于同一帐户,以及您的控制台是否指向同一区域。
  • 首先检查用于terraform的密钥和访问密钥属于哪个AWS账户,然后在控制台上检查正确的区域。这是一个总是有逻辑的软件,而不是会吃掉你的实例的魔法:)
  • 我通过环境变量设置了 AWS_ACCESS_KEY 和 AWS_SECRET_ACCESS_KEY,它们的 AWS_ACCESS_KEY 看起来不错
  • 对于 TF 状态,似乎没问题,因为 terraform plan 可以识别实例。它甚至给了我实例 ID,但不确定我能用它做什么

标签: amazon-ec2 terraform terraform-provider-aws


【解决方案1】:

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

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

碰巧我的 ~/.aws 文件夹中有一个“凭据”文件,其中包含我大约一年前在另一个 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}"
}

【讨论】:

  • 如果您在 Windows 上,其他凭证也可能来自 Windows AWS Toolkit 位置,而不仅仅是来自 CLI ~/.aws/credentials 或来自 AWS_* 环境变量:docs.aws.amazon.com/powershell/latest/userguide/… 希望这可能会揭示偷偷摸摸的凭据!
【解决方案2】:

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

【讨论】:

  • 检查了 us-east-1(弗吉尼亚北部)和 us-east-2(俄亥俄)
  • 您可以运行命令terraform show 并将输出粘贴到您的问题中吗?
猜你喜欢
  • 2016-03-24
  • 2011-04-10
  • 1970-01-01
  • 2017-02-06
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 2011-03-03
相关资源
最近更新 更多