簡體   English   中英

在 boto3 中添加多個過濾器

[英]Adding multiple filters in boto3

您好,我需要使用如下標簽獲取 ec2 實例詳細信息

產品 = 監視器

測試 = 監控

目的是僅列出具有這些標簽的實例。 我能夠添加一個過濾器,但不確定如何在 ec2.instances.filter(Filters

from collections import defaultdict

import boto3

# Connect to EC2
ec2 = boto3.resource('ec2')

# Get information for all running instances
running_instances = ec2.instances.filter(Filters=[{
    'Name': 'instance-state-name',
    'Values': ['running'] ,
    'Name': 'tag:prod',
    'Values': ['monitor']}])

ec2info = defaultdict()
for instance in running_instances:
    for tag in instance.tags:
        if 'Name'in tag['Key']:
            name = tag['Value']
            
                    
    # Add instance info to a dictionary         
    ec2info[instance.id] = {
        'Name': name,
        'Type': instance.instance_type,
        'State': instance.state['Name'],
        'Private IP': instance.private_ip_address,
        'Public IP': instance.public_ip_address,
        'Launch Time': instance.launch_time
        }

attributes = ['Name', 'Type', 'State', 'Private IP', 'Public IP', 'Launch Time']
for instance_id, instance in ec2info.items():
    for key in attributes:
        print("{0}: {1}".format(key, instance[key]))
    print("------")

您的語法似乎不太正確。 您應該提供一個字典列表 您也應該能夠復制標簽:

Filters=[
    {'Name': 'instance-state-name', 'Values': ['running']},
    {'Name': 'tag:prod', 'Values': ['monitor']},
    {'Name': 'tag:test', 'Values': ['monitor']},
]

這應該返回帶有這兩個標簽的實例。

如果您想要帶有任何一個標簽的實例,那么我認為您不能在一次調用中對其進行過濾。 相反,使用ec2.instances.all() ,然后使用 Python 代碼循環返回的實例並應用您的邏輯。

嘗試這個;

例如;

response = ce.get_cost_and_usage(
            Granularity='MONTHLY',
            TimePeriod={
                'Start': start_date,
                'End': end_date
            },
            GroupBy=[
                {
                    'Type': 'DIMENSION',
                    'Key': 'SERVICE'
                },
            ],
            Filter=
                {
                    "Dimensions": { "Key": "LINKED_ACCOUNT", "Values": [awslinkedaccount[0]] }, 
                    "Dimensions": { "Key": "RECORD_TYPE", "Values": ["Usage"] },
                },


            Metrics=[
                'BLENDED_COST',
            ],
        )


print(response)

暫無
暫無

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

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