Amazon ec2 如何通过terraform获取现有ec2实例的实例id/arn?

Amazon ec2 如何通过terraform获取现有ec2实例的实例id/arn?,amazon-ec2,terraform,Amazon Ec2,Terraform,我正在使用Terraform进行一些基础设施部署: data "aws_instance" "ec2_my_admin_instance" { filter { name = "tag:TfServerType" values = ["myAdmin"] } } output "theId" { value = "${data.aws_instance.ec2_my_admin_instance.instance_id}" } output "type" {

我正在使用Terraform进行一些基础设施部署:

data "aws_instance" "ec2_my_admin_instance" {
  filter {
    name = "tag:TfServerType"
    values = ["myAdmin"]
  }
}


output "theId" {
  value = "${data.aws_instance.ec2_my_admin_instance.instance_id}"
}
output "type" {
  value = "${data.aws_instance.ec2_my_admin_instance.instance_type}"
}
output "placement_group" {
  value = "${data.aws_instance.ec2_my_admin_instance.placement_group}"
}
output "availability_zone" {
  value = "${data.aws_instance.ec2_my_admin_instance.availability_zone}"
}
output "arn" {
  value = "${data.aws_instance.ec2_my_admin_instance.arn}"
}
但是,最重要的值(id、arn)未显示:

Outputs:

availability_zone = ap-southeast-2b
type = m4.large

我遗漏了什么吗?

的id。属性为

output "theId" {
    value = "${data.aws_instance.ec2_my_admin_instance.id}"
}

根据这些文档,数据源似乎没有arn属性

@jdurkin回答了这个问题,但没有告诉你如何得到它,这正是你想要的

terraform文档并不总是使用所有属性更新(我称它们为
可用输出变量
)。在您的情况下,无法从联机文档中找到要使用的正确属性。猜测是可能的,因为jdurkin的答案,但它并不总是正确的

所以你需要自己去发现它们,然后找到合适的

(您可以使用喜爱的区域更改区域)

terraform应用
更改(它是数据源,不会创建任何资源,因此您可以安全运行

成功运行上述命令后,应获得一个本地文件
terraform.tfstate

对文件进行分类,在
属性
的一部分中,您应该获得所有属性以及属性名称和值,
id
在属性列表中,但是没有您现在可以确认的属性
arn
。您应该有信心选择正确的代码并输入输出代码

"modules": [
        {
            "path": [
                "root"
            ],
            "outputs": {},
            "resources": {
                "data.aws_instance.ec2_my_admin_instance": {
                    "type": "aws_instance",
                    "depends_on": [],
                    "primary": {
                        "id": "i-xxxx",
                        "attributes": {
                            "ami": "ami-xxxx",
                            ....
                            "id": "i-xxxx",
                            "instance_state": "running",
                            ....
                        },
                        "meta": {},
                        "tainted": false
                    },
                    "deposed": [],
                    "provider": ""
                }
            },
            "depends_on": []
        }
    ]

我很高兴能将ARN添加为属性,因为我来这里是想看看是否有其他人遇到过同样的问题!ARN从今天的terraform aws提供程序版本开始提供。这可能需要更新。
terraform init
terraform plan
terraform apply
"modules": [
        {
            "path": [
                "root"
            ],
            "outputs": {},
            "resources": {
                "data.aws_instance.ec2_my_admin_instance": {
                    "type": "aws_instance",
                    "depends_on": [],
                    "primary": {
                        "id": "i-xxxx",
                        "attributes": {
                            "ami": "ami-xxxx",
                            ....
                            "id": "i-xxxx",
                            "instance_state": "running",
                            ....
                        },
                        "meta": {},
                        "tainted": false
                    },
                    "deposed": [],
                    "provider": ""
                }
            },
            "depends_on": []
        }
    ]