繁体   English   中英

为什么我不能在 AWS ECS 中运行多个任务?

[英]Why can't I run multiple tasks in AWS ECS?

我正在开发一个文件处理系统,可以将文件上传到 S3,然后在容器中进行处理。 我一直在使用触发 ECS 从 lambda 运行任务并传递一些环境变量。

S3 -> Lambda -> ECS

我遇到了一个问题,我似乎无法一次运行超过 1 个任务。 如果一个任务已经在运行,那么任何后续运行的任务都会卡在“PROVISIONING”中并最终完全消失。

这是我运行 ECS 任务的 lambda 函数:

const params: RunTaskRequest = {
    launchType: "FARGATE",
    cluster: "arn:aws:ecs:us-east-1:XXXXXXX:cluster/FileProcessingCluster",
    taskDefinition: "XXX",
    networkConfiguration: {
        awsvpcConfiguration: {
            subnets: [
                "subnet-XXX",
                "subnet-XXX"
            ],
            securityGroups: [
                "..."
            ],
            assignPublicIp: "DISABLED"
        }
    },
    overrides: {
        containerOverrides: [
            {
                name: "FileProcessingContainer",
                environment: [
                    ...
                ]
            },
        ]
    },
};

try {
    await ecs.runTask(params).promise(); 
}catch (e) {
    console.error(e, e.stack)       
}

我正在使用 AWS-CDK 创建 ECS 基础设施:

    const cluster = new ecs.Cluster(this, 'FileProcessingCluster', {
        clusterName: "FileProcessingCluster"
    });

    const taskDefinition = new ecs.FargateTaskDefinition(this, "FileProcessingTask", {
        memoryLimitMiB: 8192,
        cpu: 4096,
    });

    taskDefinition.addContainer("FileProcessingContainer", {
        image: ecs.ContainerImage.fromAsset("../local-image"),
        logging: new ecs.AwsLogDriver({
            streamPrefix: `${id}`
        }),
        memoryLimitMiB: 8192,
        cpu: 4096,
    });

有什么我在这里想念的吗? 也许与并发任务相关的设置?

事实证明,我在任务定义中错误配置了子网,这阻止了从 ECR 中提取图像。

您可以在此处阅读更多相关信息: ECS 任务未启动 - STOPPED(CannotPullContainerError:“在等待连接时取消了来自守护进程请求的错误响应”

还有: https : //aws.amazon.com/premiumsupport/knowledge-center/ecs-pull-container-error/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM