How to describe snapshots owned by me and filtering by tag simultaneously?
It describe snapshots owned by me with code below:
import boto3
region_src = 'us-east-1'
client_src = boto3.client('ec2', region_name=region_src)
def get_snapshots_src():
    response = client_src.describe_snapshots(OwnerIds=['012345678900'])
    return response["Snapshots"]
snap = get_snapshots_src()
print(*snap, sep="n")
But when I add “Filters”, its starts ignoring “OwnerIds” and filtering only by tag.
client_src.describe_snapshots(OwnerIds=['012345678900'],Filters=[{'Name': 'tag:Disaster_Recovery', 'Values': ['Full']}])
I’m follow an official boto3 documentation: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.describe_snapshots
Advertisement
Answer
I think the Filters and OwnerIds options are working separately. I expect that the OwnerIds option is an abbreviation of the Filters option for owner-id, because I also got the result that the OwnerIds option is ignored.
And so, you can use the filter option such as
    Filters=[
        {
            'Name': 'tag:key',
            'Values': [
                'value'
            ]
        },
        {
            'Name': 'owner-id',
            'Values': [
                'value'
            ]
        }
    ]
and it will work well same as me.
Filters (list) -- The filters. description - A description of the snapshot. encrypted - Indicates whether the snapshot is encrypted (true | false ) owner-alias - Value from an Amazon-maintained list (amazon | self | all | aws-marketplace | microsoft ) of snapshot owners. Not to be confused with the user-configured AWS account alias, which is set from the IAM console. owner-id - The ID of the AWS account that owns the snapshot. progress - The progress of the snapshot, as a percentage (for example, 80%). snapshot-id - The snapshot ID. start-time - The time stamp when the snapshot was initiated. status - The status of the snapshot (pending | completed | error ). tag :<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key Owner and the value TeamA , specify tag:Owner for the filter name and TeamA for the filter value. tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value. volume-id - The ID of the volume the snapshot is for. volume-size - The size of the volume, in GiB. (dict) -- A filter name and value pair that is used to return a more specific list of results from a describe operation. Filters can be used to match a set of resources by specific criteria, such as tags, attributes, or IDs. The filters supported by a describe operation are documented with the describe operation.
