Я пытаюсь сослаться на группу безопасности внутри шаблона 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
Надеюсь, это поможет :)