Переименование ресурса в шаблоне CloudFormation - PullRequest
0 голосов
/ 20 мая 2019

Можете ли вы переименовать ресурс в шаблоне CloudFormation?

Допустим, я создал шаблон стека, который создает одну лямбда-функцию.

GetTheFunnyPhraseText:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri: ../Lambda/
    Handler: GetFunnyPhrase.handler
    FunctionName: GetFunnyPhrase
    Role: !GetAtt [ ExecuteFunctionGetFunnyPhrase, Arn ]

По какой-то причине я хочу изменить имя ресурса GetTheFunnyPhraseText на GetFunnyPhrase. Есть ли механизм для изменения имени?

Пара вещей, которые я попробовал ...

  • Изменение имени ресурса в шаблоне. Похоже, это действует как удаление на GetTheFunnyPhraseText и создание GetFunnyPhrase. Проблема здесь заключается в том, что создание ресурса происходит до того, как удаление ресурса приведет к сбою действия, поскольку существует функция Lambda.
  • Создание двух черновиков шаблона. Черновик-1: Измените имя функции для существующих ресурсов. Черновик-2: Удалите старый ресурс (пропустите его определение из шаблона) и добавьте новый ресурс. Выполните черновые шаблоны в последовательности: 1-й, затем 2-й. Это работает. Это просто брутто.

Для людей, которые предлагают не называть функцию, понятно; вставьте булавку в этот фрагмент отзыва на данный момент.

1 Ответ

1 голос
/ 21 мая 2019

Нет! Переименование логического имени ресурса невозможно в Cloud Formation.

Как вы уже тестировали, CloudFormation рассматривает это как удаление старого ресурса и создание нового. Это связано с тем, что идентификаторы логических ресурсов привязываются к физическим идентификаторам ресурсов с помощью CloudFormation после создания. Но для языка шаблонов CloudFormation он распознает только логический идентификатор при синтаксическом анализе шаблона, поэтому любые изменения в нем будут означать, что связанный с ним ресурс будет изменен.

В некоторых типах ресурсов вы можете установить физические идентификаторы самостоятельно, используя определенные свойства имени, которые зависят от ресурса, например, у ресурса AWS::RDS::DBInstance может быть свойство DBInstanceIdentifier, которое будет физическим именем экземпляра db сам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...