在我们收到来自端点的有效响应之前,由于连接已关闭而无法调用 lambda

问题描述

尝试从运行 Python 程序的 AWS EC2 实例调用 AWS Lambda。 EC2 实例和 lambda 都在同一个 VPC 上。

from botocore.config import Config

adv_client_config = Config(read_timeout=60,connect_timeout=60,retries={'max_attempts': 0})

self.client = boto3.client(
            'lambda',region_name='us-east-1',config=adv_client_config
        )
response = self.client.invoke(
              FunctionName=function_name,InvocationType=invoke_type,Payload=json.dumps(request)
           )

InvocationType 是“RequestResponse”。仅当 'max_attempts' 设置为 0 时才会看到此行为。如果将其设置为某个值,则不会看到此行为。

调用 lambda 后 100 毫秒内调用失败。

解决方法

您的 lambda 需要很长时间才能冷启动。您可以使用 Provisioned Concurrency 保持温暖。您需要弄清楚为什么您的 lambda 从冷启动启动需要花费如此多的时间,以及您是否可以对此采取任何措施。