Boto3 - Delete_snapshot 不评估变量
Boto3 - Delete_snapshot not evaluating variables
我正在尝试 运行 boto3 循环浏览超过 14 天的快照。
它可以找到所有早于 14 天的快照,并且我已经验证一切正常。问题是当它 运行 通过字典尝试删除时,看起来函数没有正确评估变量(见下文)。
它似乎只是将它作为一个字符串包含在内。
循环 运行 使用 "for snapshot in ..." if'ing 标签查找准备好删除的快照。这是 'if' 部分:
if snap_start_time < expiry: # check if it's more than a <expiry> old
print "Deleting Snapshot: " + snapshot['SnapshotId']
response = ec2client.delete_snapshot(
SnapshotId=snapshot['SnapshotId']
)
这里有错误:
Deleting Snapshot: snap-f4f0079d
Traceback (most recent call last):
File "./aws-snap.py", line 27, in <module>
SnapshotId=snapshot['SnapshotId']
File "/usr/lib/python2.6/site-packages/botocore/client.py", line 159, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/lib/python2.6/site-packages/botocore/client.py", line 494, in _make_api_call
raise ClientError(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (InvalidSnapshot.NotFound) when calling the DeleteSnapshot operation: None
有线索吗? \o/
事实证明,直接从字典中引用是个坏主意。它需要包装在 str() 中并提供 DryRun=False 选项。
我怀疑 SnapshotId 可能不会作为字符串传递。
将 SnapshotId 更改为字符串格式并传递给删除。
str(snapshot['SnapshotId'])
我正在尝试 运行 boto3 循环浏览超过 14 天的快照。 它可以找到所有早于 14 天的快照,并且我已经验证一切正常。问题是当它 运行 通过字典尝试删除时,看起来函数没有正确评估变量(见下文)。
它似乎只是将它作为一个字符串包含在内。
循环 运行 使用 "for snapshot in ..." if'ing 标签查找准备好删除的快照。这是 'if' 部分:
if snap_start_time < expiry: # check if it's more than a <expiry> old
print "Deleting Snapshot: " + snapshot['SnapshotId']
response = ec2client.delete_snapshot(
SnapshotId=snapshot['SnapshotId']
)
这里有错误:
Deleting Snapshot: snap-f4f0079d
Traceback (most recent call last):
File "./aws-snap.py", line 27, in <module>
SnapshotId=snapshot['SnapshotId']
File "/usr/lib/python2.6/site-packages/botocore/client.py", line 159, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/lib/python2.6/site-packages/botocore/client.py", line 494, in _make_api_call
raise ClientError(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (InvalidSnapshot.NotFound) when calling the DeleteSnapshot operation: None
有线索吗? \o/
事实证明,直接从字典中引用是个坏主意。它需要包装在 str() 中并提供 DryRun=False 选项。
我怀疑 SnapshotId 可能不会作为字符串传递。
将 SnapshotId 更改为字符串格式并传递给删除。
str(snapshot['SnapshotId'])