Начало работы с Amazon API Gateway

Создать бесплатный аккаунт

Уровень бесплатного пользования Amazon API Gateway включает один миллион вызовов API в месяц в течение 12 месяцев.

Вопрос: «Что такое Amazon API Gateway?»

Amazon API Gateway – это полностью управляемый сервис для разработчиков, предназначенный для публикации, обслуживания, мониторинга и обеспечения безопасности API в любых масштабах. Выполнив несколько простых действий в консоли управления AWS, можно создать API для доступа к данным, функциональному коду приложений или функционалу на стороне серверов, например приложениям, работающим в инстансах Amazon Elastic Compute Cloud (Amazon EC2), другим веб-приложениям или коду, запускаемому сервисом AWS Lambda. Amazon API Gateway выполняет любые задания, связанные с приемом и обработкой сотен тысяч одновременных вызовов API, включая управление трафиком, авторизацию и контроль доступа, мониторинг и управление версиями API. Работа с Amazon API Gateway не требует минимальной оплаты или стартовых вложений. Вы платите только за полученные вызовы API и фактический объем исходящего трафика.

Вопрос: Для чего используют Amazon API Gateway?

Amazon API Gateway – это простой, гибкий, полностью автоматизированный сервис для разработчиков с оплатой по факту использования. Он выполняет все трудоемкие операции по созданию и управлению многочисленными API для серверной части приложений.  Amazon API Gateway обеспечивает быстрый и экономичный запуск новых сервисов, тем самым позволяя вам уделить максимум внимания созданию ключевых бизнес-сервисов.  Amazon API Gateway создан для упрощения работы по созданию и управлению API с учетом ряда аспектов.

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

2. Безопасность. API Gateway предоставляет множество инструментов авторизации доступа к API и функциям контроля работы сервиса. Для авторизации доступа к API сервис Amazon API Gateway позволяет использовать средства администрирования и безопасности AWS, такие как AWS Identity and Access Management (IAM) или Amazon Cognito. Amazon API Gateway может от вашего имени верифицировать подписанные вызовы API с помощью той же последовательности действий, которая используется для API сервисов AWS. Сервис API Gateway применяет специальные средства авторизации, написанные в виде функций AWS Lambda, и помогает верифицировать входящие токены на предъявителя. Это позволяет не заботиться об авторизации при разработке серверного кода.

3. Гибкость. Amazon API Gateway позволяет регулировать трафик с использованием ограничений, помогая серверным процессам выдерживать пиковое возрастание его объема. Этот сервис помогает повысить и производительность ваших API, а также сократить задержку для конечных пользователей путем кэширования результатов вызовов API, что помогает избежать постоянных обращений к серверу.

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

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

6. Сервис, созданный для разработчиков. Amazon API Gateway позволяет быстро создавать API и определять статический контент для их ответов, чтобы упростить разработчикам различного профиля процесс создания приложений и ускорить их выход на рынок. Команды разработчиков, работа которых зависит от ваших API, могут начать разработку, пока вы создаете серверные процессы.

Вопрос: Как начать использовать Amazon API Gateway?

С помощью сервиса Amazon API Gateway вы легко и быстро создадите пользовательские API. Чтобы создать простейший API «Hello World», выполните следующие шаги.

1.  Откройте консоль Amazon API Gateway.

2.  Выберите существующий API REST или создайте новый, введя имя API.

3.  В режиме отображения дерева API REST нажмите «Create Resource».

4.  Выберите имя ресурса, например cars.

5. Выбрав новый ресурс, нажмите кнопку создания нового метода и выберите команду HTTP, связанную с этим методом (например, GET).

6.   Выберите тип интеграции (например, HTTP Proxy) и введите URL-адрес, который должен быть вызван сервисом API Gateway.

7.  Определите способ преобразования запросов и ответов с помощью шаблона привязки или примите настройки по умолчанию для передачи данных всех запросов и ответов без преобразований.

