首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS SDK (C#) -如何创建describe实例请求使用特定标记键过滤出vms

AWS SDK (C#) -如何创建describe实例请求使用特定标记键过滤出vms
EN

Stack Overflow用户
提问于 2021-05-26 18:56:29
回答 1查看 154关注 0票数 1

我已经看到了几种亚马逊网络服务CLI的解决方案,但我不确定如何将这些查询转换为亚马逊网络服务.net软件开发工具包。

给定:亚马逊网络服务.net软件开发工具包;具有特定标签密钥的亚马逊网络服务实例(例如EXCLUDE_ME)

问题:需要创建一个Amazon.EC2.Model.Filter实例,该实例将过滤出具有特定标签键的vms。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-05-27 20:30:14

有一种方法可以根据值进行筛选,以便在DescribeInstances返回的列表中包含但不排除实例。我创建了一个小示例,它对DescribeInstances进行了两次调用。此示例使用分页器异步检索结果:

代码语言:javascript
复制
        class DescribeInstances
    {
        static async Task Main()
        {
            // If the region of the EC2 instances is different from that
            // of the default user, you need to specify the rgion when
            // you create the client object.
            var eC2Client = new AmazonEC2Client(RegionEndpoint.USEast1);

            await GetInstanceDescriptions(eC2Client);

            await GetInstanceDescriptionsFiltered(eC2Client, "IncludeInList", "Yes");
        }

        static async Task GetInstanceDescriptions(AmazonEC2Client client)
        {
            var request = new DescribeInstancesRequest();

            Console.WriteLine("Showing all instances:");
            var paginator = client.Paginators.DescribeInstances(request);

            await foreach (var response in paginator.Responses)
            {
                foreach (var reservation in response.Reservations)
                {
                    foreach (var instance in reservation.Instances)
                    {
                        Console.Write($"Instance ID: {instance.InstanceId}");
                        Console.WriteLine($"\tCurrent State: {instance.State.Name}");
                    }
                }
            }
        }

        static async Task GetInstanceDescriptionsFiltered(AmazonEC2Client client, string tagName, string tagValue)
        {
            // This is the tag we want to use to filter
            // the results of our list of instances.
            var filters = new List<Filter>
            {
                new Filter
                {
                    Name = $"tag:{tagName}",
                    Values = new List<string>
                    {
                        tagValue,
                    },
                },
            };
            var request = new DescribeInstancesRequest
            {
                Filters = filters,
            };

            Console.WriteLine("\nShowing instances with tag: \"IncludeInList\" set to \"Yes\".");
            var paginator = client.Paginators.DescribeInstances(request);

            await foreach (var response in paginator.Responses)
            {
                foreach (var reservation in response.Reservations)
                {
                    foreach (var instance in reservation.Instances)
                    {
                        Console.Write($"Instance ID: {instance.InstanceId} ");
                        Console.WriteLine($"\tCurrent State: {instance.State.Name}");
                    }
                }
            }
        }
    }

如果要使用标记排除,则需要检索整个列表,然后在循环结果时,检查标记值并跳过符合条件的值。

如果您想了解Filters属性可以使用哪些值,请参阅此处的API参考:DescribeInstancesRequest,了解有关Filters属性的可能值的信息。

有关使用分页器的更多信息,请参阅本文:Introducing Paginators in AWS SDK for .NET v3.5

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67703496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档