【问题标题】:How can I delete an image (AMI) in AWS EC2 using the SDK?如何使用 SDK 删除 AWS EC2 中的图像 (AMI)?
【发布时间】:2011-09-24 15:32:37
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    这是一个快速的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

    【讨论】:

      【解决方案2】:

      有一个DeregisterImage() 应该可以满足您的需求。请注意,您可以在之后删除图像可能基于的任何快照。

      【讨论】:

      • 引用newvem.com/amazon-aws-cloud-support/… -- “您需要从 Amazon S3 中删除已取消注册的 AMI。如果您不这样做,那么您将继续为您正在使用的空间付费”。这个[或任何]答案中没有提到这一点。如果我知道如何进行删除——您需要知道 S3 存储位置才能进行删除并发现这一点并非易事——我会回答而不是仅仅留下这个“但这不是一个完整的答案”的评论。
      • @J.Merrill - 据我了解,“删除”取消注册的 AMI 意味着您删除了在注册 AMI 时创建的快照。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多