将shell脚本转换为Python



aws ec2 description -snapshots——owner-ids $AWS_ACCOUNT_ID——query"快照(? (StartTime<="德勤美元")]。[SnapshotId]";——输出文本| tr 't''n' | sort

我有这个shell脚本,我想把它转换成python。我试着看一下boto3文档,得出了这个

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

但是我不知道如何在python中改变——query标签。我在文档中找不到。我遗漏了什么?

您应该忽略--query部分及其后的所有内容,并在Python中处理。

首先,将调用的结果存储在一个变量中:
ec2_client = boto3.client('ec2')
response = ec2_client.describe_snapshots(OwnerIds = ['self'])

它将返回如下内容:

{
'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': {
'...': '...',
},
}

因此,您可以使用response['Snapshots']来提取您想要的结果,例如:

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

在这一点上它真的都是Python。