【问题标题】:Boto3 - Delete_snapshot not evaluating variablesBoto3 - Delete_snapshot 不评估变量
【发布时间】:2016-10-22 16:51:42
【问题描述】:

我正在尝试运行 boto3 以循环浏览超过 14 天的快照。 它可以很好地找到所有超过 14 天的快照,并且我已经验证所有这些都可以正常工作。问题是当它通过字典试图删除时,看起来函数没有正确评估变量(见下文)。

它似乎只是将它作为一个字符串包含在内。

循环使用“for snapshot in ...”遍历字典,如果标签找到准备删除的快照。这是“如果”部分:

 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/

【问题讨论】:

  • 执行此代码时快照是否可能已被删除,或者它正在尝试第二次删除?
  • 我非常怀疑它,否则它一开始就不会出现在脚本中。即如果它已被删除,那么它不会再次尝试删除它,因为它无法找到它。编辑:刚刚检查过,他们都还在那里。 :(

标签: python boto3 amazon-ebs


【解决方案1】:

我怀疑 SnapshotId 可能不会作为字符串传递。 将 SnapshotId 更改为字符串格式并将其传递给删除。 str(snapshot['SnapshotId'])

【讨论】:

    【解决方案2】:

    事实证明,直接从字典中引用是个坏主意。它需要被包裹在 str() 中并提供 DryRun=False 选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多