Уровень сложности: 400
Ситуация: у вас имеется CFN шаблон с двумя ресурсами: RDS DB Cluster и EC2 Security Group.
Шаблон выглядит следующим образом:
Sg:
Type: “AWS::EC2::SecurityGroup”
Properties:
# some props...
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: !GetAtt Db.Endpoint.Port
ToPort: !GetAtt Db.Endpoint.Port
Db:
Type: "AWS::RDS::DBCluster"
Properties:
# some props...
VpcSecurityGroupIds:
- !Ref Sg
При валидации этого шаблона вы получите следующую ошибку:
An error occurred (ValidationError) when calling the ValidateTemplate operation: Circular dependency between resources: [Db,Sg]
Что говорит нам о том, что два ресурса имеют блокирующие зависимости друг от друга.
Вопрос: как решить эту ситуацию, при условии что:
1) Разносить SG и кластер БД в разные шаблоны нельзя.
2) Хардкодить порт базы нельзя.
P.S. Завтра выложу ответ.