1. ホーム
  2. amazon-web-services

Serverless FunctionとLambda Functionの違いとは?

2023-08-04 18:39:09

疑問点

Cloudformation Serverless Transformation で遊んでいるのですが、いつどのように AWS::Serverless::Function または AWS::Lambda::Function . AWSのSAMの例では、なぜかLambdaのバージョンが使われています。これは非常に紛らわしいです。 SAM github . そして、さらに servlerless フレームワーク自体も、実際には nodejs フレームワークです。このようなことで、私は非常に混乱しています。

どのように解決するのですか?

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

AWS Serverless Stack - API Gateway、Lambda、S3など、AWSが提供するサーバーレス技術の組み合わせ。

Lambdaが導入された当初は、Cloudformationを使ってこれらの技術を使ったサーバーレスアプリケーションを開発するのは困難でした。この問題は、API GatewayとLambdaのためにCloudformationを書くことの複雑さに起因していました。

そこで登場したのがServerless Frameworkです。

Serverless Framework - API GatewayとLambdaの定義をserverless.ymlというシンプルなファイルを使って簡略化したオープンソースのDevOpsフレームワークです。Serverless Frameworkは設定よりも規約を使用するため、LambdaやAPI Gatewayなどを定義するのに必要なコードは数行で済みました。その下で、Serverless Frameworkはserverless.ymlで定義された内容に基づいてCloudformationを生成する。また、Serverless Framework は複数のクラウドプロバイダーをサポートしています。

その後、AWSはServerless Frameworkの代替として、CloudFormationの定義の複雑さを軽減するために、AWS SAM(注:AWS SAMは、現時点ではプラグインや拡張機能をサポートするServerlessのようなフレームワークではない)という独自の簡易スクリプト言語を発表しました。

AWS::Lambda::Function は、Lambda関数を定義するためのCloudFormationの構文です。

AWS::Serverless::Function は、Lambda関数を定義するAWS SAMの構文で、内部的にCloudformationでLambda関数を作成します( AWS::Lambda::Function )および関連リソースに対して、AWS SAM実行時の規約によりLambda関数を定義するものです。