簡體   English   中英

編寫自定義過濾器的更好方法 Python-AWS-Boto3

[英]Better way write custom filters | Python - AWS - Boto3

我的要求是根據2個條件進行過濾:

  1. 停止的實例
  2. 具有特定標簽的實例

我可以通過編寫2個單獨的自定義過濾器來實現此目的,但是我想知道是否可以在單個過濾器中實現相同的目的。

我的代碼:

    stopped_filter = Filters=[{'Name': 'instance-state-name', 'Values': ['stopped']}]
    stopped_instances = ec2.instances.filter(Filters=stopped_filter)

    tag_filter = Filters=[{'Name':'tag-key', 'Values':['doaf']}]
    tagged_instances = ec2.instances.filter(Filters=tag_filter)

我嘗試過的

    filter = Filters=[{'Name': 'instance-state-name', 'Values': ['stopped']}, {'Name':'tag-key', 'Values':['doaf']}]
    stopped_and_tagged_instances = ec2.instances.filter(Filters=filter)

這行:

filter = Filters=[{'Name': 'instance-state-name', 'Values': ['stopped']}, {'Name':'tag-key', 'Values':['doaf']}]

應該:

filter = [{'Name': 'instance-state-name', 'Values': ['stopped']}, {'Name':'tag-key', 'Values':['doaf']}]

完整示例:

import boto3

ec2 = boto3.resource('ec2', region_name='ap-southeast-2')
filter = [{'Name': 'instance-state-name', 'Values': ['stopped']}, {'Name':'tag-key', 'Values':['Foo']}]
stopped_and_tagged_instances = ec2.instances.filter(Filters=filter)
print([i.id for i in stopped_and_tagged_instances])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM