AWS ECS中的Python应用程序。如何链接到外部应用程序配置?

维生素Ias

我有一个具有以下部署模型的Python应用程序(Flask,uwsgi):将docker容器放入AWS ECR,并由AWS ECS(Fargate)推出。CD由CircleCI操作。我使用外部应用程序配置(INI文件),并希望将其放置在容器外部(实际上是一种好习惯)。问题是:我到底应该在哪里放置这样的文件,以便ECS中的容器可以读取它?提醒一下:Fargate部署模型与特定的EC2实例无关,因此我看不到将其放置在那里的方法。读取我的配置的那段代码:

APP_CONFIG = Path(os.getenv("CONFIG_FILE_PATH", str(DEFAULT_CONFIG_PATH)))
特拉纳格

您有几种选择:

  1. 最简单但也是最麻烦的选择是将编码为base64的config放入参数存储中,然后通过secrets在任务定义中使用属性指向该配置将其作为环境文件注入到容器中。我个人真的不喜欢这样,因为每次我想更改配置时,我都必须手动执行...更改文件,对其进行编码,然后将其上传到商店。另外,必须修改映像/入口点以将文件放置在其所属位置。

  2. 将配置存储在EFS卷中,并将其绑定到容器。一旦完成所有设置并且容器可以访问EFS卷,这将是一个非常不错的解决方案。您可以在卷中手动更新配置,例如从EC2实例更新,也可以将管道中的更新文件推送到卷。

  3. 我使用的hacky方法:将配置存储在也包含我的管道定义等的git repo中。使用entrypoint属性覆盖图像的入口点,然后将配置文件作为base64作为env var注入到容器中,然后从同一入口点注入解码并将其放在正确的位置。我这样做是因为我希望所有非秘密配置都与任务定义等位于同一存储库中。

我敢肯定还有更多(复杂的)方法。例如,像Hashicorp Vault之类的东西。但是我没有经验

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查Python应用程序是否在AWS lambda函数中运行?

如何将AWS Elasticache Redis集群连接到Spring Boot应用程序?

压力测试AWS Web应用程序

将Spring Boot应用程序连接到AWS Aurora的通信链接失败

从AWS Elastic Beanstalk下载应用程序

如何使用SSL连接到AWS“应用程序负载平衡器”

Android应用程序连接到Amazon AWS DynamoDB NoSQL

在AWS中运行的应用程序如何知道其环境?

AWS Spring应用程序通信链接失败

无法使用Aws Ecs上部署的.net核心应用程序连接到Aurora MySql

如何在AWS中查看或找到当前的Nginx配置(通过弹性beantalk部署的应用程序)

如何将本地应用程序连接到AWS Aurora Serverless

如何配置域/ DNS以在AWS中使用应用程序?

AWS Worker层应用程序版本

如何在AWS中托管Java应用程序?

如何从MVC应用程序连接到外部URL

如何将 Android 应用程序连接到 AWS 数据库

通过 html 链接到外部 android 应用程序

在 AWS 上部署 lambda 应用程序

从 cloudstar 生成的应用程序在 AWS cloud9 中快速运行 express 应用程序?

从 AWS SAM 中的节点应用程序连接到 docker 中的 mongodb

AWS CodeBuild 的 Rails 应用程序配置

AWS 上的 Web 应用程序部署

覆盖 SpringBoot 应用程序的默认 AWS 配置文件

在 AWS ECS(Fargate) 中的一个容器中托管多个应用程序

如何在使用 AWS ECS FARGATE 时为 Web 应用程序存储上传的文件

如何构建 AWS Serverless 应用程序?

如何从角度应用程序调用 aws sagemaker 中的 python 文件?

AWS ElasticBeanstalk LoadBalancer 配置未将我的应用程序链接到我的域