[2024/11/06 追記] サポートするプログラミング言語 の AWS Lambda の記載に Node.js が不足していたため追記し、Azure Functions も Node.js と記載するのが適切と判断し表現を改めました。
Azure Functions と AWS Lambda は、どちらもサーバーレスコンピューティングの主要サービスであり、多くの類似点がありますが、重要な違いも存在します。
この比較では、機能面、性能面、そして特徴的な機能に焦点を当てて両サービスを詳細に比較します。
機能面の比較
サポートするプログラミング言語
- Azure Functions: C#, Java, PowerShell, Python, Node.js (JavaScript, TypeScript) 1
- AWS Lambda: C#, Java, PowerShell, Python, Node.js (JavaScript, TypeScript), Go, Ruby 2
トリガーとバインド/イベントソース
性能面の比較
最大実行時間
-
Azure Functions: 従量課金プランであれば 10 分、それ以外の構成なら無制限 7
- 無制限な場合、固定料金のかかる構成になる (ただ、プレビュー中の Flex 従量課金プランに希望がある)
- AWS Lambda: 15 分 8
最大メモリ割り当て
その他
個人的に、非常に大きな特徴と考えているポイントは下記です。
Azure Functions の特徴: Durable Functions の存在
ステートフルに複数の Functions を連携させたり、非同期な API を構成したりできます。
AWS だと同様の仕組みは Step Functions の利用を検討すると良いかもしれません。
AWS Lambda の特徴: コンテナを動かす場合も固定費無し
Azure Functions の場合はコンテナを動かす場合に従量課金プランは使用できず固定料金がかかりますが、AWS Lambda の場合は追加料金が不要で動かした分だけ課金です。
(コンテナを用意するための ECR リポジトリの料金は必要)
Azure でコンテナを従量課金で動かしたい場合は、Container Apps の利用を検討すると良いかもしれません。
-
https://learn.microsoft.com/ja-jp/azure/azure-functions/supported-languages ↩
-
https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-triggers-bindings ↩
-
https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html#listing-of-services-and-links-to-more-information ↩
-
https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v3/developer-guide/scheduled-events-invoking-lambda-example.html ↩
-
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/services-apigateway.html ↩
-
https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-scale ↩ ↩2
-
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-limits.html ↩ ↩2