Ruby AWS 客户端 Lambda 调用 ReadTimeout

rem*_*ada 1 ruby ruby-on-rails aws-lambda

我的 Rails 应用程序使用 AWS SDK v3 调用 lambda 函数,如下所示

        lambda_client = Aws::Lambda::Client.new(client_config)
        lambda_return_value = lambda_client.invoke(
        {
            function_name: function_name,
            invocation_type: 'RequestResponse',
            log_type: 'None',
            payload: generated_payload,
        }
Run Code Online (Sandbox Code Playgroud)

我的大多数 lambda 函数都成功执行,但即使 lambda 完全执行,耗时超过 60 秒的函数也会在 ruby​​ 端导致以下异常

A Seahorse::Client::NetworkingError occurred in background at 2019-07-11 00:47:18 -0500 :
  Net::ReadTimeout
Run Code Online (Sandbox Code Playgroud)

我已阅读文档,但找不到为 lambda 调用设置更长超时的方法。有什么想法如何让 ruby​​ 等待调用而不是超时?

小智 5

您好,Aws::Lambda::Client 默认超时为 60,但您可以在创建新客户端时更改此设置。:http_read_timeout在你的 client_config 中设置

client_config = {
....
http_read_timeout: 100
}

then create new client

lambda_client = Aws::Lambda::Client.new(client_config)
Run Code Online (Sandbox Code Playgroud)

更多参考:https://docs.aws.amazon.com/sdkforruby/api/Aws/Lambda/Client.html

我希望有帮助