0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C#のLambdaプロジェクトを作成してVisual Studio for Macでデバッグ実行する

Posted at

はじめに

MacでC#のLambdaプロジェクトを作成し、Visual Studio for Macでテストプロジェクトをデバッグ実行した記録です。

できたこと

  • C#のLambdaプロジェクトを作成
  • AWS Lambdaへのデプロイ
  • AWS Lambdaでのテスト
  • Visual Studio for Macでソリューション化
  • テストプロジェクトのデバッグ実行

AWS Lambda上で動くプログラムをアタッチしてデバッグしたわけではありません。
テストプロジェクトをローカルPC上でデバッグ実行しました。

準備

アクセスキー ID とシークレットアクセスキーを設定

PCからAWSにアクセスできるようにアクセスキー ID とシークレットアクセスキーを設定します。

.NET Core CLI

  • プロジェクトテンプレートの追加
    dotnet new -i Amazon.Lambda.Templatesコマンドを実行して、.NET Core CLIにAWS Lambdaのテンプレートを追加します。

  • Amazon.Lambda.Tools .NET Core Global Tool のインストール
    dotnet tool install -g Amazon.Lambda.Toolsコマンドを実行します。

参考:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/csharp-package-cli.html

プロジェクトの作成

空のLambdaプロジェクト作成するコマンドを実行します。
dotnet new lambda.EmptyFunction --name {メソッド名}
(以下、{メソッド名}に「SelectFunction」と指定した想定で説明します。)

色々とファイルが生成されますが、Lambda関数を実行するとFunction.csのFunction.FunctionHandler()メソッドが呼び出されることになります。
デフォルトでは、引数inputで受け取った文字列を大文字に変換して戻り値に返す処理となっています。

Function.cs
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 SelectFunction
{
    public class Function
    {
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public string FunctionHandler(string input, ILambdaContext context)
        {
            return input?.ToUpper();
        }
    }
}

参考:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/csharp-package-cli.html

デプロイ

デプロイしてみます。

  • .csprojファイルがあるディレクトリに移動します。

  • dotnet restoreコマンドを実行します。

  • dotnet lambda deploy-functionを実行します。

    • Enter AWS Region:と表示されるので、デプロイ先のリージョンを入力。
    • Enter Function Name:と表示されるので、作成したいLambda関数名を入力。
    • Select IAM Role that to provide AWS credentials to your code:とIAMロールの一覧が表示されるので、使用するIAMロールを選択。

デプロイに成功すると、AWS Lambdaのコンソールに作成したLambda関数が表示されます。
スクリーンショット 2020-09-21 8.49.12.png

AWS Lambda上でテスト

AWS LambdaコンソールでデプロイしたLambda関数を選択し、「テストイベントの設定」をクリックします。
スクリーンショット 2020-09-21 8.49.59.png

「イベント名」欄に任意の名称を入力し、その下の編集エリアに引数に渡す情報をJsonで入力して保存ボタンをクリックします。
スクリーンショット 2020-09-21 8.50.49.png

先ほど「イベント名」欄に入力した名前を選択してテストボタンをクリックすると、実行結果欄にFunction.csのFunction.FunctionHandler()メソッドの戻り値が表示されます。
スクリーンショット 2020-09-21 8.51.39.png

Visual Studio for Macでソリューション化

Visual Studio for Macでコーディングやデバッグ実行をしたいのでソリューションを作成します。
まずは、空のソリューションを作成します。

スクリーンショット 2020-09-21 8.17.17.png

プロジェクトの作成で作成されたディレクトリ構成に合わせてソリューションの場所を指定します。ディレクトリ構成はお好きにどうぞ。
スクリーンショット 2020-09-21 8.23.37.png

ソリューションウィンドウでソリューション名を右クリック→[追加]→[既存のプロジェクト]を選択し、Lambdaプロジェクトとそのテストプロジェクトを追加します。
スクリーンショット 2020-09-21 9.03.10.png

テストの実行

テストプロジェクトをスタートアッププロジェクトに設定します。

単体テストウィンドウを表示し、テストメソッドを右クリック→[テストのデバッグ]をクリックすると、テストメソッドをデバッグ実行できます。

スクリーンショット 2020-09-21 9.07.48.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?