8.  Сконфигурируйте настройки безопасности метода.

9.  Выполните развертывание вашего нового API до требуемой стадии.

10. На странице Stage management выполните настройку кэширования и ограничения запросов.

11. На вкладке Client Platforms в консоли Amazon API Gateway нажмите кнопку загрузки библиотеки Android, SDK iOS или Javascript, которая содержит методы помощника вызова операции sayHello. Библиотека SDK позволяет выполнять вызовы ваших API таким же образом, как и вызовы локального метода. Клиентский SDK автоматически выполняет повторные вызовы и сообщает разработчику о сетевых и других сбоях. Библиотека SDK содержит код, необходимый для аутентификации клиентского приложения при обращении к вашим API.

12. Интегрируйте загруженный пакет SDK в ваше мобильное приложение. Напишите код вызова вашего API. Например, для вызова API getCar(int carId) в приложении iOS код будет следующим:

–(void)getSampleCar

{

NSString *response = [MyServiceClient getCar:1323];

NSLog( @”Response was [%@]”, response );

}

13. Запустите приложение.

Вопрос: Могу ли я создавать конечные точки HTTPS?

Да, все API, созданные с помощью сервиса Amazon API Gateway, поддерживают только конечные точки HTTPS. Amazon API Gateway не поддерживает конечные точки без шифрования (HTTP). По умолчанию Amazon API Gateway назначает для API внутренний домен, который автоматически использует сертификат сервиса Amazon API Gateway. Настраивая API для работы под другим доменным именем, вы можете предоставить для домена собственный сертификат.

Вопрос: Какие типы данных можно использовать в Amazon API Gateway?

API, созданные с помощью Amazon API Gateway, могут принимать любые полезные данные, переданные по HTTP. Как правило, используются форматы параметров строки запроса, заголовков запроса, JSON или XML. Вы можете назначить в качестве ответов на вызовы API контент любого типа, а затем с помощью шаблонов трансформации преобразовывать ответы сервера в нужный формат.

Вопрос: С какими серверными функциями может взаимодействовать Amazon API Gateway?

Сервис Amazon API Gateway может исполнять функции AWS Lambda в рамках аккаунта, запускать конечные автоматы AWS Step Functions, обращаться к адресам HTTP, размещенным в AWS Elastic Beanstalk и Amazon EC2, а также к процессам на основе HTTP вне облака AWS, публично доступным через Интернет. С помощью API Gateway также можно указать шаблон привязки для создания статического контента ответов, имитирующего интерфейс API, пока он не реализован на сервере. API Gateway можно также напрямую интегрировать с другими сервисами AWS. Например, можно открыть метод API в сервисе API Gateway, который будет отправлять данные напрямую в Amazon Kinesis. 

Вопрос: Для каких клиентских платформ Amazon API Gateway может генерировать пакеты SDK?

API Gateway генерирует пользовательские SDK для разработки мобильных приложений на базе Android и iOS и для разработки веб-приложений на JavaScript. Определив API и его модели в API Gateway, с помощью Консоли AWS или API сервиса API Gateway можно сгенерировать и загрузить клиентский пакет SDK.

Вопрос: В каких регионах AWS доступен сервис Amazon API Gateway?

Дополнительные сведения о доступности сервиса Amazon API Gateway по регионам см. на странице Продукты и сервисы по регионам.

Вопрос: Какие действия можно выполнять в консоли Amazon API Gateway?

В консоли Amazon API Gateway можно определять API REST и связанные с ним ресурсы и методы, управлять жизненным циклом API, генерировать клиентские SDK и просматривать метрики API. Для определения планов использования ваших API, управления ключами API разработчиков и установки предельных квот и ограничений можно также использовать консоль API Gateway. Все эти действия можно также выполнять с помощью API сервиса API Gateway.

Вопрос: Что такое API REST?

