通过Lambda使用CLI自动更新ECS服务

0

【以下的问题经过翻译处理】 我有一个在 ECS 上运行服务的多容器应用程序。镜像托管在 ECR 上,配置文件通过脚本在容器启动时从S3存储桶中拉取。该应用程序位于私有子网内,位于具有EIP的公共子网中的网络负载均衡器后面。

我的最终目标是在 a.) 签入新映像或 b.) 上传新的配置文件时自动更新服务。

我认为在网络负载均衡器(支持滚动更新)后面做到这一点的最佳方法是在更新时触发的 lambda 函数中使用 AWS ECS CLI。如果我没有误读文档,CLI 应该会触发滚动更新。为了测试 CLI,我尝试了:

aws ecs update-service --cluster mycluster --service myservice --force-new-deployment

但是,这并不成功。一个新任务被创建,但在部署完成之前就停止了,并显示以下日志消息:

Essential container in task exited

该服务的参数为最小 100% 和最大 200%。我还尝试将运行任务的下限设置为0%。这导致成功退出旧任务,但由于同样的错误,新任务未能部署。这让我觉得我的配置可能不正确。

问题:

1.)这里使用 lambda 函数是一个明智的选择吗?或者有更好的方法吗?

2.)如何解决滚动更新失败的问题?

如果您需要更多信息,请告诉我。非常感谢您的帮助!

最好的问候, Sebastian

profile picture
EXPERTE
gefragt vor 6 Monaten22 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 这看起来应该是可以工作的,特别是从 S3 的配置文件角度来看,当您上传文件时,可以触发Lambda。我建议在此处查看有关创建请求以修改ECS的文档[1]。 它还包含使用AWS SDK的多种语言的参考请求。例如,这里提供了Javascript的链接[2]。

要对失败的部署进行故障排除,建议查看CloudWatch日志[3][4]。

[1]https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html

[2]https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ECS.html#updateService-property

[3]https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_cloudwatch_logs.html

[4]https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-logging-monitoring.html

profile picture
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen