Вставить CloudFormation ImportValue, аналогично тому, как вы можете вставить параметр? - PullRequest
1 голос
/ 18 апреля 2020

У нас есть огромный шаблон VP C CF, который мы используем для определения среды разработки, подготовки и производства. Одним из этих ресурсов является корзина Common S3 для использования с задачами, не имеющими прямого отношения к конкретному клиенту c. Этот сегмент имеет экспорт с именем VPCCommonBucket, который содержит только имя блока.

Я пытаюсь использовать это значение экспорта в другом стеке, ссылаясь на этот сегмент, создавая пользователя IAM, который имеет доступ ТОЛЬКО к этому сегменту, далее ограничив его одним каталогом IN в этом сегменте.

При использовании параметра я могу сделать что-то вроде этого:

!Sub "arn:aws:s3:::${BucketName}/prefix/*"

Но я не могу найти что-то подобное в отношении использования Fn::ImportValue / !ImportValue. Есть ли способ вставить экспортированную переменную в строку, как я пытаюсь сделать здесь? Или это вопрос необходимости go назад и изменения нашего основного шаблона, чтобы включить ДРУГОЙ экспорт для арны Ковша?

1 Ответ

2 голосов
/ 19 апреля 2020

Вы можете использовать Fn :: ImportValue в сочетании с ! Sub в шаблонах облачной информации. Однако здесь важны ссылочные типы и порядок функций intrinsi c. Согласно документации AWS :

Вы не можете использовать краткую форму! ImportValue, если она содержит! Sub. Вместо этого вы должны использовать полное имя функции.

Поэтому структурируйте свой шаблон как,

Properties:
    Bucket:
        Fn::Sub:
        - 'arn:aws:s3:::${BucketName}/prefix/*'
        - BucketName: !ImportValue VPCCommonBucket

Также, как вы, вероятно, знаете, для использования функции импорта, которую вы должны иметь объявил ресурс выводом в отдельном шаблоне облачной информации. Вот AWS при условии прогулка , если вы застряли.

...