从 Lambda 读取 AWS 参数存储
Reading AWS Param Store from Lambda
首次涉足 AWS 的 Lambda@Edge 并尝试从 AWS Param Store 检索机密以进行身份验证 (following this article) 但一无所获。
调用AWS.SSM函数的函数如下:
const fromParameterStore = async(key, withDecryption = false) => {
const { Parameter } = await ssm.getParameter({ Name: key, WithDecryption: withDecryption }).promise();
return Parameter.Value;
};
这是从 Lambda 的主体调用它的方式:
exports.handler = async (event, context, callback) => {
const request = event.Records[0].cf.request;
const testValue = fromParameterStore('my-param-key');
console.log("test value = "+testValue);
console.log("test value = "+JSON.stringify(testValue));
...
日志中的输出就是这样:
testvar = [object Promise]
testvar = {}
在这种情况下,我如何才能干净利落地取消对 Promise 的引用,以获取实际秘密以用于 Lambda 的其余部分?
谢谢!
您的 fromParameterStore
函数是异步的,因此它将 return 一个 Promise
。你将不得不等待这个承诺被履行,这意味着你将不得不在调用 fromParameterStore
函数时使用 await
:
const testValue = await fromParameterStore('my-param-key');
首次涉足 AWS 的 Lambda@Edge 并尝试从 AWS Param Store 检索机密以进行身份验证 (following this article) 但一无所获。
调用AWS.SSM函数的函数如下:
const fromParameterStore = async(key, withDecryption = false) => {
const { Parameter } = await ssm.getParameter({ Name: key, WithDecryption: withDecryption }).promise();
return Parameter.Value;
};
这是从 Lambda 的主体调用它的方式:
exports.handler = async (event, context, callback) => {
const request = event.Records[0].cf.request;
const testValue = fromParameterStore('my-param-key');
console.log("test value = "+testValue);
console.log("test value = "+JSON.stringify(testValue));
...
日志中的输出就是这样:
testvar = [object Promise]
testvar = {}
在这种情况下,我如何才能干净利落地取消对 Promise 的引用,以获取实际秘密以用于 Lambda 的其余部分?
谢谢!
您的 fromParameterStore
函数是异步的,因此它将 return 一个 Promise
。你将不得不等待这个承诺被履行,这意味着你将不得不在调用 fromParameterStore
函数时使用 await
:
const testValue = await fromParameterStore('my-param-key');