Динамически генерировать ресурсы облачной информации с использованием CDK - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь динамически генерировать подписки SNS в CDK на основе того, что мы имеем в сопоставлениях. Какой лучший способ сделать это здесь? У меня есть сопоставления, которые по существу отображают SNS topi c ARN, на которые моя очередь хочет подписаться в каждом регионе / стадии. Отображение выглядит примерно так:

"Mappings":
  "SomeArnMap":
    "eu-west-1":
      "beta":
      - "arn:aws:sns:us-west-2:0123456789:topic1"
      "gamma":
      - "arn:aws:sns:us-west-2:0123456789:topic2"
      - "arn:aws:sns:us-west-2:0123456789:topic3"

Как мне написать код в CDK, который создает подписку для каждого элемента в списке здесь? Я не могу заставить работать l oop, потому что мы не знаем размер списка до развертывания. После синтеза CDK он просто дал бы мне токены типа #{Token[TOKEN.264]} для моей топи c ARN.

Это вообще выполнимо в CDK / CloudFormation? Спасибо.

1 Ответ

0 голосов
/ 04 марта 2020

Поскольку токены не разрешаются во время выполнения кода aws-cdk, обычно вы можете использовать функции cfn intrinsi c, которые объявляют некоторую операцию сортировки токена в вашем шаблоне. Они доступны в @aws-cdk/core.fn. Тем не менее, cfn не имеет встроенных функций для зацикливания значений, а только выбирает значения из списка / карты.

Если ваш cdk имеет эти отображения в своем шаблоне вывода, и вы просто хотите извлечь значение для ссылки при сборке другая конструкция Fn.findInMap Я считаю, что должен это сделать.

const importedTopic = Sns.Topic.fromTopicArn(this, "ImportedTopicId", Fn.findInMap("SomeArnMap", "eu-west-1", "beta"));
importedTopic.addSubscription(SomeSqsQueueOrSomething);
...