Репозиторий бессерверных приложений: термины, вопросы и ответы

Общие вопросы

Бессерверные приложения устраняют необходимость в выделении, развертывании серверов или других инфраструктур, а также в управлении ими. Они по умолчанию характеризуются высокой доступностью и способны масштабироваться непрерывно и автоматически. Для создания и запуска бессерверных приложений можно использовать один из множества полностью управляемых сервисов AWS, в том числе AWS Lambda для вычислений, Amazon API Gateway для API и Amazon DynamoDB для баз данных.

AWS Serverless Application Repository предлагает постоянно растущую подборку бессерверных приложений, опубликованных AWS, другими разработчикам и партнерами AWS. AWS Serverless Application Repository упрощает развертывание приложений для распространенных примеров использования, таких как мобильные и веб-серверы, обработка потоковых данных, машинное обучение и многое другое, и это позволяет быстро начать работу с платформой бессерверных вычислений AWS.

В настоящее время сервис доступен в следующих регионах: Восток США (Огайо), Восток США (Сев. Вирджиния), Запад США (Сев. Калифорния), Запад США (Орегон), Азия и Тихий океан (Токио), Азия и Тихий океан (Сеул), Азия и Тихий океан (Мумбаи), Азия и Тихий океан (Сингапур), Азия и Тихий океан (Сидней), Канада (Центр), ЕС (Франкфурт), ЕС (Ирландия), ЕС (Лондон) и Южная Америка (Сан-Паулу).

AWS Serverless Application Repository предлагает приложения для навыков Alexa, чатботов, обработки данных, Интернета вещей, обработки потоковых данных в режиме реального времени, мобильных и веб-серверов, анализа тенденций в социальных сетях, адаптации размеров изображений и другие варианты различных издателей на AWS.

Просматривать, развертывать и публиковать приложения в AWS Serverless Application Repository можно бесплатно. Плата за ресурсы приложений, которые вы развертываете, взимается в соответствии со стандартными тарифами AWS.

Приложения, предоставляемые AWS, доступны по лицензии MIT для приложений с открытым исходным кодом, а приложения, опубликованные другими издателями, предоставляются по одной или нескольким лицензиям для приложений с открытым исходным кодом, утвержденным организацией Open Source Initiative (OSI). Сведения о лицензии можно посмотреть на соответствующей вкладке в описании приложения на веб-сайте AWS.

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

Да. AWS Serverless Application Repository позволяет разработчикам публиковать бессерверные приложения, разработанные в репозитории GitHub. При использовании AWS CodePipeline для связи между исходным кодом GitHub и Репозиторием бессерверных приложений AWS процесс публикации упрощается, а его настройка занимает считаные минуты.

Развертывание приложений

Бессерверные приложения развертываются как стеки AWS CloudFormation, что упрощает управление приложением как единым целым. Всем ресурсам в качестве тега присваивается заданное для приложения уникальное имя ресурса Amazon (ARN), с помощью которого можно искать ресурсы в консоли AWS Tag Editor. Для отдельного управления каждым ресурсом можно также использовать существующие инструменты AWS и сторонних поставщиков.

Публикация приложений

Чтобы опубликовать бессерверное приложение, необходимо описать его в формате модели AWS Serverless Application Model (SAM), упаковать с помощью интерфейса командной строки AWS и опубликовать с помощью Консоли управления AWS, интерфейса командной строки AWS или AWS SDK. Для публикации требуется действительный аккаунт AWS. Кроме того, для приложения потребуется предоставить название, описание, ссылку на исходный код и файл LICENSE.txt. Приложения, предназначенные для использования всеми клиентами AWS, должны быть опубликованы в регионе Восток США (Сев. Вирджиния) или в регионе Восток США (Огайо).

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

Если вы хотите взимать плату за использование бессерверного приложения, можно включить AWS Lambda за шлюзом Amazon API Gateway, а затем продавать API как продукт SaaS через AWS Marketplace. Для получения дополнительной информации ознакомьтесь с шагами, которые необходимо выполнить для размещения продукта на AWS Marketplace и для монетизации API с помощью API Gateway.

Использование вложенных приложений

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

Вложенные приложения развертываются как вложенные стеки AWS CloudFormation.

Чтобы добавить приложения, разработанные вами локально, или приложения, которыми с вами поделились через репозиторий Serverless Application Repository, используйте тип ресурса AWS:Serverless:Application. Определить входные данные для вложенного приложения или ожидаемые выходные значения можно с помощью простого синтаксиса AWS SAM. Подробнее см. в документации.

