2016-09-14 5 views
1

boto3을 실행하여 14 일이 지난 스냅 샷을 반복하려고합니다. 14 일이 넘은 모든 스냅 샷을 찾을 수 있습니다. 모든 스냅 샷이 정상적으로 작동하는지 확인했습니다. 문제는 사전을 삭제하려고 할 때 함수가 변수를 올바르게 평가하지 못하는 것입니다 (아래 참조).Boto3 - 변수를 평가하지 않는 Delete_snapshot

그냥 문자열로 포함하는 것 같습니다.

태그는 스냅 샷을 삭제할 준비가되어 있는지 찾기 위해 "for snapshot in ..."을 사용하여 dict를 실행합니다.

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/

+0

이 코드를 실행하거나 두 번째 삭제를 시도 할 때 스냅 샷이 이미 삭제되었을 수 있습니까? – helloV

+0

나는 그것을 매우 의심한다. 그렇지 않으면 스크립트에서 처음에는 나오지 않을 것이다. 즉, 삭제 된 경우 다시 찾을 수 없기 때문에 다시 삭제하려고 시도하지 않습니다. 수정 : 방금 확인하고, 그들은 모두 아직 거기에 있습니다. :( –

답변

0

SnapshotId가 문자열로 전달되지 않을 수도 있습니다. SnapshotId를 문자열 형식으로 변경하고 삭제하여 전달하십시오. str(snapshot['SnapshotId'])

0

사전에서 바로 참조하는 것은 좋지 않습니다. str()에 래핑되어야하고 DryRun = False 옵션도 함께 제공되어야합니다.