如何根据deployment_version标签获取EC2启动模板的VersionNumber?
正确的jq命令及说明
针对你的需求,以下是能正确提取对应标签版本号的jq命令:
基础命令(返回所有匹配的版本号)
aws ec2 describe-launch-template-versions --launch-template-id lt-1234 | jq '.LaunchTemplateVersions[] | select(.LaunchTemplateData.TagSpecifications[].Tags[] | .Key == "deployment_version" and .Value == "release/6.1") | .VersionNumber'
只返回第一个匹配结果(避免多版本重复标签)
aws ec2 describe-launch-template-versions --launch-template-id lt-1234 | jq '.LaunchTemplateVersions | first(select(.LaunchTemplateData.TagSpecifications[].Tags[] | .Key == "deployment_version" and .Value == "release/6.1")) | .VersionNumber'
命令逻辑拆解
.LaunchTemplateVersions[]:遍历所有启动模板版本数组select(...):精准筛选符合条件的版本:.LaunchTemplateData.TagSpecifications[]:遍历标签组数组(EC2启动模板的标签会放在TagSpecifications下).Tags[]:遍历每个标签组内的标签数组.Key == "deployment_version" and .Value == "release/6.1":匹配目标标签的键值对
.VersionNumber:提取匹配版本的编号
错误原因解释
你遇到的Cannot index array with string "Tags"错误,是因为Tags是数组类型,不能直接用.Tags.Key的方式访问属性,必须先通过[]遍历数组元素,才能访问每个标签的Key和Value字段。
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

