Как создать API с помощью Lambdas и API Gateway

1656577814 kak sozdat api s pomoshhyu lambdas i api gateway

Вы хотите получить доступ к своей базе данных, управлять системой или выполнить некоторый код из другого веб-сайта? API может сделать все это за вас, и их удивительно легко настроить.

API – это URL, который вы можете выполнить GET, PUT, POSTи DELETE запросы на управление другой службой. Если вы создадите его самостоятельно, вы можете создать эти API, чтобы делать все, что захотите, за кулисами. Распространено обеспечение управления базой данных, выполнения действий по сторонним API (API-ception) или управление другой службой.

Зачем использовать API?

Вы можете спросить, зачем нам API, когда мы можем получить доступ к базе данных напрямую или запустить код на веб-сайте. Существует несколько значимых преимуществ API перед запуском кода на вашем веб-сайте.

Скройте ключи и токены доступа

Это, возможно, то важнейшая причина использовать API. Если вы получаете доступ к базе данных, вам понадобятся данные базы данных, а также данные пользователя и маркера/ключа доступа.

Если вы получаете доступ к базе данных с веб-сайта, все эти детали у вас будут в исходном коде вашего сайта. Это есть действительно плохая практика, поскольку любой может заглянуть в систему контроля источников и украсть ваши данные. Звучит не так уж плохо, но что, если это ваши аккаунты AWS или Google Cloud Compute? Люди, имеющие доступ к вашему сайту, могут использовать их, чтобы запускать все, что захотят в вашем аккаунте, оставляя вам огромный счет.

Запуск этих процессов из-за API означает, что никто не может видеть ни одну из частных деталей — они не могут украсть их для использования в проектах. Если вы сохраняете код своего веб-сайта в GitHub или другом общедоступном контроле источников, это также означает, что они там не отображаются.

Запустите код в другом месте

Что делать, если вы не используете никакие другие службы и не используете никаких секретных ключей? Если вы используете большой или сложный фрагмент кода или если вы не хотите, чтобы кто-то другой читал ваш код и узнавал, как он работает, вы все равно можете использовать API.

Контролируйте, кто имеет доступ

mobDuXc3Fnbib2-rOnW7ZOY4n7HMm8iUqOhq
Закрытая, закрытая зеленая дверь.

Предоставление API также позволяет ограничить, кто может получить доступ к базе данных или запустить код. Вы можете сделать это, требуя ключ API. Этот ключ используется для идентификации пользователя, который делает запрос, а затем разрешает или отклоняет запрос.

Это можно использовать, чтобы разрешить только нескольким людям получить доступ к службе или даже создать систему уровней. Именно так работают многие платные API. Всем предоставляется бесплатный, но ограниченный доступ, а затем вы разрешаете оплату за доступ к лучшим частям услуги или просто большее количество запросов.

Создание API

Теперь, когда мы знаем некоторые причины, почему мы можем захотеть создать API, давайте сделаем именно это. Мы собираемся использовать API Gateway и AWS Lambdas, потому что это проще, чем запуск сервера. Убедитесь, что у вас есть аккаунт AWS и вы вошли в систему.

Настройка шлюза API

Мы начнем с того, что откроем службу API Gateway и нажмем «Начать». На следующей странице нам нужно выбрать «Новый API» вариант. Затем мы дадим нашему API название и описание и нажмем «Создать API».

V3XpqCcqXz7t2yywu6dOwQK8Lfhhdhl9TCdx

Нажав «Создать API» переведет нас на страницу конфигурации API.

Первое, что нам нужно сделать, это добавить ресурс в API. Использование ресурсов позволяет группировать подобные вызовы API вместе с помощью вложенных косых черт. Мы собираемся создать API, который мы сможем использовать, чтобы давать рекомендации по просмотру. Поэтому мы можем иметь /tv-shows и /movies как два базовых метода.

Нажмите на раскрывающееся меню «Действия» и выберите «Создать ресурс».. Назовите свои ресурсы, убедившись, что оба они находятся в пути «/».

pUpkZpJGX095a02J0Wx3GuSGO1khay6YVogm
RZpG3Q2QcVqjG4k8lUfemrEKEFR-3Aa5RHJw

Мы хотим, чтобы пользователи могли перейти к «/movies/horror» или «/tv-shows/comedy», и мы можем сделать это, добавив параметры пути. Это переменные, которые мы можем получить доступ внутри API. Чтобы создать один из них, нам нужно установить для ресурса значение {resourceName} как показано ниже. Это можно сделать для телешоу и фильмов.

Y09YGFKPy2bamMfzHjWqJCsLOchP3NyLBTKs

Теперь, когда у нас есть длина и жанр, мы можем создать методы для получения и добавления данных в таблицу. Выберите один из {genre} ресурсы, нажмите «Действия» и потомСоздать метод». Это создаст небольшое серое поле под ресурсом, которое мы можем нажать. Мы начнем с а GET и выберите его и нажмите кнопку галочки.

