如何让在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拉取命令来更新文件是否更简单?

非常感谢您的帮助!

最好的问候,

1 Antwort
0

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

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

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

(*根据您的部署率)

profile picture
EXPERTE
beantwortet vor 5 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