您可以使用 Docker 模型将机密传递给您的 ECS 服务,以将敏感数据绑定为/run/secrets. 如果您的 Compose 文件将机密声明为文件,则将在 ECS 上的应用程序部署过程中创建此类机密。如果您external: true在 Compose 文件中使用现有机密作为参考,请使用 ECS Secrets Manager 完整 ARN 作为机密名称:
services:
webapp:
image: ...
secrets:
- foo
secrets:
foo:
name: "arn:aws:secretsmanager:eu-west-3:1234:secret:foo-ABC123"
external: true
秘密将在运行时作为纯文本文件提供给您的服务/run/secrets/foo。
AWS Secrets Manager 允许您将敏感数据存储为纯文本(如 Docker 密钥)或分层 JSON 文档。您可以将后者与 Docker Compose CLI 结合使用,方法是使用自定义字段x-aws-keys来定义 JSON 文档中的哪些条目要绑定为服务容器中的机密。
services:
webapp:
image: ...
secrets:
- foo
secrets:
foo:
name: "arn:aws:secretsmanager:eu-west-3:1234:secret:foo-ABC123"
keys:
- "bar"
通过这样做,bar密钥的秘密将在运行时作为纯文本文件提供给您的服务/run/secrets/foo/bar。您可以使用特殊值*来获取容器中绑定的所有键。
自动缩放
可以使用正常的 Compose 语法指定缩放服务静态信息(非自动缩放):
services:
foo:
deploy:
replicas: 3
Compose 文件模型没有定义任何属性来声明自动缩放条件。因此,我们依靠x-aws-autoscaling自定义扩展来定义自动缩放范围,以及使用 cpu或内存来定义目标指标,表示为资源使用百分比。
services:
foo:
deploy:
x-aws-autoscaling:
min: 1
max: 10 #required
cpu: 75
# mem: - mutualy exlusive with cpu