Присвойте уникальное имя каждому вложенному приложению в шаблоне SAM. Ресурсы, созданные вложенным приложением, будут содержать его уникальное имя.

Для упаковки вложенного приложения используйте команду sam package в интерфейсе командной строки SAM. Опубликуйте упакованное приложение в репозитории Serverless Application Repository с помощью интерфейсов API или AWS SDK. Для немедленного развертывания приложения используйте команду sam deploy в интерфейсе командной строки SAM.

Да. Команда sam package в интерфейсе командной строки SAM рекурсивно упаковывает иерархию вложенных приложений. Максимальное количество приложений, вложенных в один шаблон приложения верхнего уровня, равно 199.

Применение вложенных приложений

Бессерверные приложения развертываются как стеки AWS CloudFormation, что упрощает управление приложением как единым целым. Всем ресурсам в качестве тега присваивается заданное для приложения уникальное имя ресурса Amazon (ARN), с помощью которого можно искать ресурсы в консоли AWS Tag Editor. Для отдельного управления каждым ресурсом можно также использовать существующие инструменты AWS и сторонних поставщиков.

Настройте ресурс SAM, указав тип AWS:Serverless:Application и имя ARN приложения, а также все необходимые приложению входные параметры. Подробнее см. в документации.

Вложенные приложения из Serverless Application Repository уже упакованы и готовы к использованию. Перед развертыванием приложения в своем аккаунте убедитесь, что вложенные приложения по‑прежнему вам доступны, воспользовавшись командой sam package в интерфейсе командной строки SAM.

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

Приложения, содержащие одно или несколько вложенных приложений, используют параметр CAPABILITY_AUTO_EXPAND.

Публикация вложенных приложений

Да. Публикация вложенных приложений в Serverless Application Repository ничем не отличается от публикации отдельных приложений. Для публикации вложенных приложений можно использовать консоль AWS, интерфейс командной строки AWS, интерфейс командной строки SAM либо интерфейсы API сервиса Serverless Application Repository.

Предоставление доступа к вложенным приложениям

Бессерверные приложения следуют той же модели, которая используется функциями Lambda. Доступом к бессерверным приложениям в Репозитории бессерверных приложений можно управлять с помощью политик AWS IAM на основе ресурсов. Эти политики позволяют настроить доступ к приложению: частный, для нескольких аккаунтов или публичный.

Если применяется иерархия вложенных приложений, то аккаунту AWS, которому предоставляется доступ к приложению верхнего уровня, должны быть доступны все вложенные приложения.

Предоставление общего доступа к приложениям

Да. Поделиться приложением можно со всеми аккаунтами, которые принадлежат организации AWS. Бессерверные приложения используют ту же модель, что и функции Lambda. Доступом к бессерверным приложениям в репозитории AWS Serverless Application Repository можно управлять с помощью политик AWS IAM на основе ресурсов. Политики можно использовать для настройки следующих вариантов доступа к приложению: частный, публичный, для нескольких аккаунтов или организации. Подробнее о политиках на основе ресурсов для бессерверных приложений см. здесь.

Сначала найдите приложение в консоли AWS Serverless Application Repository, перейдите на вкладку Share (Поделиться) и затем нажмите Create Statement (Создать выражение). Здесь вы можете добавить принципала организации AWS, чтобы предоставить этой организации доступ к приложению. Кроме того, для обновления политик на основе ресурсов и совместного доступа к приложениям в организации можно использовать API репозитория AWS Serverless Application Repository. Подробнее о политиках на основе ресурсов см. в документации здесь.

Нет. Вы можете поделиться приложением только с теми аккаунтами, которые принадлежат той же организации AWS, что и ваш аккаунт.

Предоставление доступа к приложениям в рамках организационного подразделения не поддерживается. Политики можно использовать для настройки следующих вариантов доступа к приложению: частный, публичный, для нескольких аккаунтов или организации.

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

Да. В политике на основе ресурсов можно задать специальные действия. Они будут ограничивать типы операций, которые могут выполнять пользователи с доступом к приложению. Обновление политики на основе ресурсов можно выполнить через API репозитория AWS Serverless Application Repository и консоль. Подробнее о действиях, которые можно задать в политиках на основе ресурсов, см. в документации здесь.

Условия использования

