Tengo un servicio fargate donde una tarea ejecuta un contenedor. Entonces, mi contenedor es una canalización personalizada, que se ejecuta en función del recuento de SQS. Entonces, si se procesan todos los registros, detengo la canalización desde el contenedor. Entonces, me pregunto, en lugar de detener la canalización, ¿puedo establecer el recuento deseado del servicio en 0? (este servicio es el padre de la tarea de este contenedor)
Sí, puede establecer el recuento de deseos en cero una vez que se complete el proceso, pero hay algunas cosas que debe tener en cuenta.
Por ejemplo Dockerfile
FROM node:alpine RUN apk add --no-cache python py-pip RUN pip install awscli RUN aws --version WORKDIR /app COPY app.js . COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh ENTRYPOINT /entrypoint.shpunto de entrada que se ocupará del proceso de nodejs y establecerá el recuento de servicios en 0 cuando el proceso de nodejs se complete desde SQS.
#!/bin/sh # start the node process, but it should exit once it processes all SQS node app.js # once process is done, we are good to scale down the service aws ecs update-service --cluster my-cluster --region us-west-2 --service my-http-service --desired-count 0Un proceso de nodo de ejemplo que saldrá después de 1 minuto, app.js
function intervalFunc() { console.log('Container will stop in 1 minutes'); } setInterval(intervalFunc, 1500); setTimeout((function() { return process.exit(0); }), 60000);Por lo tanto, la imagen de Docker juega un papel importante y el proceso del nodo debe salir; de lo contrario, seguirá ejecutándose.