web-dev-qa-db-ja.com

SAMテンプレートとCloudformationテンプレートの違い

SAMテンプレートとCloudformationテンプレートの違いを理解するのが難しいと感じています。 SAMテンプレートを使用してLambdaなどのサーバーレスアプリケーションを定義できることを知っていますが、Cloudformationテンプレートとどう違うのですか?構文は異なりますか? CloudformationテンプレートでLambda定義を指定できます。だから、私の質問は、なぜ私はSAMを気にする必要があるのですか?雲の形成テンプレートだけで十分ではありませんか?

18
Schleir

CloudFormationの観点から見ると、SAMは変革です。意味:SAMテンプレートは構文的には同等ですが、サーバーレスアプリをより簡潔に定義できます。 SAMテンプレートは、最終的に完全なCFNに展開されます。すでにCFNを知っているが、YAMLコードを減らしたい場合は、SAMが役立つ場合があります。アイデアはあなたの努力を減らすことです。

17
Luis Colon

@Luis Colonが言ったように、SAMは変革です。つまり、SAMテンプレートの上部には、このSAMテンプレートで組み込み関数Transformを実行してCloudFormationテンプレートに変換するようにCloudFormationに通知するTransformステートメントがあります。したがって、すべてのSAMテンプレートは最終的にCFテンプレートに変換されますが、ほとんどの場合、エンドユーザーにとっては、SAMテンプレートを使用する方が簡単です。たとえば、作成している新しいAPIによってトリガーされるLambdaを使用した単純なアプリケーションの場合、SAMテンプレートを使用すると、CloudFormationよりも少ない行数でこれを実現できます。

これを拡張するために、サーバーレスフレームワークも同様に動作します。サーバーレスは、プラットフォーム(AWS、Azureなど)で動作するように設計されています。構文はSAMと非常によく似ており、テンプレートもターゲットプラットフォーム(AWS)のフルバージョンのテンプレート(CloudFormationテンプレート)に変換されます。

0
dalumiller