【问题标题】:AWS Lambda Invoke Function not return, calling invoked function in loopAWS Lambda调用函数不返回,循环调用调用函数
【发布时间】:2018-01-12 07:35:38
【问题描述】:

我有一个 AWS Lambda 函数 作为“Get-All-Project-Sessions”和 API Getaway。如果我从 API Rest 客户端尝试,则返回响应。

  1. 我创建了一个新的 AWS Lambda 函数-“Dev-Test-Lambda-Invoke”,
  2. 我从中调用“Get-All-Project-Sessions”。

代码:

import boto3
import json


def get_all_projects_session():
    print("In function...")
    client = boto3.client('lambda')
    res = client.invoke(
        FunctionName='cbr-all-projects-sessions',
        InvocationType='RequestResponse',
        Payload=json.dumps({'httpMethod': 'GET'})
    )
    print(res)
    print("HTTPStatusCode: {}".format(res["ResponseMetadata"]["HTTPStatusCode"]))
    print(res['Payload'])
    response_pauload = res['Payload'].read()
    return response_pauload

def lambda_handler(event, context):
    try:
        print("In Lambda Handler")
        response = get_all_projects_session()
        print(response)
        return response
    except Exception as err:
        print("Exception1: {}".format(err))
        return("Exception: {}".format(err))

    return 'Hello from Lambda'

运行代码后,我收到 Time Out 作为响应,因为 Lambda 函数在 300 sec 之后超时,即 5 minutes

我检查了 Cloud Watch Log 中的“Dev-Test-Lambda-Invoke”Lambda 函数,它只显示了我在代码中打印的两条语句,它们是 "In Lambda Handler" and "In function..."

我检查了 Cloud Watch Log 中的“Get-All-Project-Sessions”Lambda 函数,该函数在代码之后在无限循环中运行,然后再次启动。但是当我从 RESTClient 调用 API 时,“Get-All-Project-Sessions”会返回正确的响应。

有什么想法吗??

【问题讨论】:

    标签: python amazon-web-services aws-lambda aws-api-gateway boto3


    【解决方案1】:

    要调用 lambda 的 boto3 客户端,您应该提及区域名称:

    client = boto3.client('lambda', 'us-east-1') 
    

    然后继续执行您的代码。

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 2019-03-22
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 2017-10-14
      相关资源
      最近更新 更多