我有按计划执行的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
为了实现所需的功能,您应该使用所需的端口映射保留第二个任务定义,或者使用动态端口映射,以便在运行临时任务时没有冲突。