我正在使用AWS Fargate并通过Secrets Manager存储敏感数据。任务定义应从秘密存储中获取环境变量
- name: "app"
image: "ecr-image:tag"
essential: true
secrets:
- name: "VAR1"
valueFrom: "arn:aws:secretsmanager:us-east-1:111222333444:secret:var-one-secret"
- name: "VAR2"
valueFrom: "arn:aws:secretsmanager:us-east-1:111222333444:secret:var-two-secret"
- name: "VAR3"
valueFrom: "arn:aws:secretsmanager:us-east-1:111222333444:secret:var-two-private"
但是由于某种原因它失败并显示以下错误
ResourceNotFoundException: Secrets Manager can’t find the specified secret. status code: 400, request id
我觉得有点奇怪,因为
IAM有权获取秘密价值
仅保留VAR1
变量时,所有内容均按预期工作
AWS CLI能够检索每个秘密而没有任何问题
例如
aws secretsmanager get-secret-value --secret-id var-two-secret
我的配置可能出什么问题?任何提示表示赞赏
答案 0 :(得分:2)
当您未在ARN末尾指定GUID时,Secrets Manager尝试执行部分ARN匹配。但是,it is imperfect是因为部分ARN可能会发生冲突。如果要在同一帐户中获取机密,则可以使用机密名称(机密后的部分:并且不包括破折号6的字符-GUID)而不是完整的ARN。但是,使用完整的ARN始终是最好的选择。
答案 1 :(得分:1)
好的,所以诀窍是明确指定ARN。不应仅提供秘密名称,而应使用完整标识符
arn:aws:secretsmanager:us-east-1:111222333444:secret:var-two-secret-ID0o2R
在秘密名称结尾加注-ID0o2R
后缀。
对于我来说,还是不清楚的,为什么没有某些变量就可以工作。
UPD
但是,如果您的秘密的名称以连字符结尾,后跟连字符 六个字符(在Secrets Manager添加连字符和六个字符之前 字符添加到ARN),然后尝试将其用作部分ARN,然后 这些字符会使Secrets Manager假设您是 指定完整的ARN。这种混乱可能导致意外 结果。
因此,从包含连字符的变量名中您可以看到,秘密管理器在通过短名称解决它时遇到了困难