将单个配置文件挂载到 ECS 服务上
Mount a single config file onto an ECS service
我有 Kubernetes 背景,我正在努力学习 AWS/ECS。在 Kubernetes 中,您可以使用 ConfigMap
资源将简单的一次性配置文件快速轻松地挂载到容器中,而无需经历设置卷的所有麻烦。这也使得从 Terraform 配置服务变得非常容易,这正是我正在尝试做的。
AWS ECS 服务是否具有 Kubernetes Config Maps 之类的功能?我只需要最简单的方法在启动时将任意文本文件插入到我的服务中,可以使用 Terraform 快速更新。我想避免每次此文件更改时都必须重建整个图像。
这可能吗,或者我需要为此创建卷吗?如果是这样,为此目的最好的卷配置类型是什么?我可以轻松地在 S3 中存储和更新文件,这些只是只需要读取访问权限的简单配置文件,那么仅挂载 S3 存储桶是否可以接受?
解决方案取决于架构和细节。这是我可以看到的一些可能的解决方案:
- 如果可以将参数设置为环境变量,我建议将其值存储在 AWS
Systems Manager
或 Secrets Manager
服务和 pass to containers 中(否则您可以在其中生成配置文件容器读取这些 ENV 并使用自定义 Entrypoint
) 将值打印到文件
- 如果您需要在 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。
我有 Kubernetes 背景,我正在努力学习 AWS/ECS。在 Kubernetes 中,您可以使用 ConfigMap
资源将简单的一次性配置文件快速轻松地挂载到容器中,而无需经历设置卷的所有麻烦。这也使得从 Terraform 配置服务变得非常容易,这正是我正在尝试做的。
AWS ECS 服务是否具有 Kubernetes Config Maps 之类的功能?我只需要最简单的方法在启动时将任意文本文件插入到我的服务中,可以使用 Terraform 快速更新。我想避免每次此文件更改时都必须重建整个图像。
这可能吗,或者我需要为此创建卷吗?如果是这样,为此目的最好的卷配置类型是什么?我可以轻松地在 S3 中存储和更新文件,这些只是只需要读取访问权限的简单配置文件,那么仅挂载 S3 存储桶是否可以接受?
解决方案取决于架构和细节。这是我可以看到的一些可能的解决方案:
- 如果可以将参数设置为环境变量,我建议将其值存储在 AWS
Systems Manager
或Secrets Manager
服务和 pass to containers 中(否则您可以在其中生成配置文件容器读取这些 ENV 并使用自定义Entrypoint
) 将值打印到文件
- 如果您需要在 docker 容器中上传文件,这里有两种可能的简单解决方案:
- 创建一个固定的
base_image
并且每次只重建它的最后一层。在 Dockerfile 术语中,它看起来像:FROM base_image COPY config_file /app/config_file
- 将配置文件存储在 S3 存储桶中,并通过更改
Entrypoint
将其复制到容器启动。例如,如果当前Entryrpoint
是/usr/bin/apache
:
*但是在这种情况下你需要在容器中安装aws cli。FROM some_image RUN echo 'aws s3 cp s3://mybucket/config_file /app/ && /usr/bin/apache' > /Entrypoint.sh ENTRYPOINT ['sh', '/Entrypoint.sh']
- 创建一个固定的