Конечная точка API лямбда-функции AWS - ошибка 403 и 415 - PullRequest
0 голосов
/ 02 января 2019

У меня есть настроенная лямбда-функция AWS, и я пытаюсь выполнить ее с внешнего интерфейса. Он отлично работает в браузере и возвращает ожидаемый ответ. Когда я пытаюсь набрать его из localhost, я получаю 403. Я пытался выполнить шаги, обозначенные здесь и здесь (за исключением того, что некоторые комментаторы сдули весь мой API) упоминается), безрезультатно. Я переворачиваю после всех изменений. После включения CORS я перестаю получать 403, а вместо этого получаю 415. Не знаю, что делать дальше, поскольку в журналах Cloudwatch ничего нет.

Еще немного подробностей: я использую лямбду:

enter image description here

У меня есть метод GET («Опции» появились после того, как я включил CORS):

enter image description here

Вот что происходит, когда я нажимаю «Включить CORS»:

enter image description here

Поскольку на скриншоте оно обрезано, вот полный список заголовков: «Content-Type, X-Amz-Date, Authorization, X-Api-Key, X-Amz-Security-Token»

Вот мой метод ответа: enter image description here

Вот как я называю свою лямбду на переднем конце:

sendVerificationCode() {
    let data = {
      paramOne: x,
      paramTwo: 'string',
      paramThree: 'string'
    }

    return this.get('ajax').request('https://something.execute-api.us-east-1.amazonaws.com/beta/', {
      host: 'https://something.execute-api.us-east-1.amazonaws.com',
      method: 'GET',
      data: data
    }).then((response) => {
      console.log('response', response)
    });
  }

Вот ошибки, которые я получаю. Первая ошибка перед включением CORS: enter image description here

И после того, как я включил CORS: enter image description here

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Итак, в конце концов выяснил это Content-Type запроса, который я делал на внешнем интерфейсе, не был Application/JSON, но мой шаблон сопоставления запросов на интеграцию был. Я решил это, добавив в свой запрос следующее:

sendVerificationCode() {
  let data = {
    paramOne: x,
    paramTwo: 'string',
    paramThree: 'string'
  }

  return this.get('ajax').request(
    'https://something.execute-api.us-east-1.amazonaws.com/beta/', 
    {
      host: 'https://something.execute-api.us-east-1.amazonaws.com',
      method: 'GET',
      data: data,
      contentType: 'application/json; charset=utf-8',
    }
  ).then((response) => {
      console.log('response', response)
  });
  
}
0 голосов
/ 02 января 2019

CORS немного привередлив с API-шлюзом, пробовали ли вы его включить как в корне, так и в методе?Это ранее работало для меня.Также вы можете попробовать загрузить javascript SDK для вашего проекта API-шлюза и использовать его для перехода по маршруту, поскольку он устанавливает для вас все правильные настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...