Home > Net >  Convert shell script to Python
Convert shell script to Python

Time:06-23

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?

CodePudding user response:

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.

  • Related