C# 如何检索用于启动Fargate任务的子网列表?

C# 如何检索用于启动Fargate任务的子网列表?,c#,aws-sdk,amazon-vpc,aws-fargate,C#,Aws Sdk,Amazon Vpc,Aws Fargate,我正在Visual Studio 2017中使用带C#的AWS SDK,并有一个在ECS中启动Fargate服务的原型。作为设置的一部分,您可以实例化一个CreateServiceRequest对象,该对象需要NetworkConfiguration.AwsVpcConfiguration设置SecurityGroup和子网 var request = new CreateServiceRequest(); request.ServiceName = "myService"; request.

我正在Visual Studio 2017中使用带C#的AWS SDK,并有一个在ECS中启动Fargate服务的原型。作为设置的一部分,您可以实例化一个
CreateServiceRequest
对象,该对象需要
NetworkConfiguration.AwsVpcConfiguration
设置
SecurityGroup
子网

var request = new CreateServiceRequest();

request.ServiceName = "myService";
request.TaskDefinition = "myTask";   // family[:revision] of the task definition to use
request.ClientToken = Guid.NewGuid().ToString().Replace("-", "");  // max 32 characters!
request.Cluster = "default";
request.DesiredCount = 1;
request.LaunchType = LaunchType.FARGATE;

request.DeploymentConfiguration = new DeploymentConfiguration
{
    MaximumPercent = 100,
    MinimumHealthyPercent = 50
};

// configure the network and security groups for the task
List<string> securityGroups = new List<string>();
securityGroups.Add("sg-123456");

List<string> subnets = new List<string>();
subnets.Add("subnet-9b36aa97");

request.NetworkConfiguration = new NetworkConfiguration
{
    AwsvpcConfiguration = new AwsVpcConfiguration
    {
        AssignPublicIp = AssignPublicIp.ENABLED,
        SecurityGroups = securityGroups,
        Subnets = subnets
    }
};
var request=new CreateServiceRequest();
request.ServiceName=“myService”;
request.TaskDefinition=“myTask”//要使用的任务定义的族[:修订]
request.ClientToken=Guid.NewGuid().ToString().Replace(“-”,”);//最多32个字符!
request.Cluster=“default”;
request.DesiredCount=1;
request.LaunchType=LaunchType.FARGATE;
request.DeploymentConfiguration=新的DeploymentConfiguration
{
最大百分比=100,
最小健康系数=50
};
//为任务配置网络和安全组
List securityGroups=new List();
证券集团。添加(“sg-123456”);
列表子网=新列表();
子网。添加(“子网-9b36aa97”);
request.NetworkConfiguration=新的NetworkConfiguration
{
AwsvpcConfiguration=新的AwsvpcConfiguration
{
AssignPublicIp=AssignPublicIp.ENABLED,
SecurityGroups=SecurityGroups,
子网=子网
}
};
当我通过AWS控制台手动配置服务时,它们会显示可供选择的子网列表。因此,我想知道如何通过编程检索VPC中可用的子网列表


我正在搜索他们可能的解决方案,任何指向他们文档或示例的指针都将不胜感激

看看EC2Client,您会发现许多与VPC相关的API都与EC2服务相关。具体查看AmazonEC2Client.DescribeSubnets(DescribeSubnetsRequest),方法文档:

要求

回应

响应包含一个列表,在决定将哪个子网传递到Fargate请求时,您将从中检索字符串属性
SubnetId

用法示例(来自链接文档):
var response=client.descripesubnets(新的descripesubnets请求
{
过滤器=新列表{
新过滤器{
Name=“vpc id”,
值=新列表{
“vpc-a01106c2”
}
}
}
});
列出子网=响应。子网;
进一步阅读
  • -在本文档中搜索“描述子网”,以查找此SDK方法的异步变体

啊,时机不错!我使用的是IAmazonECS接口,刚刚开始查看他们SDK文档中的AmazoneCclient部分。看来我需要再上一层到EC2层。
var response = client.DescribeSubnets(new DescribeSubnetsRequest 
{
    Filters = new List<filter> {
        new Filter {
            Name = "vpc-id",
            Values = new List<string> {
                "vpc-a01106c2"
            }
        }
    }
});

List<subnet> subnets = response.Subnets;