我想从命令ec2-describe-instances的结果中提取实例ID和标签,并希望将结果存储在文本文件中。结果集给出了:如何在shell脚本中获取ec2-describe-instances的标签
但我想的标签所有者和cost.centre也被拿来 请指导我该怎么做
我想从命令ec2-describe-instances的结果中提取实例ID和标签,并希望将结果存储在文本文件中。结果集给出了:如何在shell脚本中获取ec2-describe-instances的标签
但我想的标签所有者和cost.centre也被拿来 请指导我该怎么做
如果我理解正确的问题,我想你只需要添加表情你的第二个grep的:
ec2-describe-instances | grep -i "tag" | grep -i -e "name" -e "owner" -e "cost.centre"
这将是不必要的复杂的shell脚本来完成。以下是一些建议:
ec2cli
。不要使用它。改为使用AWS-CLI
。因为解析ec2cli
中的输出是一种痛苦。 AWS-CLI
在JSON
中提供输出,而解析则更容易。此外,AWS今后将仅支持AWS-CLI
。AWs-CLI
命令,然后在散列中捕获输出。 Perl
对于处理这样的数据结构非常强大。底线是,您需要在散列中捕获标记以使您的生活更轻松。当你有多个标签时,这变得越来越突出。
如何使用AWS cli? – user3086014
阅读文档:http://aws.amazon.com/cli/。花点时间仔细阅读。你以后会感谢我。自从我开始使用它以来,我无法活下去。 – slayedbylucifer
但它需要时间。你能帮助我解决这个问题吗? – user3086014
用awk
ec2-describe-instances |awk 'BEGIN{IGNORECASE=1}/(name|owner|cost.center)/&&/tag/'
TAG instance i-c4 Name Rii_Win_SAML
TAG instance i-c42 Owner Rii Pandey
我想在单行中与单个实例相关的标签。 – user3086014
你能否更新你的示例文件,目前的一个让我困惑如何得到结果。例如,我没有在源文件中看到'Naveen',但是你在输出中请求它。 – BMW
实际上这个文件太长了,我只提取了一部分 – user3086014
这将有助于找到实例ID
$ AWS EC2描述,实例--filters名称= VPC-ID,值= VPC-XXX | awk'{print $ 8}'| sort -n | grep的 “异”
I-4115d38c
I-5d534697
I-6e679a45
I-7a659851
I-8d6bae40
I-cd6f9000
I-d264ad1e
I-d5888618
I-e2332e2e
PS考虑到你已经配置/运行 “AWS配置”
这应该工作:
aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(contains({Tags: [{Key: "owner"},{Key: "costcenter"}]}))|"Instance ID: \(.InstanceId) Owner: \(.Tags[]|select(.Key=="owner")|.Value), Cost Center: \(.Tags[]|select(.Key=="costcenter")|.Value)"'
TL; DR:方式AWS确实标签是一个活生生的噩梦,即使jq
此外,使用AWS CLI,不老,unsuppor特德工具。
这里是另一种方式,而无需使用JQ和其他分析工具做。
ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,Tags[?Key==`Name`].Value | [0],Tags[?Key==`cost.centre`].Value | [0]]' --output text
你能举一个预期产出的例子吗?你试过什么了? –
的EC2-描述,实例给出了一个没有属性的,我只是想实例ID和名字一样,成本中心和业主的标签从结果中获取。 – user3086014