📝

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