AWS Secrets Manager找不到指定的机密

时间:2019-09-06 12:17:04

标签: amazon-web-services amazon-ecs aws-fargate aws-secrets-manager

我正在使用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

我的配置可能出什么问题?任何提示表示赞赏

2 个答案:

答案 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。这种混乱可能导致意外   结果。

因此,从包含连字符的变量名中您可以看到,秘密管理器在通过短名称解决它时遇到了困难