7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

そのAWS Lambdaの.NET Core、1.0から2.0にアップデートしませんか?

Last updated at Posted at 2018-01-17

概要

  • 2018年1月15日、とうとうAWS Lambdaでの.NET Coreで2.0がサポートされるようになりました🎉
  • 早速バージョンアップしてみましょう。

ソリューションのアップデート

細かいことはおいておいて、まずはアップデートしてみましょう。

題材はこれです。

CloudWatch Logsに書き込まれた内容をSlackとGoogle Homeで通知するAWS Lambda using dotnet

がんばった割に鳴かず飛ばずだったこの記事で紹介している、CloudWatch Logsを監視してSlackとGoogle Homeに通知するLambdaです。

プロジェクト構成

ErrorNotificationLambda/
├ErrorNotificationLambda/
│ ├Properties/
│ ├aws-lambda-tools-defaults.json
│ ├ErrorNotificationLambda.csproj
│ ├Function.cs
│ └Readme.md
└ErrorNotificationLambda.Tests/
  ├Properties/
  ├ErrorNotificationLambda.Tests.csproj
  ├FunctionTest.cs
  └LaunchSettingsFixture.cs


## 変更箇所
csprojを変更します。

```ErrorNotificationLambda.csproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp1.0</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <WarningLevel>0</WarningLevel>
  </PropertyGroup>

  <PropertyGroup>
    <OutputType>Library</OutputType>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Amazon.Lambda.CloudWatchLogsEvents" Version="1.0.0" />
    <PackageReference Include="Amazon.Lambda.Core" Version="1.0.0" />
    <PackageReference Include="Amazon.Lambda.Serialization.Json" Version="1.1.0" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Amazon.Lambda.Tools" Version="1.8.0" />
  </ItemGroup>

</Project>

これを

<TargetFramework>netcoreapp1.0</TargetFramework>

こう

<TargetFramework>netcoreapp2.0</TargetFramework>

以上。

Visual Studio 2017から編集する場合は、該当プロジェクトを右クリックすると「[プロジェクト名].csprojの編集」が選択できます。

4csproj.PNG

aws-lambda-tools-defaults.jsonにデフォルトのデプロイ設定を書いている場合、そちらもお忘れなく。

Publish to Lambdaするときに設定を保存しても書き換わってくれます。

また、Serverless Applicationのテンプレートからプロジェクトを作成した場合はCloudFormationのリソースもdotnetcore2.0に変更しましょう。

AWS Toolkit for Visual Studio 2017のアップデート

AWS Toolkit for Visual Studio 2017はVisual Studioからデプロイしたり、テンプレートを選択したりできるようにする拡張機能です。

今回.NET Core 2.0系対応が入った拡張機能のバージョンは1.14.0.0ですが、僕のVisual Studioにはまだ更新が降ってきていなかったので、マーケットプレースから直接.vsixをダウンロードし、インストールしました。

現在インストールされているバージョンは「ツール」->「拡張機能と更新プログラム」->「インストール済み」の中にあるAWS Toolkit for Visual Studio 2017を選択すると確認することができます。

61.14.PNG

バージョンアップすることで変更される大事なポイントは次の二点でしょう。

  • Language Runtimeで.NET Core v2.0が選択できる
  • Memoryが3008MBまで選択できる

メモリはまた上限上がったんですねw 年末のLambda共通のアップデート時点ではポータルで選択できる上限が上がっているにもかかわらず、「Upload Lambda Function」ではそれが反映されていませんでした。

72.0.PNG

8memory.PNG

動作確認

ローカルでテスト通るか?

デプロイ後ポータルでのバージョンが2.0になっているか?

82.0.PNG

本番環境のLambdaに対してテストイベントを発行した期待した結果になるか?

9vs.PNG

9slack.PNG

特に問題はなかったです。

アップデートの詳細

AWS Lambda Supports C# (.NET Core 2.0)

AWS Lambda .NET Core 2.0 Support Released

一番下のが実際に開発してる人が書いた記事です。

aws-lambda-dotnetは大体この人が書いていると言っても過言ではないし、PRを出すととても丁寧に対応してくれます。

VSTSのAWS周りタスクがリリースされた記事も英語版が出て2週間後くらいに日本語版が出たので、今回もきっとそのうち日本語版が出ることでしょう。

とても雑にまとめると、

  • .NET Core 2.0サポートすると、.NET Standard 2.0ベースでライブラリを作成するときより多くの.NET APIを利用できるので、既存の.NET資産をより使い回しやすくなる
  • テンプレはもう2.0ベースにアップデートしているので、AWS Toolkitのテンプレート使ってVisual Studioからデプロイしてしまうのが一番楽
  • Amazon.Lambda.Toolsも2.0がリリースされ、パッケージングするにあたって2.0ランタイムで必要となるファイルも生成できる
  • Amazon.Lambda.Templatesも2.0.0(同日に2.0.1がリリースされていた...!)がリリースされ、Visual Studioがなくてもすべてのテンプレがコマンドで利用できるようになった
  • プログラミングモデルは変わっていたいので、既存の1.0系プロジェクトもシュッとアップデートできる
  • AWS Tools for VSTSもアップデートされて2.0対応されたが既存のタスクを更新する必要はない

まとめ

「.NET Core 2.0対応」が目につきますが、実際は周辺のツールのアップデートがとてもとてもいい感じです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?