Бессерверная структура: добавление зависимостей для ресурсов AWS
Мы используем бессерверную структуру для наших развертываний.
Сначала мы хотим создать роль IAM.
Эта роль IAM будет использоваться при создании другого ресурса AWS.
Как мы можем гарантировать, что роль Lambda создается до ее использования в создании другого ресурса?
Вот фрагмент файла serverless.yml
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
AWS: arn:aws:iam::${self:custom.accountId}:role/lambdaRole1
Service:
- lambda.amazonaws.com
Action: sts:AssumeRole
Этот lambdaRol1 необходимо создать перед созданием этого нового ресурса (это еще одна роль IAM).
Мы попытались использовать DependsOn, но получили ошибку неподдерживаемого свойства.
Какие возможны варианты?
- Есть ли что-нибудь похожее на DependsOn в бессерверной среде?
- Можно ли с этим справиться, используя вложенные стеки?
1 ответ
Один из способов справиться с этими проблемами зависимости в CloudFormation - просто использовать полный ARN в зависимом ресурсе, а не использовать ссылку на исходный ресурс (из которого ARN будет выводиться автоматически). Это работает, когда вы диктуете ARN исходного ресурса (например, для сегментов S3, ролей IAM), но не работает, когда ARN ресурса имеет некоторый автоматически сгенерированный компонент, например, дистрибутивы CloudFront.
Я предполагаю, но не знаю наверняка, что это также будет работать для Serverless.