从管理器中检索密钥并在 ec2 cfn-init 中使用它



我正在尝试在CloudFormation中的EC2实例cfn-init中使用密钥。基于机密管理器机密,这应该不难,但我正在尝试将其用作命令的一部分,就我而言:

01_login_in_docker:
          command: !Join
            - ' '
            - - 'docker login -u '
              - '{{resolve:secretsmanager:docker-info:SecretString:DOCKER_ACCOUNT_USERNAME}} '
              - '-p '
              - '{{resolve:secretsmanager:docker-info:SecretString:DOCKER_ACCOUNT_PASSWORD}} '
              - 'cloud.canister.io:5000'

docker-info是存储在我的账户中的秘密,因此我只需要名称即可访问密钥,而不是 ARN。

回顾cfn-init.log我发现 CF 没有解决任何问题:

[ERROR] Command 01_login_in_docker (docker login -u {{resolve:secretsmanager:docker-info:SecretString:DOCKER_ACCOUNT_USERNAME}} -

p {{resolve:secretsmanager:docker-info:SecretString:DOCKER_ACCOUNT_PASSWORD}} cloud.canister.io:5000( failed

有没有人尝试过类似的东西,或者可以发现我的问题在哪里?

它没有明确提及,但所有示例都使用动态引用作为整个值,而不是另一个字符串的一部分。因此,也许可以尝试将它们作为环境变量传递。它也应该更安全一些,因为日志不会在命令中包含密码。

    01_login_in_docker:
      command: |
        docker login -u "$DOCKER_ACCOUNT_USERNAME" -p "$DOCKER_ACCOUNT_PASSWORD" cloud.canister.io:5000
      env:
        DOCKER_ACCOUNT_USERNAME: '{{resolve:secretsmanager:docker-info:SecretString:DOCKER_ACCOUNT_USERNAME}}'
        DOCKER_ACCOUNT_PASSWORD: '{{resolve:secretsmanager:docker-info:SecretString:DOCKER_ACCOUNT_PASSWORD}}'

最新更新