Могу ли я использовать синтаксис ресурса AWS Cloud Formation в шаблоне SAM или наоборот?

Недавно я начал изучать AWS Cloud Formation (CF) и AWS Serverless Application Model (SAM). Я обнаружил, что существуют различия в синтаксисе файлов шаблонов. Например, чтобы создать ресурс Lambda в SAM, мы должны объявить что-то вроде этого: -

Resources:
  HelloLambda:
    Type: AWS::Serverless::Function

Принимая во внимание, что в CF мы заявляем следующим образом:

Resources:
  HelloLambda:
    Type: AWS::Lambda::Function

Дело не только в том, что в Lambda есть несколько атрибутов / свойств, которые отличаются в SAM от CF.

Я до сих пор не могу разобраться и запутаться. У меня есть несколько вопросов, и я был бы очень признателен, если бы вы развеяли мои сомнения: -

  1. В чем была потребность в SAM, если CF уже делал великие дела в качестве IaC (Infrastructure as Code) для облака AWS?
  2. Почему кто-то предпочел бы SAM вместо CF?
  3. В конце концов, могу ли я использовать ресурсы SAM (синтаксические) для записи в CF или наоборот, например, могу ли я объявить Lambda, используя следующий синтаксис в обычном шаблоне CF или наоборот: -

Ресурсы: HelloLambda: Тип: AWS :: Serverless :: Function

Ваше здоровье,


person vinod827    schedule 20.09.2020    source источник


Ответы (1)


  1. В чем была потребность в SAM, если CF уже делал великие дела в качестве IaC (Infrastructure as Code) для облака AWS?

Это упрощает разработку, в которой используются лямбда-выражение и шлюз API - очень популярная комбинация. Выполнение тех же действий в чистом CFN потребует дополнительных действий (например, ручной настройки методов интеграции), которые многие не хотят или не должны знать, как это сделать. Также в SAM есть настраиваемый инструмент командной строки, который помогает запускать и тестировать шлюз lambda + api локально и предоставляет количество тестовые события, недоступные через CFN, или скрывает сложности, связанные с развертыванием ваших функций через CodeDeploy. Вы не можете сделать это легко, используя только CFN.

  1. Почему кто-то предпочел бы SAM вместо CF?

Очень полезна возможность легко тестировать вещи локально в сочетании с оптимизированной интеграцией с CodeDeploy. Так что это хорошо для людей, которые хотят уделять больше внимания написанию кода для своих приложений, а не тратить много времени на настройку всего с нуля, что больше относится к работе DevOps.

В конце концов, могу ли я использовать ресурсы SAM (синтаксические) для записи в CF или наоборот, например, могу ли я объявить Lambda, используя следующий синтаксис в обычном шаблоне CF или наоборот: -

Шаблоны SAM могут содержать ресурсы CFN, но не наоборот. Ресурсы раздел в SAM:

  1. Этот раздел аналогичен разделу Ресурсы шаблонов AWS CloudFormation. В шаблонах AWS SAM этот раздел может содержать ресурсы AWS SAM в дополнение к ресурсам AWS CloudFormation.
person Marcin    schedule 20.09.2020