如何让在S3上由AppConfig管理的配置文件对于Fargate上的ECS服务可用?

0

【以下的问题经过翻译处理】 亲爱的社区,

我正试图创建一个具有以下属性的应用:

  1. 应用的不同组件将被打包在docker容器中,并且托管在ECR上。
  2. 每个容器都有在S3上托管的配置文件,该配置文件在部署期间会动态更新。
  3. 容器将使用ECS在Amazon Fargate上作为服务进行部署。

目前,我正在以以下方式运行应用的最小版本:

  1. 向ECR上传包含配置文件的图像,由于拷贝(静态配置)。
FROM eclipse-mosquitto
COPY ./mosquitto.conf /mosquitto/config/mosquitto.conf
  1. 定义一个仅包含该图像的任务,并使用ECS在Fargate上进行部署。
  2. 将配置文件加载到S3 Bucket中。
  3. 在AppConfig上创建配置文件。

在这里,我卡住了。我心中涌现了一些问题:

  • 如何将容器中的配置文件连接到S3上的AppConfig管理文件?
  • 当配置文件更新时,我能否钩入此过程以重新启动容器内部的服务器?
  • 在这里使用AppConfig是否合适?或者在容器重新启动后使用从S3拉取命令来更新文件是否更简单?

非常感谢您的帮助!

最好的问候,

profile picture
专家
已提问 5 个月前39 查看次数
1 回答
0

【以下的回答经过翻译处理】 根据描述,AppConfig可能不是最适合此用例的解决方案:它不会将配置文件传递到磁盘上,而是需要应用程序调用其API以刷新配置。(因此,您需要更新AppConfig中的配置项,部署它,然后在下一次刷新时,您的应用程序将收到更新后的配置。)您的应用程序需要修改以调用AppConfig API而不是从磁盘加载配置。如果您能够阅读Python,那么可以查看示例库,了解如何进行操作。

但是,如果您可以让一个脚本在容器内运行,您可以使用AWS CLI(或其他具有SDK(例如Python/boto3)的语言)从API中获取配置并将其存储在应用程序的文件中,然后通知应用程序应重新加载。最后一步的另一种替代方法是让应用程序监视文件的修改时间,并在其更新时重新加载。AppConfig本身不提供执行此操作的本机工具,但是文档中提供了一些AWS CLI命令示例,您可以从中开始。

如果这两种选项都不适合您,那么您在第三点中提出的选项可能是最直接的方法来解决问题,尽管您当然会失去AppConfig的某些好处,例如验证和自动回滚。

(*根据您的部署率)

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则