繁体   English   中英

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 有权获取秘密值

  • 当只留下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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM