2016-12-04 3 views
2

Я пытаюсь интегрировать свою функцию лямбда, которая должна запускать async, потому что она занимает слишком много времени с помощью API-шлюза. Я считаю, что вместо того, чтобы выбирать тип интеграции «Лямбда», выберите «Услуга AWS» и укажите Lambda. (Например, this и this, кажется, подразумевают, что.)Api Gateway: Субдомен AWS для интеграции лямбда

Однако я получаю сообщение «AWS ARN для интеграции должно содержать путь или действие» при попытке установить AWS субдомна в ARN моей функции лямбды. Если я установил поддомен только имя моей функции лямбда, при попытке развернуть я получаю «AWS ARN для интеграции содержит недопустимый путь».

Что такое подходящий поддомен AWS для такого типа интеграции?

Обратите внимание, что я мог бы также принять совет this post и настроить поток Kinesis, но это кажется чрезмерным для моего простого использования. Если это правильный способ решить мою проблему, с удовольствием попробуем это.

Edit: Включенный снимок экрана

Screenshot of my AWS API Gateway Integration Request Page

Edit: Пожалуйста, смотрите комментарии ниже неполного разрешения.

+0

Я не понимаю ваше использование фразы "AWS подобласти" в этом контексте. Используется ли этот термин в консоли? Показать скриншот, возможно? Формат ARN выглядит так, будто он будет в форме 'arn: aws: lambda: {region}: {account-id}: function: {function-name}/invocations', где все вещи, не заключенные в' {} ', являются буквальными как показано [здесь] (http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-lambda.html). –

+0

Хорошо, я мог бы быть яснее! Я буду обновлять свой пост, чтобы это отразить. Кроме того, для потомков: установка субдомена AWS в пустую строку и переопределение пути к действию: InvokeFunction позволяет мне развернуть API, хотя и не (пока?) Для его работы. –

+0

Благодарим вас за разъяснение. –

ответ

2

Так что это очень раздражает, чтобы установить, но вот два пути:

  1. Настройка регулярной интеграции Lambda, а затем добавить заголовок InvocationType, описанный здесь http://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html. Значение должно быть «Событие».

    • Это раздражает, потому что консоль не позволит добавлять заголовки, если у вас есть функция лямбда как тип интеграции. Вам нужно будет использовать SDK или CLI или использовать Swagger, где вы можете легко добавить заголовок.
  2. Установите все дело в качестве интеграции AWS в консоли (это то, что вы делаете в этом вопросе), только так вы можете установить заголовок InvocationType в консоли

    • Отпуска подобласть пустой
    • «Использовать путь коррекции» и установите его в /2015-03-31/functions/<FunctionARN>/invocations где <FunctionARN> является полная ARN вашей лямбда-функции
    • метод HTTP POST является
    • Добавить статический напор эр X-Amz-Invocation-Type со значением 'Event'

http://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html

+0

Спасибо! Для потомков я попробовал вариант № 2, и он сработал. Я не пробовал вариант # 1 –

+0

Я исправил имя заголовка, спасибо за указание на это. –