API REST сервиса Amazon API Gateway – это группа ресурсов и методов, т. е. конечные точки. API REST можно развертывать до различных стадий и клонировать для создания новых версий.

Вопрос: Что такое ресурс?

Ресурс – это типизированный объект, относящийся к домену вашего API. Каждый ресурс может быть связан с некоторой моделью данных и другими ресурсами и отвечать на запросы различных методов.Можно также определить ресурсы как переменные, чтобы перехватывать запросы к различным дочерним ресурсам.

Вопрос: Что такое метод?

Каждый ресурс отдельно взятого API REST может поддерживать один или несколько стандартных методов HTTP. Разработчик определяет команды, которые должны поддерживаться ресурсом (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS), и их реализацию. Например, команда GET ресурса cars должна возвращать список автомобилей. Чтобы подключить все методы внутри ресурса к единому адресу сервера, API Gateway также поддерживает специальный метод «ANY». 

Вопрос: Что такое план использования?
Планы использования назначаются для сторонних разработчиков для ограничения доступа к определенным API, определения ограничений и предельных квот запросов и связывания их с ключами API. Для анализа использования API и создания платежных документов можно извлечь данные использования по конкретным ключам API. Например, можно создать базовый, профессиональный и корпоративный планы. Для базового плана использования можно разрешить, к примеру, 1000 запросов в день и не более 5 запросов в секунду (RPS).

Вопрос: Что такое жизненный цикл API сервиса Amazon API Gateway?

Каждый API REST сервиса Amazon API Gateway может содержать множество стадий. Наличие стадий упрощает жизненный цикл разработки API. Например, после создания API можно выполнить их развертывание до стадии разработки, а после подготовки их к использованию в рабочей среде – развертывание до рабочей стадии.

Вопрос: Что такое стадия?

Стадии сервиса Amazon API Gateway аналогичны тегам. Они определяют готовность к развертыванию до того или иного этапа. Например, вы можете определить стадию разработки и выполнить развертывание API cars до этой стадии. В этом случае ресурс будет доступен по адресу https://www.myapi.com/dev/cars. Можно также задать пользовательские доменные имена, которые будут указывать непосредственно на стадию, что позволит избежать использования дополнительного параметра пути. Например, если адрес myapi.com будет указывать непосредственно на стадию разработки, ваш ресурс cars будет доступен по адресу https://www.myapi.com/cars. Стадии можно настроить с помощью переменных, которые доступны в шаблонах настройки или привязки API.

Вопрос: Что собой представляют переменные стадии?
Переменные стадии позволяют задавать пары ключ/значение для значений конфигурации, связанных с той или иной стадией. Эти значения, аналогично переменным окружения, можно использовать для настройки API. Например, можно задать конечную точку HTTP в качестве переменной стадии для интеграции метода и использовать эту переменную в конфигурации API вместо жестко заданной конечной точки. Это позволяет использовать разные конечные точки для каждой стадии (например для разработки, бета-тестирования и рабочей версии) в одной и той же конфигурации API. Переменные стадии также доступны в шаблонах привязки и могут быть использованы для передачи параметров конфигурации серверу Lambda или HTTP.

Вопрос: Что делать, если развертывание до определенной стадии было выполнено ошибочно?

Amazon API Gateway сохраняет историю развертываний. Это позволяет в любой момент выполнить откат к предыдущей стадии развертывания с помощью API сервиса Amazon API Gateway или консоли.

Вопрос: Можно ли запустить множество версий одного и того же API REST?

Да. Amazon API Gateway позволяет клонировать существующий API. Когда вы будете готовы начать работать над следующей основной версией API, вы сможете продолжать использовать версии 1 и 2 API одновременно.

Вопрос: Можно ли использовать свои определения API Swagger?

Да. Можно использовать наш инструмент импорта с открытым исходным кодом Swagger importer для импорта ваших определений API Swagger в сервис Amazon API Gateway. С помощью инструмента импорта Swagger importer можно создавать и развертывать новые API, а также обновлять существующие.

