Amazon ec2 terraform初学者:我的EC2实例到哪里去了?
我创建了一个全新的免费AWS帐户 使用terraform,我创建了一个EC2实例,但在aws控制台中看不到它 我的地形脚本非常简单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
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_*环境变量:希望这可能会显示隐藏的凭据!