我有按计划执行的Lambda函数。

let params = {
    taskDefinition: taskDefinition,
    cluster: process.env.cluster,
    startedBy: 'lambda',
    count: process.env.count || 1,
    overrides: {
        containerOverrides: [{
            name: containerName,
            command: [
                '/bin/bash',
                '/usr/share/nginx/html/console/cronjobs/' + process.env.command
            ]
        }]
    }
};

if (typeof memory !== 'undefined') {
    params.overrides.containerOverrides[0].memory = parseInt(memory);
}

ecs.runTask(
    params,
    (error, data) => {}
);

它尝试从现有的任务定义中启动新任务。问题在于,其中一个Docker容器已经在使用此任务定义运行(恒定运行,而不是自动退出),并使用在任务定义中设置的端口映射(例如80 => 8080)。

如何运行相同的任务定义并忽略/覆盖端口映射?

还是有更好的方法启动Task并在其中运行单个bash命令?

最佳答案

运行新任务时,目前无法覆盖端口映射。此处列出了可以覆盖的允许值:ContainerOverride documentation

为了实现所需的功能,您应该使用所需的端口映射保留第二个任务定义,或者使用动态端口映射,以便在运行临时任务时没有冲突。

10-08 11:03