Как разделить зависимости между регионами?

#amazon-web-services #aws-cdk

Вопрос:

CDK не поддерживает межрегиональные ссылки:

 Error: Stack "Sandbox/us-east-2/1" cannot consume a cross reference from stack "Sandbox". Cross stack references are only supported for stacks deployed to the same environment or between nested stacks and their parent stack.
 

Однако некоторые ресурсы (например, базы данных) по своей сути являются глобальными в использовании. Как мы управляем глобальными ресурсами и их межрегиональными зависимостями с помощью CDK?

Комментарии:

1. Что ты имеешь в виду? Облачная информация-это только региональная служба. В CloudFormation нет такого понятия, как межрегиональная привязка. У вас есть пример того, что вы хотите сделать?

2. У меня есть глобальная база данных DocDB, ECR и VPC, определенные в глобальном стеке. Затем у меня есть вложенные региональные стеки, которые получают эти глобальные ресурсы в качестве реквизита. Как я могу аналогичным образом ссылаться на глобальные объекты, необходимые для настройки региональных ресурсов?

3. Извините, но ваш вопрос не совсем ясен. Что вы подразумеваете под «глобальным стеком»? Облачная информация является только региональной.

4. Глобальный означает, что на ресурсы, определенные в стеке, следует ссылаться глобально. Например, база данных обычно используется совместно в нескольких регионах.

5. Как все прошло? Вы все еще не знаете, что вы можете сделать вместо межрегиональных ссылок, которые не поддерживаются в CloudFormation?

Ответ №1:

Невозможно сделать «глобальную» ссылку в простой облачной информации (CFN). CFN-это региональная служба, и вы не можете ссылаться на экспортированные выходные данные из одного стека в стеке, развернутом во втором регионе.

Для этого есть два решения:

  1. «Глобальные» ресурсы должны быть переданы в другие стеки в качестве входных параметров.
  2. Создайте пользовательский ресурс для извлечения выходных значений из стеков в других регионах.

Комментарии:

1. В настоящее время я передаю их в качестве реквизитов (я думаю, что это то, что вы подразумеваете под входными параметрами), но компилятор обнаруживает зависимости между стеками

2. @twinlakes Большинство ресурсов AWS являются региональными, поэтому, даже если вы передадите их в качестве параметров, вы не сможете использовать их в разных регионах. Для их использования вам придется создавать собственные ресурсы. Но, вероятно, проще перепроектировать ваше решение, так как оно не поддерживается AWS, если оно зависит от межрегиональных ссылок.

3. Как насчет изначально глобальных ресурсов, таких как база данных или VPC-концентратор, на который я настроил просмотр?

4. Облачная информация @twinlakes является региональной. Базы данных Rds также являются региональными, как и vpc. Основной глобальной услугой является IAM.

5. Тогда как сервисы AWS реализуют региональную отказоустойчивость, если вы не можете совместно использовать базу данных между несколькими интерфейсными регионами?