1

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

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

4

2 回答 2

3

这是一个快速的片段:

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

于 2012-06-02T18:42:52.650 回答
2

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

于 2011-06-28T20:43:02.483 回答