Вопрос: Как можно монетизировать собственные API в API Gateway?
Вы можете монетизировать свои API в API Gateway, разместив их в качестве продуктов на AWS Marketplace. Для этого сначала необходимо зарегистрироваться в качестве продавца на AWS Marketplace, а затем предоставить свои планы использования API как продуктов для сервиса API Gateway. Здесь можно узнать подробнее о монетизации API.

Вопрос: Как можно задокументировать собственный API в Amazon API Gateway?

API Gateway предоставляет возможность создавать, обновлять и удалять документацию, связанную с каждой частью вашего API, например с методами или ресурсами. Доступ к документации, относящейся к API, можно получить через SDK AWS, интерфейс командной строки или через вызовы RESTful. Можно также редактировать строки документации непосредственно в консоли API Gateway. Документацию можно также импортировать в виде файлов Swagger, как часть API, или отдельно, что позволяет добавлять или обновлять документацию без внесения изменений в определения API. Для документации, импортируемой из файлов Swagger или экспортируемой в них, API Gateway соблюдает требования спецификации Open API.

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

К началу >>

Вопрос: Как управлять доступом к своим API?

Amazon API Gateway позволяет дополнительно указать методы API, которые будут требовать авторизации. Установив требование авторизации для метода, вы сможете использовать AWS Signature Version 4 или собственные средства авторизации для поддержки выбранной стратегии авторизации токенов на предъявителя.

Вопрос: Как работает AWS Signature Version 4?

Вы можете использовать данные для доступа AWS (ключи доступа и секретные ключи) для подписи запросов в ваших сервисах и выполнять авторизацию доступа аналогично другим сервисам AWS. Процесс подписи запроса API в сервисе Amazon API Gateway управляется с помощью специального SDK API Gateway, созданного для вашего сервиса. С помощью Amazon Cognito можно получить временные данные для доступа, связанные с ролью в вашем аккаунте AWS.

Вопрос: Что такое специальное средство авторизации?

Специальные средства авторизации – это функции AWS Lambda. Специальные средства авторизации запросов позволяют авторизовать доступ к API с помощью стратегии авторизации токенов на предъявителя, например OAuth. При вызове API сервис API Gateway проверяет наличие настроенного специального средства авторизации, а затем вызывает функцию AWS Lambda при получении входящего токена авторизации. Сервис Lambda можно использовать для реализации различных стратегий авторизации (например, верификация JWT, вызов провайдера OAuth), которые возвращают политики IAM, используемые для авторизации запроса. Если средство авторизации возвращает действительную политику, сервис API Gateway кэширует политику, связанную с входящим токеном, на срок до 1 часа.

Вопрос: Может ли сервис Amazon API Gateway генерировать ключи API для сторонних разработчиков?

Да. API Gateway может генерировать ключи API и связывать их с планом использования. Вызовы, полученные от каждого ключа API, отслеживаются и записываются в логи Amazon CloudWatch, которые можно активировать для каждой стадии. Тем не менее, использовать ключи API для авторизации не рекомендуется. Ключи API рекомендуется использовать для отслеживания использования API сторонними разработчиками, а для авторизации применять более безопасные механизмы, такие как подпись вызовов API или токены OAuth.

Вопрос: Как устранить неправомерное использование API или предотвратить угрозу такового?

Сервис Amazon API Gateway поддерживает настройку ограничений каждого из методов API. Для каждого метода API REST можно задать ограничение числа запросов в секунду для стандартного уровня нагрузки и для пиковых случаев. Помимо этого, сервис Amazon API Gateway автоматически защищает ваши серверные системы от распределенных атак типа «отказ в обслуживании» (DDoS), выполненных как при помощи поддельных запросов (на прикладном уровне), так и от синхронных атак (на уровне сеансов).

Вопрос: Может ли сервис Amazon API Gateway работать в облаке Amazon VPC?

