導入
AWS Lambdaは、サーバーを管理せずにコードを実行できるサーバーレスの仕組みです。C#のメソッドをアップロードすると、イベント(HTTPリクエスト、S3へのアップロード、SQSメッセージ等)に応じて自動で実行されます。使った分だけ課金され、スケールも自動です。
図解
flowchart LR
EV["イベント<br/>API Gateway / S3 / SQS"] -->|トリガー| L["Lambda関数(C♯)<br/>あなたのメソッドが実行される"]
L --> OUT["結果を返す / 他サービスを呼ぶ"]
style L fill:#e8f5e9
サンプル(読み物)
using Amazon.Lambda.Core;
// [assembly: LambdaSerializer(...)] などの設定は省略
public class Functions
{
// このメソッドがLambdaのエントリポイント。inputはイベントのデータ
public string Handler(string input, ILambdaContext context)
{
// ILambdaContext はログや残り時間などの実行情報を持つ
context.Logger.LogInformation($"受信: {input}");
return $"こんにちは、{input}さん";
}
}
- Lambdaは「イベントで起動するメソッド」を書く。
Handlerがエントリポイント - 引数
inputにイベントのデータ、ILambdaContextに実行情報(ログ・残り時間)が渡る - サーバー管理不要・自動スケール・使った分だけ課金が利点
- 起動のたびに立ち上がる特性上、初回起動の遅延(コールドスタート)に注意
- デプロイはAWS Toolkit for Visual Studio、または
dotnet lambdaツールで行う
詳細手順
- Visual StudioにAWS Toolkit拡張を入れ、
AWS Lambda Project (.NET)テンプレートで作成する(またはスターター147-aws-lambda/starter.zip)
Handlerメソッドを実装し、右クリック → Publish to AWS Lambda でデプロイする- AWSコンソールのLambdaでテストイベントを送り、結果とログ(CloudWatch)を確認する
まとめ
- Lambdaはサーバー管理不要でC#メソッドを実行するサーバーレス基盤
Handlerメソッドがイベントで起動、ILambdaContextで実行情報を得る- 自動スケール・従量課金が利点、コールドスタートに注意
次章: C#でブロックチェーン(Ethereum)を扱う方法へ進みます。