我正在尝试在CloudFormation的EC2实例的cfn-init
中使用机密。基于Secrets Manager Secrets,这应该不难,但我尝试的是在我的情况下将其用作命令的一部分:
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]命令01_login_in_docker(docker登录-u {{resolve:secretsmanager:docker-info:SecretString:DOCKER_ACCOUNT_USERNAME}} -p {{resolve:secretsmanager:docker-info:SecretString:DOCKER_ACCOUNT_PASSWORD}} cloud.canister.io :5000)失败
有人尝试过类似的方法还是可以发现我的问题在哪里?
答案 0 :(得分:0)
它没有明确提及,但是所有示例都将动态引用用作整个值,而不是另一个字符串的一部分。因此,也许尝试将它们作为环境变量传递。这样做也应该更加安全,因为日志中的命令中不会包含密码。
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}}'