Amazon ec2 terraform初学者:我的EC2实例到哪里去了?

Amazon ec2 terraform初学者:我的EC2实例到哪里去了?,amazon-ec2,terraform,terraform-provider-aws,Amazon Ec2,Terraform,Terraform Provider Aws,我创建了一个全新的免费AWS帐户 使用terraform,我创建了一个EC2实例,但在aws控制台中看不到它 我的地形脚本非常简单 provider "aws" { region = "us-east-2" } resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" tags = { Name = "terraform-e

我创建了一个全新的免费AWS帐户

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

我的地形脚本非常简单

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 state文件进行复制

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


下一步:尝试找出此初始EC2实例是否已在其他区域创建。。。我希望通过计费/或活动来了解…

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

您是否在AWS控制台中选择了us-east-2地区。默认情况下,我认为对于新的美国帐户,它默认为us-east-1 Virginia,但您的TF AWS提供商已配置为部署到us-east-2。

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

我以为我已经设置了两个环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,但是我在分配AWS_SECRET_ACCESS_KEY时输入了一个错误,所以没有设置

碰巧我的~/.aws文件夹中挂着一个凭证文件,里面有大约一年前我在另一个aws帐户上做的测试,我都忘了

一旦我删除了.aws/credentials文件并正确地分配了aws\u SECRET\u ACCESS\u密钥,一切都按预期进行

我使用了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}"
}

这是因为我没有使用我认为

我以为我已经设置了两个环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,但是我在分配AWS_SECRET_ACCESS_KEY时输入了一个错误,所以没有设置

碰巧我的~/.aws文件夹中挂着一个凭证文件,里面有大约一年前我在另一个aws帐户上做的测试,我都忘了

一旦我删除了.aws/credentials文件并正确地分配了aws\u SECRET\u ACCESS\u密钥,一切都按预期进行

我使用了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}"
}

Hi Eric-我可以想象TF状态文件与实际状态的托管状态不一致,因此值得尝试运行一个show info来获取instanceId,或者可能运行一个destroy and plan/apply。或者-不确定您是否有多个帐户,但值得仔细检查为terraform设置的API密钥是否实际用于同一帐户,以及您的控制台是否指向同一区域。首先检查terraform使用的密钥和访问密钥属于哪个AWS帐户,然后在控制台上检查正确的区域。这是一个总是有逻辑的软件,而不是会吃掉你的实例的魔法:我通过环境变量设置了AWS_ACCESS_密钥和AWS_SECRET_ACCESS_密钥,它们在TF状态下看起来很好,因为terraform plan可以识别实例,所以看起来还可以。它甚至给了我实例id,但不确定我能用thatHi Eric做什么-我可以想象TF状态文件与实际状态的托管状态不一致,因此值得尝试运行一个显示信息来获取实例id,或者可能运行销毁和计划/应用。或者-不确定您是否有多个帐户,但值得仔细检查为terraform设置的API密钥是否实际用于同一帐户,以及您的控制台是否指向同一区域。首先检查terraform使用的密钥和访问密钥属于哪个AWS帐户,然后在控制台上检查正确的区域。这是一个总是有逻辑的软件,而不是会吃掉你的实例的魔法:我通过环境变量设置了AWS_ACCESS_密钥和AWS_SECRET_ACCESS_密钥,它们在TF状态下看起来很好,因为terraform plan可以识别实例,所以看起来还可以。它甚至给了我实例id,但不确定我能用它做什么在us-east-1 N Virginia和us-east-2 OhioCan中检查你能运行命令terraform show并用你的问题粘贴输出吗?在us-east-1 N Virginia和us-east-2 OhioCan中检查
您运行命令terraform show并将输出与您的问题一起粘贴?如果您在Windows上,其他凭据也可能来自Windows AWS工具包位置,而不仅仅是来自CLI~/.AWS/credentials或来自AWS_*环境变量:希望这可能会揭示隐藏的凭据!如果您在Windows上,其他凭据也可能来自Windows AWS工具包位置,而不仅仅来自CLI~/.AWS/凭据或AWS_*环境变量:希望这可能会显示隐藏的凭据!