Нет. Конечные точки Amazon API Gateway бывают только публичными с доступом через Интернет. Запросы прокси к серверным процессам также требуют публичного доступа через Интернет. Тем не менее, в Amazon API Gateway можно генерировать используемые на стороне клиента сертификаты SSL для проверки того, что запросы к серверным системам были отправлены сервисом API Gateway с использованием публичного ключа сертификата.

Вопрос: Можно ли проверить, что вызов сервера был выполнен сервисом API Gateway?
Да. Сервис Amazon API Gateway может генерировать используемые на стороне клиента сертификаты SSL с предоставлением вам доступа к публичным ключам этих сертификатов. Вызовы сервера могут выполняться с помощью сгенерированных сертификатов, и вы можете выполнять проверку вызовов, исходящих от Amazon API Gateway, используя публичный ключ сертификата.

Вопрос: Можно ли использовать сервис AWS CloudTrail совместно с сервисом Amazon API Gateway?

Да. Сервис Amazon API Gateway интегрирован с сервисом AWS CloudTrail, что позволяет получить полную, доступную для анализа историю изменений ваших API REST. Все вызовы API, сделанные к API сервиса Amazon API Gateway для создания, изменения, удаления или развертывания API REST, регистрируются в логах CloudTrail в вашем аккаунте AWS.

К началу >>

Вопрос: Как осуществляется мониторинг API с помощью сервиса Amazon API Gateway?

Сервис Amazon API Gateway регистрирует данные о вызовах, задержке и коэффициенте ошибок API в логах сервиса Amazon CloudWatch в вашем аккаунте AWS. Метрики также доступны в панели управления API REST консоли Amazon API Gateway. API Gateway также измеряет использование сторонними разработчиками, данные доступны в консоли API Gateway и посредством API.

Вопрос: Можно ли настроить предупреждения для метрик Amazon API Gateway?

Да, сервис Amazon API Gateway отправляет в Amazon CloudWatch данные логов и метрики. Вы можете настроить пользовательские предупреждения с помощью консоли Amazon CloudWatch.

Вопрос: Как выполнить настройку метрик для Amazon API Gateway?

По умолчанию Amazon API Gateway отслеживает трафик на уровне API REST. При необходимости можно включить режим подробного отображения метрик для каждого метода вашего API REST с помощью API настройки развертывания или консоли. Подробные метрики также регистрируются в логах Amazon CloudWatch, и их использование оплачивается в соответствии с тарифами CloudWatch.

Вопрос: Можно ли определить, какую версию API используют пользователи?

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

Вопрос: Имеется ли в Amazon API Gateway поддержка логов?

Да. Сервис Amazon API Gateway интегрирован с логами Amazon CloudWatch. Вы можете активировать использование логов для любой стадии вашего API. Для каждого метода API REST можно определить состав регистрируемой в логах информации и полноту данных о запросах и ответах.

Вопрос: Через какой промежуток времени логи становятся доступными?

Логи, предупреждения, коэффициенты ошибок и другие метрики сохраняются в Amazon CloudWatch и становятся доступными в режиме, близком к реальному времени.

К началу >>

Вопрос: Как защитить серверные системы и веб-приложения от сбоев при резком возрастании объема трафика?

Amazon API Gateway позволяет ограничивать прием запросов на разных уровнях, в том числе глобально, а также выполнять регулирование на уровне вызовов сервисов. Значение ограничений можно устанавливать для стандартного режима запросов и для пиковых ситуаций. Например, владелец API может задать для определенного метода API REST ограничение, равное 1000 запросов в секунду, а также настроить API Gateway для обработки всплеска запросов, установив ограничение в 2000 запросов в секунду на несколько секунд. Amazon API Gateway отслеживает число запросов в секунду. Любой запрос, полученный сверх заданного предела, будет отклоняться с кодом HTTP 429 («слишком много запросов»). Клиентские SDK, сгенерированные сервисом Amazon API Gateway, при получении такого ответа автоматически повторяют свои вызовы.

