Назад | Перейти на главную страницу

AWS CloudFormation - могу ли я использовать Sub внутри GetAtt?

Я пытаюсь сослаться на группу безопасности внутри шаблона CloudFormation.

название группы !Sub '${EnvironmentName}-SG-Private, где EnvironmentName - параметр шаблона.

Однако DBInstance Тип AWS требует GroupId группы безопасности, а не имя группы. Итак, я пытаюсь использовать GetAtt для его получения, но безуспешно:

Fn::GetAtt: [$(Fn::Sub:[${EnvironmentName}-SG-Private]), GroupId]

Эта и различные другие перестановки вызывали ошибки.

Читая документы, это говорит

Для имени логического ресурса Fn :: GetAtt нельзя использовать функции. Вы должны указать строку, которая является логическим идентификатором ресурса.

Если я правильно прочитал, проблема не может быть решена так, как я пытаюсь это сделать. Итак, как я должен ссылаться на эту группу безопасности? Нужно ли мне экспортировать его GroupId во время создания группы?

Внутренняя функция Fn :: GetAtt возвращает значение атрибута из ресурса в шаблоне. Дополнительные сведения о возвращаемых значениях GetAtt для конкретного ресурса см. В документации по этому ресурсу.

Вы можете использовать только Fn::GetAtt с ресурсами в одном шаблоне. Следовательно, вы не можете использовать его для имен, полученных из параметров шаблона.

Если вам нужен GroupId вы можете экспортировать его из шаблона, который создает группу безопасности и Fn::ImportValue это в шаблоне, который в этом нуждается.

Для получения дополнительной информации см. CloudFormation Export / ImportValue

Надеюсь, это поможет :)