如何使用SDK删除AWS EC2中的图像(AMI)?

时间:2011-06-28 20:13:49

标签: c# .net amazon-s3 amazon-web-services amazon-ebs

我正在使用CreateImage()从现有实例创建一个新的AMI,我希望有一个DeleteImage()可以以相反的方式工作。不幸的是,EC2Client上不存在这种方法。

使用C#通过SDK删除AMI的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

以下是一个快速摘录:

AmazonEC2 ec2 = AWSClientFactory.CreateAmazonEC2Client();

DeregisterImageRequest deregisterImageRequest = new DeregisterImageRequest();
deregisterImageRequest.ImageId = AMIName;

DeregisterImageResponse deregisterImageResponse = new DeregisterImageResponse();
deregisterImageResponse = ec2.DeregisterImage(deregisterImageRequest);

请记住处理异常并删除快照..

但是删除关联的快照时会出现问题。

如果您尝试使用DescribeImageAttributeRequest找出blockdevice映射,则会发生异常 - “未经授权尝试访问受限资源”:

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

答案 1 :(得分:2)

有一个DeregisterImage()可以做你想要的。请注意,您可以删除之后图像可能基于的任何快照。