我试图使用pythonsdk从另一个lambda调用lambda函数。两个lambda函数属于同一个VPC。触发器lambda只包含一个调用第二个lambda(加载程序开发)的python脚本。loader_development lambda的APIGateway是私有的,它配置了一个资源策略,拒绝访问不属于该特定VPC的所有IP地址。在
我在触发器lambda中的Python脚本是:
from __future__ import print_function
import json
import logging
import os
from urllib2 import urlopen,Request,HTTPError
import boto3
logger = logging.getLogger()
logger.setLevel(logging.INFO)
region = os.environ['AWS_REGION']
def lambda_handler(event, context):
invokeLambda = boto3.client('lambda', region_name = 'us-east-1')
request = {'resource':'/bucketstatus/latest','path':'/bucketstatus/latest','httpMethod':'GET'}
invoke_response = invokeLambda.invoke(FunctionName='loader_development',
InvocationType='RequestResponse',
Payload=json.dumps(request))
print(invoke_response['Payload'].read())
logger.info('Process Complete')
所以/bucketstatus/latest
是一个GET
请求,这个端点驻留在loader_development lambda的APIGateway(它是私有的)。loader_development lambda是一个spring引导应用程序,而trigger lambda是一个独立的lambda,它只有一个python脚本来调用loader_development lambda的端点来获取响应。在
在测试这个脚本时,它给出一个500的状态和一个内部服务器错误。 错误:
^{pr2}$奇怪的是,当我试图调用其他lambda(微服务)时,请求得到处理,状态为200。示例lambda也在VPC内部,并且有一个专用APIGateway。在
我真的不知道我错过了什么。任何帮助将不胜感激!在
GitHub解决方案,我收到这个异常,因为我没有在请求对象上包含
requestContext
属性。所以我将请求对象修改为:我能够得到正确的答复,状态代码为200。在
相关问题 更多 >
编程相关推荐