やること
- 1. Visual StudioからAWSツールを使ってLambdaにソースを入れる
- 2. Lambdaにソースを入れる前に、ローカルでデバッグする
前提
前回の”C#でAWS Lambda ~ 一番基礎的な使い方”のやり方で、VS2017でコードを書いて、Lambdaにアップロードできている状況になっていること
前回までの簡単な概要
ソリューションファイルの中にLambda用のプロジェクトがある。
VSからLambdaにPublishして、動作確認ができている。
が、
このままだと、いちいちPublishしないと実行結果が確認できないし、デバッグもできないorz
なので、
ソリューション内にテスト用ドライバを作って、VSの実行ボタンで簡単に実行でき、かつデバッグもできるようにする。
テスト用プロジェクトの追加
1ソリューションに1プロジェクトだと、ソリューションエクスプローラにソリューションが見えない(?)ので、ファイル→追加→新規プロジェクトの追加をする
多分、AWS Lambda Project with Testsでやるんだろうが
ここはあえて、.NET Core標準のプロジェクトを作る
ConsoleApp1という名前にしておきます。
コンソールアプリ(.NET Core)を選択。
¥bin の下に、exeが作られてDOS画面で実行するイメージですね。
で、VSの緑三角を押すと、このコンソールアプリが実行するようにします。
ConsoleApp1プロジェクトで右クリック、スタートアッププロジェクトに設定
はい。
ConsoleApp1から、Lambda用プロジェクトを使えるようにします。
プロジェクトを参照設定します。
依存関係→参照の追加
Lambda用プロジェクトが見えますね。これをチェック
これで、コンソールプロジェクトが起動して、Lambda用プロジェクトを呼び出せるって事になります。
もういっちょ
Lambda用プロジェクトのFunctionには、入力パラメータとして・・・
public string FunctionHandler(string input, ILambdaContext context)
string の方は、入力パラメータとしてわかりますが
ILambdaContext はなんぞ。。
多分ログを書いたりするもののようなので、このオブジェクトを作って渡して上げる必要がありそうです。
NugetからAmazon.Lambda.TestUtilitiesを入れませう。
はい。
コンソールアプリが起動されると、Mainが動きますんで
Mainの中身を弄ります。↓こんな感じに。
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();
}
}
}
はい。
あとはブレークポイントを置けばなんとかなります。