AWS Secrets Manager 找不到指定的密钥
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有权限获取secret值,而且
当仅保留 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
However, if your secret has a name that ends in a hyphen followed by
six characters (before Secrets Manager adds the hyphen and six
characters to the ARN) and you try to use that as a partial ARN, then
those characters cause Secrets Manager to assume that you’re
specifying a complete ARN. This confusion can cause unexpected
results.
正如您从我包含连字符的变量名中看到的那样,Secrets Manager 在通过短名称解析它时遇到了困难
当您未在 ARN 末尾指定 GUID 时,Secrets Manager 会尝试进行部分 ARN 匹配。但是,it is imperfect 因为部分 ARN 可能会发生冲突。如果您在同一个账户中获取机密,您可以只使用机密名称(机密之后的部分:并且不包括破折号 6 字符 -GUID)而不是完整的 ARN。但是,当您拥有完整的 ARN 时,使用它总是最好的。
此错误的另一个潜在原因是未设置机密;秘密名称可能存在,但没有价值。有关设置值的步骤,请参阅 https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html。
我正在使用 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有权限获取secret值,而且
当仅保留
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
However, if your secret has a name that ends in a hyphen followed by six characters (before Secrets Manager adds the hyphen and six characters to the ARN) and you try to use that as a partial ARN, then those characters cause Secrets Manager to assume that you’re specifying a complete ARN. This confusion can cause unexpected results.
正如您从我包含连字符的变量名中看到的那样,Secrets Manager 在通过短名称解析它时遇到了困难
当您未在 ARN 末尾指定 GUID 时,Secrets Manager 会尝试进行部分 ARN 匹配。但是,it is imperfect 因为部分 ARN 可能会发生冲突。如果您在同一个账户中获取机密,您可以只使用机密名称(机密之后的部分:并且不包括破折号 6 字符 -GUID)而不是完整的 ARN。但是,当您拥有完整的 ARN 时,使用它总是最好的。
此错误的另一个潜在原因是未设置机密;秘密名称可能存在,但没有价值。有关设置值的步骤,请参阅 https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html。