jkh*_*jkh 1 node.js aws-lambda aws-secrets-manager
我尝试使用 AWS Secrets Manager 提供的 Node.js 示例代码来读取机密值,并将此代码放入 Lambda 函数中。但是,我似乎无法进入处理获取秘密值的响应的函数。
Lambda 角色具有 AdministratorAccess 权限,可以排除权限问题。
拉姆达代码:
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')
Run Code Online (Sandbox Code Playgroud)
};
输出
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
Run Code Online (Sandbox Code Playgroud)
因为秘密存在,所以我希望在输出中看到“in”和秘密行......是什么阻止它进入该函数?
将您的电话更改为承诺:
const data = await client.getSecretValue({SecretId: secretName}).promise();
Run Code Online (Sandbox Code Playgroud)
您遇到的问题是 lambda 在执行回调之前结束执行。Node.js 中的 AWS Lambda 函数处理程序
上述解决方案有效,但有关完整的代码示例,请参阅此链接:https: //github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/secrets/src/secrets_getsecretvalue。 js