Я создаю новый ресурс API и методы для существующего шлюза API и лямбды (они создаются Cloud Formation). Через boto3 я пытаюсь добавить новый ресурс и методы. также лямбда-разрешения. Я в состоянии создать все, я мог подтвердить, что разрешения лямбды добавлены в лямбда-консоль. Однако при попытке вызвать API я получаю Внутреннюю ошибку сервера.
Код ниже
client = boto3.client('apigateway', region_name=region)
client.create_resource(restApiId='api_id',parentId='resource_id', pathPart='resource')
client.put_method(restApiId='api_id',resourceId='resource_id', httpMethod='GET', authorizationType='NONE')
uri = "arn:aws:apigateway:{0}:lambda:path/2015-03-31/functions/{1}/invocations".format(region, lambda_arn)
client.put_integration(restApiId='api_id',resourceId='resource_id', httpMethod='GET',type='AWS',
integrationHttpMethod='GET', uri=uri, passthroughBehavior='WHEN_NO_TEMPLATES',
requestTemplates={'application/json': json.dumps({"statusCode":200})})
lambda_client = boto3.client('lambda', region_name=region)
source_arn = "arn:aws:execute-api:{0}:{1}:{2}/*/GET/odm/users8".format(region, account, api_id)
client.add_permission(FunctionName='my_function_name', StatementId="my-statement-id",
Action="lambda:InvokeFunction", Principal="apigateway.amazonaws.com",
SourceArn=source_arn)
client.create_deployment(restApiId='api_id',stageName='prod')
Если я снова вручную интегрирую лямбду с API-шлюзом из консоли API-шлюза, все работает хорошо. Пожалуйста, дайте мне знать, где я не прав.