Cloudformationサーバーレストランスフォーメーションで遊んでいて、AWS::Serverless::Function
または AWS::Lambda::Function
。何らかの理由で、AWSのSAMの例にLambdaバージョンが使用されています。これは非常に紛らわしいです。 SAM github 。そして、実際にはservlerless
フレームワークであるnodejs
フレームワーク自体もあります。これらすべてが私を非常に混乱させています。
まず、これらのそれぞれについて説明します。
AWSサーバーレススタック-AWSが提供する、API Gateway、Lambda、S3などのサーバーレステクノロジーの組み合わせ。
Lambdaが最初に導入されたとき、Cloudformationを使用してこれらのテクノロジーを使用してサーバーレスアプリケーションを開発することは困難でした。この問題は、API GatewayとLambdaのCloudformationの記述が複雑だったためです。
これがサーバーレスフレームワークの出番です。
サーバーレスフレームワーク-serverless.ymlというシンプルなファイルを使用してAPI GatewayとLambdaの定義を簡素化するオープンソースのDevOpsフレームワーク。 Serverless Frameworkは設定よりも規約を使用するため、Lambda、API Gatewayなどを定義するのに数行のコードしか必要ありません。ServerlessFrameworkの下では、serverless.ymlで定義されたものに基づいてCloudformationを生成します。さらに、サーバーレスフレームワークは複数のクラウドプロバイダーをサポートしていました。
その後、AWS SAM(AWS SAMはプラグインと拡張機能をサポートする現在のサーバーレスのようなフレームワークではありません)と呼ばれる独自の簡易スクリプト言語を導入し、サーバーレスフレームワークの代替としてCloudFormationを定義する際の複雑さを軽減しました。
AWS::Lambda::Function
は、Lambda関数を定義するCloudformation構文です。
AWS::Serverless::Function
は、CloudformationでLambda関数を内部的に作成するLambda関数を定義するAWS SAM構文です(AWS::Lambda::Function
)およびAWS SAMの実行時の慣例による関連リソース。
AWS::Serverless::Function
は、 AWS SAM で使用される場合に使用しますが、AWS::Lambda::Function
は、単純な Cloudformation で使用するためのものです。本質的には両方ともLambda関数をモデリングしていますが、フレームワークが異なるため、多かれ少なかれ同じことのために異なる名前を持っています。
概念的には、サーバーレス機能とラムダ機能の間に違いはありません。サーバーレスは、AWSがLambda(およびAPI Gateway)と呼んでいるものの総称です。
サーバーレスフレームワークは、サーバーレスの原則に基づいた単なるソフトウェアプロジェクトであり、AWS Lambda(とりわけ)と連携できます。 ChaliceやZappaなどの他のフレームワークと実際にはそれほど違いはありません(両方ともPythonベースのサーバーレスフレームワーク)。