LoginSignup
13
11

More than 5 years have passed since last update.

C#で AWS Lambda ~ 一番基礎的な使い方

Last updated at Posted at 2018-05-25

はじめに

※トライアンドエラーで見つけたやり方なので、信じるか信じないかは(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がらみの何かでエラーが出る感じなので)
00Qiita.PNG

Lambdaプロジェクトを新規追加

ソリューションから新規プロジェクトを追加
AWS Lambda Projectを選ぶます
01Qiita.PNG
なにやらウィザードが出てくるのでEmpty Functionを選ぶます
02Qiita.PNG
できあがり
04Qiita.PNG
勝手にこんなコードで作られてます。↓

Function.cs
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を選択
05Qiita.PNG
Function 適当なNameを入れて、次の画面へ
06Qiita.PNG
Account profile to use:にLambdaにPublishするための適切な権限がなければ
何やらエラーが出て進みません。→IAMで適切なロールをつけるナリ
Role Name:にはAWS管理コンソール等で登録されているLambdaソースの権限を選択する
IAMは2種類使うことになります。
・VS側に設定する権限:ソースをPublishするまでの権限です
・Lambdaが実行される時に使う権限:ソースをPublishした後、Lambda側で使う権限
07Qiita.PNG
Publishが成功すると…
呼び名はわからないが、こんな感じ↓の画面が表示されます
AWSが作ったVS用簡易テストツールだと思われる
08Qiita.PNG
Invokeが実行ボタン
左側の入力ボックスは背景色灰色になっているのでわかりにくいが、入力できます。
入力パラメータがあればここに入力します。
今回は入力パラメータがStringで、戻り値が大文字変換されたものなので…
hogehogeを入力パラメータとして、Invokeを押す
09Qiita.PNG
Responseのところに入力パラメータが大文字変換された"HOGEHOGE"が出力されてますね。
ちなみに、画面下部のLog outputにログを表示したい場合は

context.Logger.LogLine("ログてす");

こんな感じでやればOK

上記の手順量産化する場合は、
ソースを直す→LambdaへPublish→テストを実行
もちろんデバッグはできない。
context.Logger.LogLineでログをとればよいのだが、やはりデバッグできたほうが効率が良い

次はこのプロジェクトをローカル環境で実行できるようにします
もちろんデバッグもできます
それでは次回 ノシ
→ C#でAWS Lambda ~ デバッグ方法

13
11
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
13
11