【问题标题】:Can I call AWS Lambda directly without Gateway API?我可以在没有网关 API 的情况下直接调用 AWS Lambda 吗?
【发布时间】:2020-01-27 09:01:43
【问题描述】:

我正在 AWS 上开发一个简单的 Lambda 函数来获取数据并将其放入 Dynamo DB。我想从 Windows 客户端桌面应用程序调用这个函数。我的问题是,我这里真的需要 AWS Gateway API 还是可以直接使用 AWS SDK 调用 lambda 函数?

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    您可以使用invoke() 直接从 AWS 开发工具包执行 AWS Lambda 函数。您也可以将payload 传递给它,它可以在函数中访问。

    以下是 Python 中的语法示例:

    response = client.invoke(
        ClientContext='MyApp',
        FunctionName='MyFunction',
        InvocationType='Event',
        LogType='Tail',
        Payload='fileb://file-path/input.json',
        Qualifier='1',
    )
    

    【讨论】:

    • 谢谢,约翰!我并不是真的在寻找代码。我想要的是为什么我们需要 API Gateway
    • 您不需要 API 网关。您可以直接调用 Lambda(如我上面的示例所示)。或者,您可以通过AWS Command-Line Interface (CLI) 调用它。
    【解决方案2】:
    • 如果您想要创建 REST API 以供移动和 Web 应用程序用于调用公开可用的 AWS 服务(通过在 AWS Lambda 中运行的代码),您需要 API Gateway。
    • 您可以同步调用您的 Lambda 函数。这可以通过多种选项来实现,包括使用 CLI 或任何受支持的 SDK。注意调用类型应该是 RequestResponse aws blog
    • 使用 aws cli 的 bash 命令
    aws lambda invoke —function-name MyLambdaFunction —invocation-type RequestResponse —payload  “JSON string here”
    

    sdk python 调用。 configuration

        invoke_resp = LAMBDA_CLIENT.invoke(
            FunctionName='function_name',
            InvocationType='RequestResponse',
            Payload='payload')
    
    • 如果要调用 lambda 异步 Invocation-type 标志应该是 Event
    aws lambda invoke —function-name MyLambdaFunction —invocation-type Event —payload  “JSON string here”
    

    【讨论】:

      【解决方案3】:

      我没有从您的用例中获得太多信息。我必须在这里假设一些东西。

      1. 您无需等待 Lambda 的回复 因此,您可以通过 SNS 或 SQS 使用异步调用,然后将您的 Lambda 订阅到 SNS 或 SQS。您可以研究更多以在 SNS 和 SQS 之间进行选择,具体取决于您的用例

      2. 如果您需要等待 Lambda 的回复

        • 如果您想在组织外部共享 Lambda 的功能,您可以使用 API Gateway 来实现,这意味着您仍然将 Lambda 保留在内部,但通过 API Gateway 将 API 公开给外部使用。

        • 如果不想在外面分享 Lambda 的功能,就像之前的回答一样,可以使用 invoke command/sdk 来实现。

      如果我从您的用例中获得更多信息,也许答案会更准确。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-03
        • 1970-01-01
        • 2019-06-05
        • 1970-01-01
        • 1970-01-01
        • 2018-11-21
        相关资源
        最近更新 更多