【发布时间】:2011-09-24 15:32:37
【问题描述】:
我正在使用 CreateImage() 从现有实例创建一个新的 AMI,我希望有一个 DeleteImage() 可以以相反的方式工作。不幸的是,EC2Client 上不存在此方法。
使用 C# 通过 SDK 删除 AMI 的正确方法是什么?
【问题讨论】:
标签: c# .net amazon-s3 amazon-web-services amazon-ebs
我正在使用 CreateImage() 从现有实例创建一个新的 AMI,我希望有一个 DeleteImage() 可以以相反的方式工作。不幸的是,EC2Client 上不存在此方法。
使用 C# 通过 SDK 删除 AMI 的正确方法是什么?
【问题讨论】:
标签: c# .net amazon-s3 amazon-web-services amazon-ebs
这是一个快速的sn-p:
AmazonEC2 ec2 = AWSClientFactory.CreateAmazonEC2Client();
DeregisterImageRequest deregisterImageRequest = new DeregisterImageRequest();
deregisterImageRequest.ImageId = AMIName;
DeregisterImageResponse deregisterImageResponse = new DeregisterImageResponse();
deregisterImageResponse = ec2.DeregisterImage(deregisterImageRequest);
记得处理异常并删除快照..
但是,删除关联的快照存在问题。
如果您尝试使用 DescribeImageAttributeRequest 找出块设备映射,则会发生异常 - “未授权尝试访问受限资源”:
DescribeImageAttributeRequest describeImageAttributeRequest = new DescribeImageAttributeRequest().WithImageId("ami-name").WithAttribute("blockDeviceMapping");
DescribeImageAttributeResponse describeImageAttributeResponse = new DescribeImageAttributeResponse();
describeImageAttributeResponse = ec2.DescribeImageAttribute(describeImageAttributeRequest);
见帖子: https://forums.aws.amazon.com/message.jspa?messageID=231972
【讨论】:
有一个DeregisterImage() 应该可以满足您的需求。请注意,您可以在之后删除图像可能基于的任何快照。
【讨论】: