c# - 通过 C# 客户端 SDK 启动或运行 ECS 或 Fargate 任务

标签 c# aws-sdk-net

我正在尝试在 ECS 中运行或启动现有任务定义,但缺少文档,而且我似乎无法在线找到任何示例。我碰壁了,我想知道是否还有其他人做过类似的事情。

我正在使用 AWSSDK.ECS 包。

var request = JsonConvert.DeserializeObject<Request>(record.Sns.Message);

var task = new RunTaskRequest
{
    Count = 1,
    NetworkConfiguration = new NetworkConfiguration
    {
        AwsvpcConfiguration = new AwsVpcConfiguration
        {
            Subnets = new List<string>() { request.SubnetId},
            SecurityGroups = new List<string>() { request.SecurityGroupId},
            AssignPublicIp = AssignPublicIp.DISABLED
        }
    },
    Cluster = request.Cluster,
    LaunchType = LaunchType.FARGATE,
    Overrides = new TaskOverride
    {
        ContainerOverrides = new List<ContainerOverride>
        {
            new ContainerOverride
            {
                Name = request.ContainerName,
                Environment = request.EnvironmentVariables
                    .Select(kvp => new Amazon.ECS.Model.KeyValuePair()
                {
                    Name = kvp.Key,
                    Value = kvp.Value
                }).ToList()
            }
        }
    },
    TaskDefinition = request.TaskDefinitionUri
};

await new AmazonEcsClient().RunTaskAsync(task);

最佳答案

检查您的任务定义。如果 NetworkModeawsvpc,那么您必须提供 NetworkConfiguration 参数。这对我有用:

var runTaskRequest = new ECSModel.RunTaskRequest
{
    Cluster = "cluster-name",
    Count = 1,
    LaunchType = LaunchType.FARGATE,
    TaskDefinition = "task-definition",
    NetworkConfiguration = new ECSModel.NetworkConfiguration
    {
        AwsvpcConfiguration = new ECSModel.AwsVpcConfiguration
        {
            SecurityGroups = new List<string> { "security-group" },
            Subnets = new List<string> { "subnet" }
        }
    },
    Overrides = new ECSModel.TaskOverride
    {
        ContainerOverrides = new List<ECSModel.ContainerOverride>
        {
            new ECSModel.ContainerOverride
            {
                Name = "container-name",
                Command = new List<string>
                {
                    // In case if you need to pass parameters to your instance:
                    "parameter-one", "parameter-two", "etc"
                }
            }
        }
    }
};

await new AmazonEcsClient().RunTaskAsync(runTaskRequest);

关于c# - 通过 C# 客户端 SDK 启动或运行 ECS 或 Fargate 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55731413/

相关文章:

c# - C#中的 session 超时问题

c# - Owin 在 web.config 中提供启动类(没有自动启动发现)

c# - 如何使用 Facebook 开发者工具包将内容发布到留言墙上?

c# - 如何使用 AWS lambda 处理大型 zip 文件?

asp.net-core - 从 lambda 授权者响应中提取身份

c# - Windows IOT 广播网络摄像头

c# - ASP.NET 5 中的依赖注入(inject)和对象处置

c# - AWS .NET Core单元测试加载非默认配置文件

c# - 如何在 NET Core 上的 AWS SDK 上设置凭据?

.net - ASP.NET Core 2 Web API AWS .NET SDK S3 访问被拒绝