LoginSignup
9
7

More than 5 years have passed since last update.

C#でAWS Lambda ~ デバッグ方法

Last updated at Posted at 2018-05-25

やること

  • 1. Visual StudioからAWSツールを使ってLambdaにソースを入れる
  • 2. Lambdaにソースを入れる前に、ローカルでデバッグする

前提

前回の”C#でAWS Lambda ~ 一番基礎的な使い方”のやり方で、VS2017でコードを書いて、Lambdaにアップロードできている状況になっていること

前回までの簡単な概要

ソリューションファイルの中にLambda用のプロジェクトがある。
VSからLambdaにPublishして、動作確認ができている。
が、
このままだと、いちいちPublishしないと実行結果が確認できないし、デバッグもできないorz
なので、
ソリューション内にテスト用ドライバを作って、VSの実行ボタンで簡単に実行でき、かつデバッグもできるようにする。

テスト用プロジェクトの追加

1ソリューションに1プロジェクトだと、ソリューションエクスプローラにソリューションが見えない(?)ので、ファイル→追加→新規プロジェクトの追加をする
Qiita01.png
多分、AWS Lambda Project with Testsでやるんだろうが
2018-05-20 (1).png
ここはあえて、.NET Core標準のプロジェクトを作る
ConsoleApp1という名前にしておきます。
2018-05-20 (2).png
コンソールアプリ(.NET Core)を選択。
¥bin の下に、exeが作られてDOS画面で実行するイメージですね。

で、VSの緑三角を押すと、このコンソールアプリが実行するようにします。
ConsoleApp1プロジェクトで右クリック、スタートアッププロジェクトに設定
2018-05-20 (3).png
はい。
2018-05-20 (4).png
ConsoleApp1から、Lambda用プロジェクトを使えるようにします。
プロジェクトを参照設定します。
依存関係→参照の追加
2018-05-20 (6).png
Lambda用プロジェクトが見えますね。これをチェック
2018-05-20 (5).png
これで、コンソールプロジェクトが起動して、Lambda用プロジェクトを呼び出せるって事になります。

もういっちょ
Lambda用プロジェクトのFunctionには、入力パラメータとして・・・

Function.cs
        public string FunctionHandler(string input, ILambdaContext context)

string の方は、入力パラメータとしてわかりますが
ILambdaContext はなんぞ。。
多分ログを書いたりするもののようなので、このオブジェクトを作って渡して上げる必要がありそうです。

NugetからAmazon.Lambda.TestUtilitiesを入れませう。
2018-05-20 (7).png
はい。
コンソールアプリが起動されると、Mainが動きますんで
Mainの中身を弄ります。↓こんな感じに。

Program.cs
using System;

namespace ConsoleApp1 {
    class Program {
        static void Main(string[] args) {
            AWSLambda1.Function fnc = new AWSLambda1.Function();
            string modoriTi = fnc.FunctionHandler("hogehoge", new Amazon.Lambda.TestUtilities.TestLambdaContext());

            Console.WriteLine(modoriTi);
            Console.ReadKey();  
        }
    }
}

この状態でとりあえず実行してみませう。
2018-05-20 (8).png

はい。
あとはブレークポイントを置けばなんとかなります。

9
7
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
9
7