Аутентификация шлюза AWS API с помощью Cognito и Amplify - PullRequest
0 голосов
/ 15 мая 2019

пытаясь разобраться в развертывании довольно сложного приложения с использованием CloudFormation и нескольких безсерверных сервисов.

У меня есть следующее под одной учетной записью / регионом AWS:

  • API Gateway - Пользовательский домен (общедоступный) для обычных пользователей (api.project.com)
  • API Gateway - Пользовательский домен (admin) для пользователей с правами администратора (api.admin.project.com)
  • API-шлюз - каждый пользовательский домен содержит около 5-6 сервисов (правильный термин здесь будет API), в каждом из которых может быть 2-5 функций на сервис
  • Пул Cognito для публичных пользователей
  • Пул пользователей Cognito для администраторов

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

С точки зрения развертывания у меня есть автономный стек CloudFormation, который устанавливает для меня пулы пользователей Cognito, роли IAM и т. Д. Наиболее важной частью, которую мне нужно заблокировать, является эта часть авторизованной роли IAM

- Effect: Allow
  Action: execute-api:Invoke
  Resource: "*"

После развертывания этого стека я развертываю ряд безсерверных служб, которые создают соответствующие идентификаторы в шлюзе API.

Если я вручную отредактирую эту роль на что-то вроде следующего

- Effect: Allow
  Action": "execute-api:Invoke",
  Resource": "arn:aws:execute-api:eu-west-2:*:gyablli82h/*"

Он успешно привязан к определенному API.

Мой вопрос: как я могу развернуть первый стек CloudFormation с правильной ролью без предварительного развертывания сервисов? Потому что им нужно создать идентификаторы API, используемые для роли IAM.

...