docker-compose.yml 内的 AWS 参数存储

Pav*_*vel 10 amazon-web-services docker docker-compose aws-parameter-store

我将所有秘密数据保存到 AWS Parameter Store 中,我的应用程序使用 docker-compose 运行,并尝试aws ssm get-parameters在内部进行评估docker-compose.yaml

version: "3.7"

services:
  db:
    image: postgres
    restart: always
    volumes:
      - /home/ec2-user/dbdata:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: $$(aws ssm get-parameters --name DB_USERNAME --region eu-north-1 --output text --query Parameters[].Value)
      POSTGRES_PASSWORD: $$(aws ssm get-parameters --name DB_PASSWORD --region eu-north-1 --output text --with-decryption --query Parameters[].Value)
      POSTGRES_DB: $$(aws ssm get-parameters --name DB_NAME --region eu-north-1 --output text --query Parameters[].Value)
    ports:
      - 5432:5432

  auth:
    build: .
    restart: always
    environment:
      DB_ENDPOINT: $$(aws ssm get-parameters --name DB_ENDPOINT --region eu-north-1 --output text --query Parameters[].Value)
      DB_USERNAME: $$(aws ssm get-parameters --name DB_USERNAME --region eu-north-1 --output text --query Parameters[].Value)
      DB_PASSWORD: $$(aws ssm get-parameters --name DB_PASSWORD --region eu-north-1 --output text --with-decryption --query Parameters[].Value)
      JWT_KEY: $$(aws ssm get-parameters --name JWT_KEY --region eu-north-1 --output text --query Parameters[].Value)
      JWT_EXPIRED: $$(aws ssm get-parameters --name JWT_EXPIRED --region eu-north-1 --output text --query Parameters[].Value)
    depends_on:
      - db
    links:
      - db
    ports:
      - 80:80
Run Code Online (Sandbox Code Playgroud)

但建设$$(<command>)不行。

我得到的不是参数存储中的预期值

$(get-parameters --name DB_EN​​DPOINT --region eu-north-1 --output text --query 参数[].Value)

我知道如何通过准备一个export MY_VAR="$(get-parameters ...)"可以理解的脚本来做到这一点。

但问题是我可以获取 Parameter Store 值吗?docker-compose.yaml如果可以的话,如何获取?

Vin*_*ius 1

不幸的是,没有办法做到这一点。

正如您所说,您必须在运行命令之前设置环境变量docker-compose up

export MY_KEY=$(aws ssm get-parameter --name "YOUR-PARAMETER-NAME" [--with-decryption] --output text --query Parameter.Value)
Run Code Online (Sandbox Code Playgroud)

然后在您的docker-compose.yml文件中设置环境变量:

version: "3.7"

services:
  ...
    environment:
      MY_SSM_KEY: ${MY_KEY}
  ...
Run Code Online (Sandbox Code Playgroud)

现在,docker-compose up将按需要运行。