[英]Secrets Manager can't find the specified secret value for staging label
[英]AWS Secrets Manager can’t find the specified secret
我正在使用 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
我的配置可能有什么问题? 任何提示表示赞赏
好的,所以诀窍是明确指定 ARN。 您应该使用完整标识符,而不是仅仅提供秘密名称
arn:aws:secretsmanager:us-east-1:111222333444:secret:var-two-secret-ID0o2R
注意机密名称末尾的-ID0o2R
后缀。
我仍然不清楚为什么对于某些变量它没有它就可以工作。
UPD
但是,如果您的密钥的名称以连字符结尾,后跟六个字符(在 Secrets Manager 将连字符和六个字符添加到 ARN 之前)并且您尝试将其用作部分 ARN,那么这些字符会导致 Secrets Manager 假设您正在指定一个完整的 ARN。 这种混淆会导致意想不到的结果。
因此,正如您从我的包含连字符的变量名中看到的那样,Secrets Manager 在通过短名称解析时遇到了困难
当您未在 ARN 末尾指定 GUID 时,Secrets Manager 会尝试进行部分 ARN 匹配。 然而, 它并不完美,因为部分 ARN 可能会发生冲突。 如果您在同一个账户中获取机密,则可以只使用机密名称(机密之后的部分:不包括短划线 6 字符 -GUID)而不是完整的 ARN。 但是,当您拥有完整的 ARN 时,使用它总是最好的。
此错误的另一个潜在原因是未设置机密; 秘密名称可能存在,但没有值。 有关设置值的步骤,请参阅https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html 。
只需在 ARN 末尾添加一个双冒号:
"arn:aws:secretsmanager:us-east-1:1234567890:secret:example-ABC12:VARIABLE_NAME::"
解释:
arn:aws:secretsmanager:us-east-1:1234567890:secret:example-ABC12
是您的机密的 ARN(保险库)VARIABLE_NAME
是您添加的实际变量,并在 ARN 中添加了::
。检查文档中所有可能的组合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.