web-dev-qa-db-ja.com

サーバーレス関数とラムダ関数の違いは何ですか

Cloudformationサーバーレストランスフォーメーションで遊んでいて、AWS::Serverless::Function または AWS::Lambda::Function。何らかの理由で、AWSのSAMの例にLambdaバージョンが使用されています。これは非常に紛らわしいです。 SAM github 。そして、実際にはservlerlessフレームワークであるnodejsフレームワーク自体もあります。これらすべてが私を非常に混乱させています。

27
Snickers3192

まず、これらのそれぞれについて説明します。

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の実行時の慣例による関連リソース。

27
Ashan

AWS::Serverless::Functionは、 AWS SAM で使用される場合に使用しますが、AWS::Lambda::Functionは、単純な Cloudformation で使用するためのものです。本質的には両方ともLambda関数をモデリングしていますが、フレームワークが異なるため、多かれ少なかれ同じことのために異なる名前を持っています。

概念的には、サーバーレス機能とラムダ機能の間に違いはありません。サーバーレスは、AWSがLambda(およびAPI Gateway)と呼んでいるものの総称です。

サーバーレスフレームワークは、サーバーレスの原則に基づいた単なるソフトウェアプロジェクトであり、AWS Lambda(とりわけ)と連携できます。 ChaliceやZappaなどの他のフレームワークと実際にはそれほど違いはありません(両方ともPythonベースのサーバーレスフレームワーク)。

5
colde