如何解决通过ASG启动时,提取Terraform的EC2实例ID
我想通过Terraform使用一些指标创建AWS CloudWatch仪表板。 Terraform中介绍了我所有的基础架构,并且我了解如何创建AWS CloudWatch仪表板(Terraform + json模板)。卡住的是AWS AutoScaling组中。当我想在仪表板上显示一些指标时,我只使用
some_monitored_instance_id = "${aws_instance.some_instance.id}"
然后将其放入json模板
"metrics": [
["AWS/EC2","CPUUtilization","InstanceId","${some_monitored_instance_id}"]
],
通过实例启动实例时一切正常
resource "aws_instance" "some_instance" {}
但是当通过AutoScaling Group启动实例时,我不能使用这种方法。通过AutoScaling组(和启动配置)启动实例以供将来在Terraform中使用时,如何提取实例ID?
解决方法
首先,您实际上不应该这样做。 ASG更改实例,并且这些ID将更改。 Cloudwatch提供了针对ASG的指标。因此,您可以查看由ASG创建的实例的指标。您还可以创建资源组,并按资源组具有指标。
但是,如果您真的想这样做:
data "aws_instances" "test" {
instance_tags = {
SomeTag = "SomeValue"
}
instance_state_names = ["running","stopped"]
}
output ids {
value = data.aws_instances.test.ids
}
如果在启动时在EC2上设置的启动配置中放置标签,这将起作用。
之所以有效,是因为:
instance_tags-(可选)标签映射,每对标签必须与所需实例上的一对完全匹配
- 请参阅docs
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。