1. Издатели, являющиеся клиентами AWS, могут предоставлять доступ к своим бессерверным приложениям и компонентам AWS («бессерверные приложения AWS») через AWS Serverless Application Repository («репозиторий») либо частным образом (нескольким конкретным аккаунтам AWS), либо всем клиентам AWS, использующим репозиторий в соответствии с процессом публикации в консоли репозитория. Бессерверные приложения AWS, к которым доступ предоставляется частным образом либо для нескольких конкретных аккаунтов AWS, могут храниться как двоичный код или исходный код; бессерверные приложения AWS, к которым могут получить доступ все клиенты AWS, могут храниться как двоичный код или исходный код и должны содержать достаточно сведений для доступа пользователей к исходному коду.

2. Для отправки своих бессерверных приложений AWS в репозиторий издатели должны обладать всеми лицензиями и необходимыми разрешениями или правами. Наряду с бессерверным приложением AWS издатель также обязан отправить в репозиторий условия лицензий, по которым доступно бессерверное приложение AWS, в том числе все требования лицензий для приложений с открытым исходным кодом. Издатель несет ответственность за проверку, оценку и тестирование любого бессерверного приложения AWS до отправки его в репозиторий.

3. Издатель настоящим дает AWS и ее дочерним организациям права на воспроизведение, распространение, предоставление публичного или ограниченного конкретными аккаунтами AWS доступа (в зависимости от настроек), выполнение, передачу, использование и представление в цифровом виде (любым из способов электронного и онлайн‑распространения) бессерверных приложений AWS, размещенных в репозитории.

4. Издатель заявляет и гарантирует, что обладает всеми правами на отправку бессерверного приложения AWS в репозиторий, всеми правами на разрешение загрузки бессерверного приложения AWS из репозитория, а также предоставил все требуемые свидетельства об авторских правах. Издатель обязуется не публиковать бессерверные приложения AWS, содержащие вредоносное ПО или вредоносный контент с намерением или целью нанести ущерб другим пользователям. AWS может по своему усмотрению удалять или отключать бессерверные приложения AWS по этой или любой другой причине.

5. Клиенты AWS обязуются соблюдать условия лицензий (в том числе все авторские права или другие требования) для любого бессерверного приложения AWS, которое они загружают из репозитория.

6. Любой клиент AWS, создающий приложение на основе какого‑либо бессерверного приложения AWS, несет ответственность за определение, обладает ли он достаточным правом на это в соответствии с лицензиями, по которым доступно бессерверное приложение AWS, и обязуется соблюдать все авторские права или другие требования.

7. Все лицензии на бессерверные приложения AWS или другие соглашения издателя определяют отношения исключительно между издателем и клиентами AWS. Ни AWS, ни какая‑либо из ее дочерних организаций не являются частью этой лицензии или другого соглашения, и ни одна из них не несет ответственности и обязательств в соответствии с этой лицензией или другим соглашением. AWS не несет ответственности за соблюдение издателями или клиентами AWS условий лицензии (включая авторские права) или других требований.

8. Бессерверные приложения AWS и любые другие материалы сторонних поставщиков, доступные в репозитории, являются «контентом репозитория». Контент репозитория ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ‑ЛИБО ГАРАНТИЙ, ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, В ТОМ ЧИСЛЕ – НО НЕ ТОЛЬКО – ГАРАНТИЙ ТОРГОВОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ КОНКРЕТНОЙ ЦЕЛИ И СОБЛЮДЕНИЯ ПРАВ ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ИЗДАТЕЛИ, ВЛАДЕЛЬЦЫ АВТОРСКИХ ПРАВ, AWS ИЛИ ЕЕ ДОЧЕРНИЕ ОРГАНИЗАЦИИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГИЕ УБЫТКИ, ВОЗНИКШИЕ ИЗ ИЛИ КАСАЮЩИЕСЯ контента репозитория В СВЯЗИ С НАРУШЕНИЕМ КОНТРАКТА, ПРАВОНАРУШЕНИЕМ ИЛИ КАКИМ-ЛИБО ИНЫМ ОБРАЗОМ, А ТАКЖЕ В СВЯЗИ С ИСПОЛЬЗОВАНИЕМ ИЛИ ЛЮБЫМИ ДРУГИМИ ДЕЙСТВИЯМИ В ОТНОШЕНИИ контента репозитория.

9. Издатели и клиенты AWS при использовании репозитория подтверждают свое согласие с этими условиями, а также с тем, что AWS может время от времени обновлять эти условия.