【问题标题】:How to determine if a AWS Lambda function exists如何确定 AWS Lambda 函数是否存在
【发布时间】:2017-08-21 10:19:00
【问题描述】:

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

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

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

【问题讨论】:

  • 如果你只是尝试触发它而不检查任何东西,难道不会抛出一个合理的异常吗?
  • @Michael-sqlbot 试过了。感觉不是一个干净的方法。

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


【解决方案1】:

您可以使用ListFunctions JavaScript API 并检查lambda 函数是否在输出中。

listFunctions(params = {}, callback) ⇒ AWS.Request

返回您的 Lambda 函数列表。对于每个函数, 响应包括功能配置信息。你必须使用 GetFunction 检索函数的代码。

对应的CLI:aws lambda list-functions

【讨论】:

    【解决方案2】:

    这里是使用listFunctions() SDK 方法(helloV 提出)以更多async 方式检查函数是否存在的方法。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-05
      • 2020-11-10
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 2021-02-03
      • 1970-01-01
      相关资源
      最近更新 更多