Я не могу заставить это работать. Я создаю 2 лямбды через C9. Я использую boto3 для вызова одной лямбды из другой. Похоже, что все работает нормально через C9, но когда я публикую и пытаюсь получить доступ через API-шлюз, я получаю ошибки «Время ожидания запроса конечной точки».
Я знаю, что это не может быть проблемой тайм-аута, потому что я настроил свои файлы yaml так, чтобы у меня было достаточно времени для выполнения, и лямбда-код на данный момент очень прост (только возвращает строку)
вот мой текущий файл yaml. Мне интересно, возможно, есть какие-то разрешения, которые мне нужно включить для API Gateway во втором yaml
Lambda1
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An AWS Serverless Specification template describing your function.
Resources:
api:
Type: 'AWS::Serverless::Function'
Properties:
Description: ''
Handler: api/lambda_function.lambda_handler
MemorySize: 256
Role: 'arn:aws:iam::820788395625:role/service-role/api_int-role'
Runtime: python3.6
Timeout: 30
VpcConfig:
SecurityGroupIds:
- ...
SubnetIds:
- ...
Policies: AWSLambdaFullAccess
Lambda2
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An AWS Serverless Specification template describing your function.
Resources:
api:
Type: 'AWS::Serverless::Function'
Properties:
Description: ''
Handler: api/lambda_function.lambda_handler
MemorySize: 512
Role: 'arn:aws:iam::820788395625:role/service-role/api_int-role'
Runtime: python3.6
Timeout: 15
VpcConfig:
SecurityGroupIds:
- ...
SubnetIds:
- ...
Я просто настроил конечную точку шлюза API непосредственно на Lambda2, и она не доставила проблем Итак ...
API Gateway -> Lambda 2 (работает)
API Gateway -> Lambda 1 -> Lambda 2 (не работает)
По какой-то причине, когда я хочу вызвать Lambda 2 через Lambda 1 через API-шлюз, это не работает.
Вот код, который вызывает 2-ю лямбду
import json
import boto3
def lambda_handler(event, context):
print('call boto3 client')
lambda_client = boto3.client('lambda', region_name='us-east-1')
print('boto3 client called')
print('invoke lambda')
env_response = lambda_client.invoke(
FunctionName='cloud9-apiAlpha-api-TBSOYXLVBCLX',
InvocationType='RequestResponse',
Payload=json.dumps(event)
)
print('lambda invoked')
print('env_response')
print(env_response)
print(env_response['Payload'])
print(env_response['Payload'].read())
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json',
'Access-Control-Allow-Methods': 'POST,GET,OPTIONS,PUT,DELETE',
'Access-Control-Allow-Origin': '*'
},
'body': 'HELLO WORLD!',
'isBase64Encoded': False
}
Теперь, когда я просматриваю логи, они распечатываются ('invoke lambda'), но затем останавливаются и время ожидания