2012-07-05 71 views
1

我有以下问题...我不知道是否有一些方法在EC2 .NET API中允许我列出所有可用的AMI(如在Web界面中)一个给定的区域。至少是他们的ID。我想建立一个随机图像,这是唯一从拼图中遗漏的部分。亚马逊EC2 .NET API,启动随机实例

回答

4

它应该很简单。下面是一个代码片段,将返回所有的AMI在可用或挂起状态(添加自己的过滤器和周围try/catch块):

AmazonEC2 ec2 = AWSClientFactory.CreateAmazonEC2Client(
    "YOUR_ACCESS_KEY", 
    "YOUR_SECRET_KEY" 
    ); 

DescribeImagesRequest request = new DescribeImagesRequest(); 
request.WithFilter(new Filter[] { 
    new Filter().WithName("state").WithValue("available", "pending")}); 
DescribeImagesResponse ec2Response = ec2.DescribeImages(request); 

这个查询将把所有的公共和私人的AMI。由于结果集中的结果包含表明实例是公有还是私有的属性(例如<Visibility>Private</Visibility>)。

如果您只想要自己的AMI,请将.WithOwner("YOUR_AMAZON_ID")添加到您的过滤器定义中。例如:

request.WithFilter(new Filter[] { 
    new Filter().WithName("state").WithValue("available", pending")}) 
    .WithOwner("YOUR_AMAZON_ID"); 

request.WithOwner("YOUR_AMAZON_ID"); 

为了进一步参考,请参阅AWS SDK for .NET Documentation。在左侧的树上,选择Amazon/Amazon.EC2.Model/DescribeImagesRequest类。 此外,DescribeImages API Reference包含您可以在此请求中使用的每个Filter的名称和可能值。 PS:由于您明确地在谈论区域,而且AMI没有与它们相关的区域,所以您可能会谈论实例。在这种情况下,有一个类似的请求DescribeInstances。查找关于它的更多细节here(Amazon/Amazon.EC2.Model/DescribeInstancesRequest Class)和here

希望它有帮助。

+0

你的帮助是非常有用的...我会试一试,回来:) – 2012-07-06 09:43:00