【问题标题】:Read from Secrets Manager in AWS Lambda function从 AWS Lambda 函数中的 Secrets Manager 读取
【发布时间】:2023-03-18 15:24:02
【问题描述】:

我正在尝试使用 AWS Secrets Manager 提供的 Node.js 示例代码来读取密钥值,并将此代码放入 Lambda 函数中。但是,我似乎无法进入处理获取秘密值的响应的函数。

Lambda 角色具有 AdministratorAccess 权限,以排除它是权限问题。

Lambda 代码:

exports.handler = async (event) => {

// Load the AWS SDK
var AWS = require('aws-sdk'),
    region = "us-east-1",
    secretName = "/my-secrets/level1/level2",
    secret,
    decodedBinarySecret;

var client = new AWS.SecretsManager({
    region: region
});

console.log('above')

client.getSecretValue({SecretId: secretName}, function(err, data) {

    console.log('in')

    if (err) {
       throw err;
    }
    else {
        if ('SecretString' in data) {
            secret = data.SecretString;
        } else {
            let buff = new Buffer(data.SecretBinary, 'base64');
            decodedBinarySecret = buff.toString('ascii');
        }
    }

    console.log(secret)
});

console.log('below')

};

输出

2020-03-05T18:51:54.547Z    a3101875-a1f4-4b6f-ac62-3c2f93f5941f    INFO    above
2020-03-05T18:51:54.947Z    a3101875-a1f4-4b6f-ac62-3c2f93f5941f    INFO    below

因为存在秘密,我希望在输出中看到“in”和秘密线......是什么阻止它进入该函数?

【问题讨论】:

    标签: node.js aws-lambda aws-secrets-manager


    【解决方案1】:

    把你的电话变成一个承诺:

    const data = await client.getSecretValue({SecretId: secretName}).promise();
    

    您遇到的问题是 lambda 在执行回调之前结束执行。 AWS Lambda Function Handler in Node.js

    上述解决方案有效,但完整代码示例请参考此链接:https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/secrets/src/secrets_getsecretvalue.js

    【讨论】:

      猜你喜欢
      • 2021-06-25
      • 2020-09-28
      • 2021-02-13
      • 2020-10-26
      • 2020-11-27
      • 2023-01-01
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      相关资源
      最近更新 更多