AWS lambda nodejs runtime:io:在封闭管道上读/写

时间:2017-11-03 06:23:02

标签: node.js amazon-web-services aws-lambda aws-sam-cli

我正在尝试从myFunc函数执行几个异步请求。第一个调用lambda成功,第二个调用

失败
resolveEndpoints()

处理程序是:

2017/11/03 17:13:27 Function oauth.callbackHandler timed out after 3 seconds

2017/11/03 17:13:27 Error invoking nodejs6.10 runtime: io: read/write on closed pipe

如果我删除exports.callbackHandler = async (event, context, callback) => { context.callbackWaitsForEmptyEventLoop = false; let endpoints: any = await resolveEnpoints(); config.accessTokenUri = endpoints.token_endpoint; let tokenRequestPath = `http://localhost:7001${event.path}?code=${event.queryStringParameters.code}&realmId=${event.queryStringParameters.realmId}&`; let accessToken: any = await getAuthToken(tokenRequestPath); callback(undefined, {statusCode: 200, body: JSON.stringify(accessToken.data)}); }; 电话,则resolveEndpoint()成功。

getAuthToken()返回一个请求完成后解析的承诺。

resolveEndpoint()

1 个答案:

答案 0 :(得分:3)

Lambda的默认超时时间是3秒,而且我在单个HTTP调用之外达到了这个目标。只需要更新SAM模板就可以增加需要调用多个第三方服务的处理程序的超时时间。

更新模板,超时设置为10秒,允许处理程序运行完成。

AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Description: |
  Data service

Resources:
  OAuthCallback:
    Type: AWS::Serverless::Function
    Properties:
      Runtime: nodejs6.10
      CodeUri: ./build/services/quickbooks
      Handler: oauth2.callbackHandler
      Timeout: 10
      Events:
        AuthRoute:
          Type: Api
          Properties:
            Path: /oauth2/callback
            Method: get