我是AWS SDK for JavaScript的新手。在触发执行之前,我需要检查Lambda函数是否存在。
我尝试了以下内容:
每次使用函数名称创建lambda.getFunctionConfiguration()
时,我都必须执行。如果它返回错误,则该函数不存在。如果我得到元,我继续执行。
我觉得这不是一个更清洁的方法来处理这个问题。有没有其他方法来检查Lambda是否存在名称?
提前谢谢。
答案 0 :(得分:2)
您可以使用ListFunctions JavaScript API并检查lambda
函数是否在输出中。
listFunctions(params = {}, callback) ⇒ AWS.Request
返回Lambda函数的列表。对于每个功能, 响应包括功能配置信息。你必须使用 GetFunction检索函数的代码。
对应的CLI:aws lambda list-functions
答案 1 :(得分:0)
以下是通过async
方式以listFunctions()
SDK方法(由helloV提出的 )检查函数是否存在的方法。
const {Lambda} = require('aws-sdk');
const lambda = new Lambda({apiVersion: '2015-03-31'});
const lambdaExists = async (fName, marker = null) => {
try {
const {Functions, NextMarker} = await lambda
.listFunctions({
Marker: marker || '',
MaxItems: 50
})
.promise();
const exists = Functions.map(({FunctionName}) => FunctionName).indexOf(fName) !== -1;
return exists || NextMarker;
} catch (e) {
// Handle with care
console.log(e.toString());
return e;
}
};
如果在当前迭代中找到函数名称,则函数返回true
,否则返回NextMarker
( string )。当收到的响应中没有提供NextMarker
时,迭代结束。
注意:此功能是解决问题的可能方法的一般表示。尚未在实际条件下进行全面测试,可能需要在代码中进行一些更正。