📝
AWS CloudShell から .NET の Lambda 関数をデプロイしてみた
C# による Lambda 関数の構築 - AWS Lambda
CloudShell のみ使用します。
手順
# .NET 8 SDK をインストール
$ sudo yum install -y dotnet-sdk-8.0
# インストール確認
$ dotnet --version
# Lambda 用のプロジェクトテンプレートをインストール
$ dotnet new -i Amazon.Lambda.Templates
# プロジェクト用ディレクトリを作成して移動
$ mkdir hello-world-lambda
$ cd hello-world-lambda
# Empty Lambda Function テンプレートでプロジェクト作成
$ dotnet new lambda.EmptyFunction --name HelloWorldLambda
# プロジェクト構造を確認
$ cd HelloWorldLambda/src/HelloWorldLambda
$ ls -la
# Function.cs ファイルを Hello World 用に書き換え
$ cat > Function.cs << 'EOF'
using Amazon.Lambda.Core;
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
namespace HelloWorldLambda;
public class Function
{
/// <summary>
/// A simple function that returns "Hello World"
/// </summary>
/// <param name="input">The event for the Lambda function handler to process.</param>
/// <param name="context">The ILambdaContext that provides methods for logging and describing the Lambda environment.</param>
/// <returns></returns>
public string FunctionHandler(string input, ILambdaContext context)
{
context.Logger.LogInformation("Lambda function executed");
return "Hello World";
}
}
EOF
# 修正内容を確認
$ cat Function.cs
# プロジェクトをビルド
$ dotnet build
# AWS Lambda Tools for .NET をインストール
$ dotnet tool install -g Amazon.Lambda.Tools
# PATH に追加
$ export PATH="$PATH:/home/cloudshell-user/.dotnet/tools"
# インストール確認
$ dotnet lambda help
# Lambda 関数をデプロイ
# 注意: IAMロールの ARN は実際の環境に合わせて変更してください
$ dotnet lambda deploy-function HelloWorldLambda --function-role your-role-arn
# デプロイした Lambda 関数を実行
$ dotnet lambda invoke-function HelloWorldLambda --payload "test input"
# Lambda関数の設定確認
$ dotnet lambda get-function-config HelloWorldLambda
# Lambda関数を削除
$ dotnet lambda delete-function HelloWorldLambda
# ローカルプロジェクトを削除
$ cd ~/
$ rm -rf hello-world-lambda
# 削除確認
$ ls -la | grep hello-world
まとめ
今回は AWS CloudShell から .NET の Lambda 関数をデプロイしてみました。
どなたかの参考になれば幸いです。
Discussion