0

aws ec2 describe-snapshots --owner-ids $AWS_ACCOUNT_ID --query "Snapshots[?(StartTime<='$dtt')].[SnapshotId]" --output text | tr '\t' '\n' | sort

I have this shell script which I want to convert to python. I tried looking at the boto3 documentation and came up with this

client = boto3.client('ec2')
client.describe_snapshots(OwnerIds = [os.environ['AWS_ACCOUNT_ID']], )

But I can't figure out how to change that --query tag in python. I couldn't find it in the documentation. What am I missing here?

1

1 Answer 1

1

You should ignore the --query portion and everything after it, and process that within Python instead.

First, store the result of the call in a variable:

ec2_client = boto3.client('ec2')
response = ec2_client.describe_snapshots(OwnerIds = ['self'])

It will return something like:

{
    'NextToken': '',
    'Snapshots': [
        {
            'Description': 'This is my snapshot.',
            'OwnerId': '012345678910',
            'Progress': '100%',
            'SnapshotId': 'snap-1234567890abcdef0',
            'StartTime': datetime(2014, 2, 28, 21, 28, 32, 4, 59, 0),
            'State': 'completed',
            'VolumeId': 'vol-049df61146c4d7901',
            'VolumeSize': 8,
        },
    ],
    'ResponseMetadata': {
        '...': '...',
    },
}

Therefore, you can use response['Snapshots'] to extract your desired results, for example:

for snapshot in response['Snapshots']:
  if snapshot['StartTime'] < datetime(2022, 6, 1):
    print(snapshot['SnapshotId'])

It's really all Python at that point.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.