【问题标题】:How to Start AWS instance if it has Tag exists如果存在标签,如何启动 AWS 实例
【发布时间】:2022-01-14 22:01:00
【问题描述】:

如果实例存在例如“MigratedBy”的相关标签,我想运行 AWS CLI 命令来启动实例。如果 Tag 不存在,它根本不应该启动实例

我尝试在命令下运行,但没有成功

aws ec2 start-instances --instance-ids `aws ec2 describe-instances --filters "Name=tag:MigratedBy,Values=my-super-tag" --query 'Reservations[].Instances[].InstanceId' --outpu t text` 

似乎这个命令会运行带有“MigratedBy”标签的所有实例,但在我的情况下这是错误的。如果标签存在,我只想启动特定实例,否则不

【问题讨论】:

  • 这应该有效,我看到的唯一问题可能是一个错字:--outpu t text 看看那里的额外空间......如果你调用describe-instances 单独它会返回预期的实例吗?
  • 您应该始终发布包括任何错误消息在内的症状,而不是简单地说它不起作用。显然,这是一个两步的过程。如果您单独运行 describe-instances 步骤,它会产生正确的结果吗?

标签: amazon-web-services amazon-ec2 aws-cli


【解决方案1】:

如果您只想根据标签的存在进行过滤,您可以将其包含在查询中,然后通过管道仅显示 InstanceId:

aws ec2 describe-instances --query 'Reservations[].Instances[].[Tags[?Key=='MigratedBy'],InstanceId] | [*][1]' --output text

最后,要启动这些实例,整个命令将是:

aws ec2 start-instances --instance-ids `aws ec2 describe-instances --query 'Reservations[].Instances[].[Tags[?Key=='MigratedBy'],InstanceId] | [*][1]' --output text` 

参考:

Filtering AWS CLI output

【讨论】:

  • --filters 工作正常,你是说他们不行吗?
  • 使用--filters,您可以根据值进行过滤。据我了解,您不想过滤特定值,只想过滤标签键的存在。对吗?
  • 好点,我在问题中错过了这一点,也许 OP 想用标签 MigratedBy 和任何值启动那些实例,但在这种情况下为什么不使用通配符:--filters "Name=tag:MigratedBy,Values=*"跨度>
  • 我认为它也应该有效。你有任何错误吗?
  • 我的测试没有错误,我唯一能想到的为什么 OP 有问题是命令中的拼写错误,见最后--outpu t text
猜你喜欢
  • 2023-04-05
  • 1970-01-01
  • 2021-12-26
  • 2022-11-18
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
相关资源
最近更新 更多