下面是一个Python示例,展示了如何编写一个Lambda函数来注销AMI并删除相应的快照。
import boto3
def lambda_handler(event, context):
# 初始化EC2客户端
ec2_client = boto3.client('ec2')
# 获取事件中的AMI ID
ami_id = event['ami_id']
try:
# 注销AMI
response = ec2_client.deregister_image(ImageId=ami_id)
print("注销AMI成功:", response)
# 获取与AMI关联的快照ID列表
block_device_mappings = response['Image']['BlockDeviceMappings']
snapshot_ids = [mapping['Ebs']['SnapshotId'] for mapping in block_device_mappings if 'Ebs' in mapping]
# 删除快照
for snapshot_id in snapshot_ids:
response = ec2_client.delete_snapshot(SnapshotId=snapshot_id)
print("删除快照成功:", response)
return {
'statusCode': 200,
'body': 'AMI和相关快照已成功注销和删除'
}
except Exception as e:
print("发生错误:", e)
return {
'statusCode': 500,
'body': '发生错误,请检查日志以获取更多详细信息'
}
你可以将上述代码复制到Lambda函数中,然后通过事件输入参数传递AMI ID。该函数将注销AMI并删除与之关联的快照。