Здесь мы решаем, как обработать запрос. Мы собираемся использовать AWS Lambdas, но нам нужно создать их, прежде чем мы сможем завершить настройки методов.

Создание лямбда

Мы можем ответить на эти запросы API с помощью Lambdas, что отлично, поскольку они запускаются только тогда, когда нам это нужно. Их тоже очень легко создать, поэтому мы сейчас это сделаем.

В консоли Lambda нажмите кнопку «Создать функцию». Тогда мы сможем назвать нашу первую функцию API movieAPI, настройте его на запуск Node 8.10 и «Создать новую роль из шаблонов». Мы назовем нашу новую роль «tableAPI» и добавим «Простые разрешения микросервиса» как единственный шаблон.

Весь код можно найти на https://github.com/SamWSoftware/Projects/tree/master/movieAPI

Нажатие кнопки Создать функцию переведет нас в окно Лямбда. Прокрутите вниз в раздел «Код функции», и мы изменим код. Первое, что мы собираемся сделать, это проверить, какой метод запроса был использован.

exports.handler = async (event) => {
    console.log(event);
    if (event.httpMethod === 'PUT'){
        let response = putMovie(event)
        return done(response);
    } else if (event.httpMethod === 'GET'){
        let response = getMovie(event);
        return done(response);
    }
};

Мы начнем с написания getMovieфункция. Эта функция начнется с получения genreиз параметров пути. Именно здесь использование параметров пути может упростить этот процесс.

const getMovie = event => {
    let genre = event.pathParameters.genre;
    return;
}

С жанром, который спросил пользователь, мы получим рекомендуемый фильм для них. Я скопировал их из 25 лучших фильмов каждого жанра и добавил их к объекту с жанром как ключом. Затем мы можем получить фильм, получив ценность запрашиваемого жанра.

const movies = {
    action: 'Desperado (1995)',
    fantasy: 'Inception (2010)',
    ...
    horror: 'Black Swan (2010)'
}

const getMovie = event => {
    let genre = event.pathParameters.genre;
    return movies[genre];
}

Это означает, что название фильма передается в done функция. Эта функция используется, поскольку API Gateway ожидает возврат данных в очень конкретном формате. Эта функция преобразует строку в нужный формат.

const done = response => {
    return {
        statusCode: '200',
        body: JSON.stringify(response),
        headers: {
            'Content-Type': 'application/json',
            'Access-Control-Allow-Methods': '*',
            'Access-Control-Allow-Origin': '*'
        }
    }
}

Мы можем сделать очень похожий предмет для a tv-showsAPI функция, повторное использование большей части кода Просто поменяйте названия функций и предложения фильмов на телешоу.

Подключение Lambdas к шлюзу API

Вернувшись в API Gateway, мы можем добавить наши новые Lambdas к методам, созданным ранее. Нам нужно убедиться, что «Использовать интеграцию Lambda Proxy» выбрано, и мы указываем на правильную лямбду. Нажав «Сохранить», у вас будут запрошены разрешения на доступ к этой лямбде, на которую мы можем дать «ОК».

XBHJhtze5MscnYcFHruORyPAtD93M26anNO9

Сделайте это для GET методы на обоих ресурсах, и мы можем начать тестировать. Выбор методов теперь должен показать диаграмму выполнения метода. Это звучит сложно, но единственное, что нам нужно, это «ТЕСТ» См. раздел.

Нажав TEST, откроется новый раздел, где мы можем испытать API. Здесь можно настроить многое, но единственное, о чем мы заботимся, это Path {genre}. Нам нужно установить для этого жанр, который мы просим. Если ввести «вестерн» как жанр и нажать кнопку «Тест», получим ответ:

i34jkqAn9b7XhoR6nAr2kpeuGCMX5gGbXbjA

У нас работает наш API! Теперь нам нужно убедиться, что у других людей есть доступ к нему. Для этого есть два шага.

  1. Включаем CORS — Выберите «{жанр}» ресурс, а затем нажмите «Действия» и «Включить CORS». Оставьте все по умолчанию и, когда спросят, нажмите «Да, заменить существующие значения».
  2. Разверните наш API – нажмите «Действия» иРазвернуть API». Установите этап развертывания на «[New Stage]», а затем дайте своей сцене название, например «production» илиобщественный».

После развертывания вашего API вы должны получить такой URL-адрес. Это база вашего API. Вы можете добавить /movies/western чтобы получить доступ к своему API.

https://{uniqueCode}.execute-api.eu-west-1.amazonaws.com/production

URL-адрес вашего API может закончиться следующим образом:

https://fds1fe31fes476s.execute-api.eu-west-1.amazonaws.com/production/movies/western

Вот и все для этой статьи. В следующем мы подключим этот API к таблицам Dynamo и позволим пользователям голосовать за любимые фильмы в каждом жанре. Вы можете прочитать статью ниже.

Создание API с Lambdas и API Gateway.
В первой части мы создали API, который передавал запросы Lambda, который возвращал лучшее телешоу или фильм…
medium.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *