пытаясь разобраться в развертывании довольно сложного приложения с использованием 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.