Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
OrganizationEventAdvent CalendarQiitadon (β)
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

macOS から .NET Core 2.1 の AWS Lambda 関数を作成する

Windows 版の Visual Studio では AWS Toolkit for Visual Studio を使ってサクッと Lambda 関数を作成できます。

ここでは macOS 上で Visual Studio for mac にて Lambda 関数をサクッと作る手順をメモ。とはいえ、とても簡単です。


  • macOS Sierra 10.12.6
  • Visual Studio for Mac 7.5.1
  • dotnet 2.1.403

1. .NET Core ライブラリ ソリューションの作成し、プロジェクトファイルを編集

  1. .NET Core ライブラリのソリューションを作成します(Ex: DotNetCoreLambda.sln
  2. 依存ライブラリを追加
    • exec: dotnet add ./DotNetCoreLambda/DotNetCoreLambda.csproj package Amazon.Lambda.Serialization.Json
    • exec: dotnet add ./DotNetCoreLambda/DotNetCoreLambda.csproj package Amazon.Lambda.Core
  3. .csproj(例: DotNetCoreLambda/DotNetCoreLambda.csproj) ファイルの PropertyGroupGenerateRuntimeConfigurationFiles を追加します
    • ついでに AWSProjectTypeLambda にしておくと Windows の Visual Studio で開くときに良い
    • 一例として以下のような形になるかと
<Project Sdk="Microsoft.NET.Sdk">


  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />

    <PackageReference Include="Amazon.Lambda.Core" Version="1.0.0" />
    <PackageReference Include="Amazon.Lambda.Serialization.Json" Version="1.4.0" />

2. Lambda の実装コードを作成

一例として string を受け取り、Upper Case にして返す素敵な Lambad 関数を作ります。これを例えば Function.cs という名前で作成。

using Amazon.Lambda.Core;

[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]

namespace DotNetCoreLambda
    public class Function
        public string FunctionHandler(string input, ILambdaContext context)
            return input?.ToUpper();

3. Build & Deploy

以下のような手順にて作成した .zip パッケージファイルをデプロイ

dotnet publish -c Release
zip -j ~/Desktop/output.zip ./DotNetCoreLambda/bin/Release/netcoreapp2.1/publish/*

4. 動作検証

$ aws lambda invoke --function-name DotNetCoreLambda --payload '"abcdABCD1234"' /tmp/out && echo $(cat /tmp/out)
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"




Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Help us understand the problem. What are the problem?