Бессерверная структура: добавление зависимостей для ресурсов 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, но получили ошибку неподдерживаемого свойства.

Какие возможны варианты?

  1. Есть ли что-нибудь похожее на DependsOn в бессерверной среде?
  2. Можно ли с этим справиться, используя вложенные стеки?

1 ответ

Один из способов справиться с этими проблемами зависимости в CloudFormation - просто использовать полный ARN в зависимом ресурсе, а не использовать ссылку на исходный ресурс (из которого ARN будет выводиться автоматически). Это работает, когда вы диктуете ARN исходного ресурса (например, для сегментов S3, ролей IAM), но не работает, когда ARN ресурса имеет некоторый автоматически сгенерированный компонент, например, дистрибутивы CloudFront.

Я предполагаю, но не знаю наверняка, что это также будет работать для Serverless.