如何确定AWS Lambda函数是否存在

时间:2017-08-21 10:19:01

标签: javascript amazon-web-services aws-lambda aws-sdk

我是AWS SDK for JavaScript的新手。在触发执行之前,我需要检查Lambda函数是否存在。

我尝试了以下内容:
每次使用函数名称创建lambda.getFunctionConfiguration()时,我都必须执行。如果它返回错误,则该函数不存在。如果我得到元,我继续执行。

我觉得这不是一个更清洁的方法来处理这个问题。有没有其他方法来检查Lambda是否存在名称?
提前谢谢。

2 个答案:

答案 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时,迭代结束。

  

注意:此功能是解决问题的可能方法的一般表示。尚未在实际条件下进行全面测试,可能需要在代码中进行一些更正。