我有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)中设置的端口映射。
如何运行相同的任务定义并忽略/覆盖端口映射?
或者是否有更好的方法来启动任务并在其中运行单个bash命令?
目前没有办法在运行新任务时覆盖端口映射。您可以覆盖的允许值列在此处:ContainerOverride documentation
要实现所需,您应该使用所需的端口映射保留第二个任务定义,或使用动态端口映射,以便在运行临时任务时不会发生冲突。