【问题标题】:How to invoke lambda version based on versions provided as input如何根据作为输入提供的版本调用 lambda 版本
【发布时间】:2023-01-23 21:42:22
【问题描述】:

我有一个用例,其中客户端发送具有以下有效负载的请求:

payload = {

identifier: arn:aws:lambda:{region}:{account}:function:{function-name}:{version}
data = ""

}

我想根据标识符调用 lambda。有几点考虑:

  • 有效负载中的数据可以从 Kbs 到几 MB
  • 需要调用的Lambda可以增加

我正在考虑拥有一个 api 网关,它接收来自客户端的请求,然后连接到父 lambda A,后者根据客户端提供的标识符调用其他子 lambda B 和 C。但是我不确定子 lambda 是否可以处理几 Mb 的数据。这也是按以下方式链接 lambda 的好方法吗

我正在研究如何异步调用 lambda,但我找不到任何允许基于版本调用 lambda 的地方。在这方面的任何建议都会有所帮助,谢谢。

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    您可以根据版本从 Lambda 调用另一个 Lambda。

    但是,异步调用的问题是负载大小限制小于您需要的大小。根据the documentation,异步调用的调用负载大小限制为 256 KB,同步调用为 6 MB。

    我不知道你喜欢哪种语言,但是从另一个基于 Python 的 boto3 版本的 Lambda 调用 Lambda 看起来像这样:

    import json
    from boto3 import client as boto3_client
    
    client = boto3_client('lambda')
    
    def lambda_handler(event, context):
        # ...
        client.invoke( 
            # your lambda identifier with version
            FunctionName=your_function_name,
            # to invoke a function asynchronously, set InvocationType to 'Event'
            InvocationType='Event',
            Payload=json.dumps(your_payload)
        )
        # ...
    

    正如the documentation所述,“FunctionName”参数是

    Lambda 函数的名称,版本, 或别名。 […] 你可以附加一个 任何格式的版本号或别名。长度约束 仅适用于完整的 ARN。如果仅指定函数名称, 它的长度限制为 64 个字符。

    invoke 函数接受“FunctionName”参数的以下名称格式:

    Function name – my-function (name-only), my-function:v1 (with alias).
    Function ARN – arn:aws:lambda:us-west-2:123456789012:function:my-function.
    Partial ARN – 123456789012:function:my-function.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2019-10-31
      • 2019-06-25
      • 1970-01-01
      • 2022-10-09
      相关资源
      最近更新 更多