Вопрос: Можно ли ограничить вызовы моего API отдельными разработчиками?
Да. Регулирующие ограничения для отдельных ключей API можно установить с помощью планов использования.

Вопрос: Чем полезна возможность ограничения?

Регуляции путем ограничения позволяет контролировать трафик API, поддерживая тем самым производительность и доступность серверных сервисов.

Вопрос: На каких уровнях сервис Amazon API Gateway может ограничивать входящий трафик API?

Регулирующие ограничения можно задавать на уровне методов. Вы можете отредактировать значения регулирующих ограничений в настройках метода с помощью API или консоли сервиса Amazon API Gateway.

Вопрос: Как применяются правила ограничений?
Прежде всего API Gateway сверяет трафик с лимитом, установленном для аккаунта AWS. Если трафик не превышает лимита аккаунта, API Gateway проверяет лимиты, установленные для стадии или метода. Если трафик не превышает лимитов стадии, то API Gateway применяет лимиты плана использования, установленные в отношении ключей API.

Вопрос: Позволяет ли сервис Amazon API Gateway кэшировать результаты вызовов API?

Да. Для кэширования результатов вызовов API необходимо выделить кэш Amazon API Gateway и задать его объем в гигабайтах. Кэш выделяется под определенные стадии ваших API. Кэширование повышает производительность и сокращает объем входящего трафика сервера. Путем настройки кэширования можно контролировать построение ключа кэша и время жизни (TTL) данных, сохраняемых для каждого метода. Amazon API Gateway также предоставляет API управления, которые позволяют очистить кэш любой из стадий.

Вопрос: Что произойдет, если мой API будет одновременно вызван большим количеством конечных пользователей?

Если кэширование отключено и ограничения приема запросов не применяются, все запросы будут передаваться на сервер сервиса, пока не будут достигнут лимит запросов на уровне аккаунта. Если заданы ограничения приема запросов, то сервис Amazon API Gateway отклонит избыточное количество и передаст на сервер сервиса лишь запросы в пределах установленного лимита. Если настроено кэширование, сервис Amazon API Gateway в течение заданного (настраиваемого) времени будет возвращать сохраненные в кэше ответы на повторяющиеся запросы, которые подпадают под заданные ограничения. Такой баланс между сервером и клиентом позволяет обеспечить оптимальную производительность API для поддерживаемых приложений. Запросы, сброшенные в результате регулирования, автоматически повторяются клиентскими SDK, которые сгенерированы сервисом Amazon API Gateway. По умолчанию в сервисе Amazon API Gateway не настроен кэш для используемых методов API.

Вопрос: Как выполняется масштабирование API?

Сервис Amazon API Gateway действует как прокси по отношению к настроенным вами серверным процессам. Amazon API Gateway автоматически масштабируется, чтобы обработать получаемый вашим API объем трафика. Amazon API Gateway самостоятельно не ограничивает и не регулирует число запросов, и если в консоли API Gateway не настроено регулирование и кэширование, то все запросы передаются серверным процессам.

К началу >>

Вопрос: Как оплачивается пользование сервисом Amazon API Gateway?

Тариф Amazon API Gateway составляет 3,50 USD за миллион вызовов API плюс стоимость исходящего трафика (за гигабайт). При выделении кэша для API действует почасовой тариф. Подробные сведения о стоимости передачи данных и кэширования см. на странице цен API Gateway.

Вопрос: Кто оплачивает вызовы API сервиса Amazon API Gateway, сгенерированные сторонними разработчиками?

Владелец API оплачивает обращения к своим API в рамках сервиса API Gateway.

Вопрос: Если ответ API выдан из кэша, оплачивается ли он как обычный вызов API?

Да. Плата за вызовы API начисляется одинаково, независимо от того, обслуживается ли ответ вашим серверным процессом или выдается из кэша Amazon API Gateway.

К началу >>