amazon-web-services - 你可以通过fargate中的同一个容器将期望计数缩小到0吗
问题描述
我有一个 Fargate 服务,其中有一个运行容器的任务。所以,我的容器是一个定制的管道,它基于 SQS 计数运行。因此,如果所有记录都已处理,那么我会停止容器中的管道。那么,我想知道的是,我可以将所需的服务计数设置为 0,而不是停止管道吗?(此服务是此容器任务的父级)
解决方案
是的,一旦过程完成,您可以将欲望计数设置为零,但您需要考虑的事项很少。
- 一旦完成操作,您的节点进程应该退出
- Dockerfile 应该有一个有效的入口点 aws-cli
- Fargate 服务应该有 ecs 服务更新操作
例如 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.sh
当 nodejs 进程从 SQS 完成时,将处理 nodejs 进程并将服务计数设置为 0 的入口点。
#!/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 0
将在 1 分钟后退出的示例节点进程 app.js
function intervalFunc() {
console.log('Container will stop in 1 minutes');
}
setInterval(intervalFunc, 1500);
setTimeout((function() {
return process.exit(0);
}), 60000);
所以 Docker 镜像起着重要的作用,节点进程应该退出,否则它将继续运行。
推荐阅读
- javascript - 在循环的api请求之间等待,并合并所有响应
- python - 如何删除我的不和谐机器人发送的 dm 消息
- html - 在弹出模式中移动图像不起作用,但在主容器中
- c# - 如何设置某些文本的背景颜色
- javascript - 客户端对 opengraph.io 的请求
- python - 使用 strptime() 问题解析日期时间值
- python-3.x - 避免使用 dist-packages 中的 egg 版本
- vue.js - 如何在 Bootstrap Vue 表中获取 tr 的索引?
- c++ - 如何在变量中的指针位置保存十六进制内存
- uft14 - 如何在 API 测试中使用 GUI 测试传递的值:UFT