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

#amazon-web-services #amazon-cloudformation #serverless-framework

#amazon-web-services #aws-cloudformation #Бессерверный фреймворк

Вопрос:

Я использую serverless deploy для создания стека в cloudformation для своего приложения. Стек включает в себя значение, lambda layer которое я могу найти на вкладке cloudformation Ouptputs . В нем есть строка с ключом как CommonLambdaLayerQualifiedArn , значение — это его ARN, description и Export name пусты.

В другом стеке я использую приведенный ниже синтаксис для ссылки на лямбда-слой из предыдущего стека. Это работает нормально, но я не понимаю, почему это работает без экспорта лямбда-слоя в предыдущий стек. Cloudformation поддерживает перекрестную ссылку на стек, которая выполняется путем экспорта значения. Но в вышеуказанном стеке Export name для лямбда-слоя пусто. Как получается, что это работает без перекрестной ссылки на стек? Есть ли другой способ импортировать ссылку?

 ...
layers:
      - ${cf:${opt:lambdaLayerStackName}.CommonLambdaLayerQualifiedArn}
...
  

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

1. Используется ли корзина повторно для обоих стеков? возможно, serverless-layers разрешает зависимость на основе имени стека и его шаблона cloudformation

2. Нет, они используют разные сегменты s3.

Ответ №1:

Используемый вами синтаксис не предусматривает импорта переменных из другого стека. Согласно документу, это просто

ссылка на выходные значения стека CloudFormation в качестве источника ваших переменных для использования в вашем сервисе

Это то же самое, что получение выходных значений из cloudformation с помощью AWS CLI.

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

1. Является ли это reference функцией для serverless или частью cloudformation ?

2. Я пробовал это, но обнаружил, что между reference и importin& есть небольшая разница. Когда я использую import , у него возникает зависимость между стеками, что означает, что это мешает мне удалить стек, от которого зависят другие стеки. С помощью reference я могу удалить стек даже с другими зависимостями. Поэтому мне интересно, действительно ли они одинаковы?