我有以下问题……我想知道EC2 .NET应用程序接口上是否有一些方法可以让我列出给定区域中所有可用的AMI(比如在web界面中)。至少是他们的身份证。我想设置一个随机的图像,这是拼图中唯一遗漏的部分。
发布于 2012-07-06 08:11:07
它应该很简单。以下代码摘录将返回所有处于available或pending状态的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 Class。此外,DescribeImages API Reference还包含可以在此请求中使用的每个Filter
的名称和可能的值。
PS:由于您明确地谈论的是地域,而AMI没有与之相关联的地域,因此您可能会改为谈论实例。在本例中,有一个类似的请求,名为DescribeInstances
。查找有关它的更多详细信息( (Amazon/Amazon.EC2.Model/DescribeInstancesRequest类)和here。
希望能有所帮助。
https://stackoverflow.com/questions/11352821
复制相似问题