はじめに
※トライアンドエラーで見つけたやり方なので、信じるか信じないかは(ry
やること
- 1. Visual StudioからAWSツールを使ってLambdaにソースを入れる
- 2. Lambdaにソースを入れる前に、ローカルでデバッグする(次回)
準備
VisualStudioのバージョンについて
VS2015はフレームワークが.NET Core2.0対応していないし、Nugetからパッケージを利用するときにバージョンがどうしたとか、何かと面倒だったのでやめた。
VS2017でやる。Community Editionでも問題なし
AWSSDKをインストールする
AWSSDK for .NETを入れて、IAMで作成された認証を設定しておく
IAMはLambda系の権限を追加しておく
とりあえずVSで作ってLambdaで動く事を確認する
ソリューションを作っておく
理由はよくわからないが、先にソリューションファイルを作っておいて、そこにプロジェクトを追加する感じで進める
(Nugetがらみの何かでエラーが出る感じなので)
Lambdaプロジェクトを新規追加
ソリューションから新規プロジェクトを追加
AWS Lambda Projectを選ぶます
なにやらウィザードが出てくるのでEmpty Functionを選ぶます
できあがり
勝手にこんなコードで作られてます。↓
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
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.Json.JsonSerializer))]
namespace AWSLambda1
{
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();
}
}
}
入力パラメータinputを大文字変換して返す感じのソースですな
で
LambdaにPublish
プロジェクトを右クリして、Publish to AWS Lambdaを選択
Function 適当なNameを入れて、次の画面へ
Account profile to use:にLambdaにPublishするための適切な権限がなければ
何やらエラーが出て進みません。→IAMで適切なロールをつけるナリ
Role Name:にはAWS管理コンソール等で登録されているLambdaソースの権限を選択する
IAMは2種類使うことになります。
・VS側に設定する権限:ソースをPublishするまでの権限です
・Lambdaが実行される時に使う権限:ソースをPublishした後、Lambda側で使う権限
Publishが成功すると…
呼び名はわからないが、こんな感じ↓の画面が表示されます
AWSが作ったVS用簡易テストツールだと思われる
Invokeが実行ボタン
左側の入力ボックスは背景色灰色になっているのでわかりにくいが、入力できます。
入力パラメータがあればここに入力します。
今回は入力パラメータがStringで、戻り値が大文字変換されたものなので…
hogehogeを入力パラメータとして、Invokeを押す
Responseのところに入力パラメータが大文字変換された"HOGEHOGE"が出力されてますね。
ちなみに、画面下部のLog outputにログを表示したい場合は
context.Logger.LogLine("ログてす");
こんな感じでやればOK
で
上記の手順量産化する場合は、
ソースを直す→LambdaへPublish→テストを実行
もちろんデバッグはできない。
context.Logger.LogLineでログをとればよいのだが、やはりデバッグできたほうが効率が良い
次はこのプロジェクトをローカル環境で実行できるようにします
もちろんデバッグもできます
それでは次回 ノシ
→ C#でAWS Lambda ~ デバッグ方法