在ECS服务上挂载一个配置文件



我有Kubernetes的背景,我正在努力学习AWS/ECS。在Kubernetes中,您可以使用ConfigMap资源将简单的一次性配置文件快速轻松地装载到容器中,而不必经历设置卷的所有麻烦。这也使得从Terraform配置服务变得非常容易,这也是我正在尝试做的

AWS ECS服务是否具有类似Kubernetes配置映射的功能?我只需要一种最简单的方法,在启动时将任意文本文件插入到我的服务中,它可以用Terraform快速更新。我想避免每次更改此文件时都必须重新生成整个映像。

这可能吗?或者我需要为此创建卷吗?如果是,那么用于此目的的最佳卷配置类型是什么?我可以很容易地在S3中存储和更新文件,这些只是简单的配置文件,只需要读取访问权限,所以这是一个可以接受的情况吗?

解决方案取决于体系结构和细节。以下是我可以看到的一些可能的解决方案:

  1. 如果可以将参数设置为环境变量,我建议将其值存储在AWSSystems ManagerSecrets Manager服务中并传递给容器(换句话说,您可以在容器中生成读取这些ENV的配置文件,并使用自定义Entrypoint将值打印到文件中(
  2. 如果您需要在docker容器中上传文件,这里有两个可能的简单解决方案:
    • 创建一个固定的base_image,每次只重建它的最后一层。用Dockerfile的术语来说,它看起来像:
      FROM base_image
      COPY config_file /app/config_file
      
    • 将配置文件存储在S3存储桶中,并通过更改Entrypoint将其复制到容器启动中。例如,如果当前Entryrpoint/usr/bin/apache
      FROM some_image
      RUN echo 'aws s3 cp s3://mybucket/config_file /app/ && /usr/bin/apache' > /Entrypoint.sh
      ENTRYPOINT ['sh', '/Entrypoint.sh']
      
      *然而,在这种情况下,您需要在容器内安装aws-cli

免责声明-我是这个项目的作者。

Ultimate Docker Launcher是一款开源应用程序,可以满足您的需求。它将在容器启动时基于env-var创建或编辑文件,因此您不需要在每次文件更改时重新编译应用程序,也不需要使用EFS等外部文件系统。

相关内容

  • 没有找到相关文章

最新更新