【问题标题】:AWS CDK - Possible to access individual (JSON) value within a Secrets Manager secret when specifying secrets for a container?AWS CDK - 在为容器指定密钥时可以访问 Secrets Manager 密钥中的单个 (JSON) 值吗?
【发布时间】:2021-08-15 07:23:59
【问题描述】:

我正在尝试在 AWS CDK 上组合一个相对简单的堆栈,其中涉及来自 aws-ecs-patternsApplicationLoadBalancedFargateService

我的问题涉及秘密。我在 Secrets Manager 中有一个包含多个键/值的密钥(我认为从技术上讲它存储为 JSON 文档,但 AWS 提供了一个键/值接口),我需要将它们单独传递给我的容器。我目前通过简单地指定密钥在等效的非 cdk(在控制台中制作)堆栈中执行此操作,如下所示:arn:aws:secretsmanager:us-west-2:[acct]:secret/name-??????:KEY::,其中 `KEY 是密钥,并且正确的值作为 env 插入到容器中变量。

当我尝试使用 CDK 执行此操作时,我在 cdk 合成器时收到错误:

`secretCompleteArn` does not appear to be complete; missing 6-character suffix

如果我删除最后一位 (:KEY::),它会成功合成,但我的容器实际上并没有得到我想要的。

这就是我尝试在我的 cdk(打字稿)代码中使用它的方式:

new ApplicationLoadBalancedFargateService(this, 'Service', {
  ...
  taskImageOptions: {
    image: containerImage, // defined elsewhere
    ...
    secrets: {
      'DB_DATABASE': ecs.Secret.fromSecretsManager(
        Secret.fromSecretCompleteArn(this, 'secret-DB_DATABASE', 
         'arn:aws:secretsmanager:us-west-2:[acct]:secret:secret/name-??????:KEY::')),

      //there's really a few more, pulling keys from the same secret.  Omitting for brevity
    },
  },   
});

有没有办法让这个工作?还是我需要改变我存储/使用我的秘密的方式?

【问题讨论】:

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


    【解决方案1】:

    这是将特定键作为环境变量传递给容器的方式:

    const mySecret = secretsmanager.Secret.fromSecretCompleteArn('<your arn>');
    
    taskDefinition.addContainer('MyContainer', {
      // ... other props ...
      secrets: {
        SECRET_KEY: ecs.Secret.fromSecretsManager(mySecret, 'specificKey'),
      },
    });
    

    ApplicationLoadBalancedFargateService:

    new ApplicationLoadBalancedFargateService(this, 'Service', {
      ...
      taskImageOptions: {
        image: containerImage, // defined elsewhere
        ...
        secrets: {
          'DB_DATABASE': ecs.Secret.fromSecretsManager(mySecret, 'specificKey'),
        },
      },   
    });
    

    【讨论】:

      猜你喜欢
      • 2020-01-09
      • 2019-02-15
      • 2020-10-26
      • 2020-09-29
      • 1970-01-01
      • 2020-07-23
      • 2021-06-12
      • 1970-01-01
      • 2021-10-29
      相关资源
      最近更新 更多