AWS Lambda での.NET ワークロード

モジュール 2

モジュール 2: .NET 開発用ツール

 学習モジュール

AWS には、.NET 用の Lambda 関数の開発に役立つ複数のツールが用意されています。すべて無料で、お好みの IDE に直接インストールすることも、選択したコマンドラインにインストールすることもできます。コンピュータに AWS アカウントがすでに設定されている場合は、ツールを設定する必要はありません。

AWS Lambda の .NET ツールは、Visual Studio (Windows のみ)、Visual Studio Code、および Rider で利用できます。コマンドラインツールは Windows、Linux、Mac で利用できます。サポートレベルは IDE とオペレーティングシステムによって異なります。このモジュールには、使用可能なツールの概要と、関連するダウンロードへのリンクが記載されています。

 所要時間

60 分 

AWS Toolkit for Visual Studio

2022 年 5 月現在、 Visual Studio 用 AWS ツールキットは Windows でのみご利用いただけます。インストール時に、ツールキットは AWS アカウントにアクセスするように設定するのに役立ちます。

このツールキットを使用すると、使い慣れたユーザーインターフェイスを使用して、Visual Studio 内のグラフィカルインターフェイスを介して Lambda 関数の開発、デバッグ、デプロイ、更新、テストを行うことができます。ツールキットは、ビジュアルスタジオ 2022、2019、2017 用にダウンロードできます。

インストール

Visual Studio で、[拡張機能] メニューに移動し、[拡張機能の管理] を選択します。右側の検索ボックスに「AWS Toolkit」と入力します。結果ウィンドウで、「Visual Studio 用 AWS ツールキット」拡張機能を選択し、「ダウンロード」をクリックします。プロンプトに従って拡張機能をインストールします。Visual Studio を再起動する必要がある場合があります。

ご希望の場合は、AWS ツールキットを直接ダウンロードするか、 Visual Studio 用 AWS ツールキットのドキュメントを参照してください。

概要と主な機能

Lambda サービスに関連して、このツールキットには、Lambda 関数用のプロジェクトテンプレートと、Lambda 関数のデプロイ、管理、テスト/呼び出しを支援するツールという 2 つの主要な機能セットが用意されています。これに加えて、ツールキットを使用すると、他の AWS リソースを管理したり、AWS Fargate、AWS App Runner、AWS Elastic Beanstalk などの他のタイプの AWS インフラストラクチャにアプリケーションをデプロイしたりできます (このコースでは取り上げません)。

ツールキットには、さまざまな Lambda 関数の作成に役立つ多くの Lambda プロジェクトテンプレートが追加されています。

最も単純なものは文字列を受け取り、その文字列の大文字バージョンを返します。シンプルで、デプロイしやすく、テストも簡単なため、これは始めるのに最適です。ほんの数分で、.NET Lambda 関数を AWS 上で実行し、リクエストを送信してレスポンスを取得できます。

より複雑な側面としては、(Web ページと API コントローラを含む) .NET 6 Web アプリケーション全体を提供するテンプレートがあります。これをデプロイすると、ウェブからアクセスできるようにするために必要なインフラストラクチャもデプロイされ、自動的に構成されます。

好みに応じて、コンテナプロジェクトテンプレートも利用できます。これらが機能するには、コンピューターに Docker がインストールされている必要があることに注意してください。Lambda 関数でコンテナーイメージを使用する理由については、モジュール 4 の「自分に合ったランタイムの選択」セクションを参照してください。

Lambda 関数のユニットテストは、他のコードのテストと同じくらい重要です。ほとんどのプロジェクトテンプレートには、xUnit を使用してソースコードプロジェクトのコードをテストするテストプロジェクトが含まれています。これにより、ユニットテストを簡単に開始できます。

上記から分かるように、Visual Studio から AWS Lambda サービスに関数をパブリッシュすることもできます。パブリッシュ機能では、パッケージの構築、Lambda サービスへのアップロード、権限の適用、API Gateway エンドポイントの作成、およびコードを実行して呼び出しできるようにするために必要なその他のステップがすべて実行されます。お客様はコードを書くだけです。

このツールキットのもう 1 つの機能は、AWS エクスプローラーです。これにより、DynamoDB、S3、SNS、SQS キュー、EC2、そしてもちろん Lambda 関数など、多くの AWS リソースを表示および管理できます。

AWS エクスプローラーを開くには、[表示] メニューから [AWS Explorer] を選択します。

Lambda 関数に関連して、AWS エクスプローラーでは次のことができます。

  • リージョンを選択する
  • Lambda 関数を表示および管理します。
  • AWS で Lambda 関数を呼び出し、必要なパラメータを渡して、応答を表示します。このツールは、他のさまざまな AWS サービスからの呼び出しをシミュレートするためのサンプル入力を提供します。これは、S3 で作成されているファイルなど、他のサービスからのイベントによってトリガーされる Lambda 関数を構築する場合に非常に便利です。
  • ローカルで実行されている Lambda 関数をデバッグします。
  • Lambda 関数をトリガーできるサービスを設定します。
  • Lambda 関数によって生成されたログを表示します。

ツールキットから Lambda 関数を呼び出すには、AWS Explorer を開き、Lambda セクションを展開し、実行する Lambda 関数を右クリックして [関数を表示] を選択します。

そこから、ドロップダウンリストからリクエスト例を選択できます。 これらのサンプルでは、API Gateway、S3、SNS などの他の AWS サービスからの呼び出しをシミュレートできます。これにより、他のサービスからのイベントによって呼び出される Lambda 関数を簡単かつ直接テストできます。

または、独自のリクエストを使用することもできます。

上記に加えて、Lambda 関連のコマンドラインツールはすべてターミナルから使用できます。

AWS を初めて使用する場合は、Visual Studio のツールキットを使用するのが最善の方法です。入手可能なすべてのツールキットの中で最も多くの機能を備えており、デバッグやデプロイメントを実行するのが最も簡単です。Visual Studio 用 AWS ツールキットは、無料で提供されている Visual Studio コミュニティエディションでも動作します。これと AWS の無料利用枠は、AWS を初めて使用する開発者にとっては素晴らしい組み合わせです。

AWS Toolkit for Visual Studio Code

AWS Toolkit for Visual Studio Code (VS Code) は、VS Code が実行されるすべてのオペレーティングシステム (Windows、Linux、Mac) で利用できます。このツールキットは、3 つのオペレーティングシステムすべてで一貫したエクスペリエンスを提供します。

AWS Toolkit for Visual Studio ほど機能が充実しているわけではありませんが、AWS Toolkit for Visual Studio Code を使用すると、AWS 上のリソースを閲覧したり操作したりできます。

S3 バケットを閲覧 (およびファイルの編集!) できます。、API Gateway エンドポイントを呼び出し、Amazon Elastic Container Registry (ECR) からデプロイし、AWS で Lambda 関数を呼び出し、ローカルでデバッグします (ドットネットツールが必要です。下記参照)。その機能の完全なリストについては、AWS Toolkit for Visual Studio Code のドキュメントを参照してください

VS Code では、使用可能なすべての AWS コマンドラインツールを使用することもできます。これが、VS Code から AWS とやり取りする方法である可能性が最も高いです。コマンドラインツールを使用すると、あらゆる AWS サービスを柔軟に管理できます。

インストール

プライマリサイドバーで、拡張機能アイコンをクリックします。開いた検索バーに「aws toolkit」と入力すると、リストの上部または近くに AWS Toolkit が表示されます。インストール」をクリックします。VS Code の再起動が必要な場合があります。

概要と主な機能

AWS Toolkit for VS Code は、VS Code 拡張マーケットプレイスを使用して追加するか、Visual Studio マーケットプレイスの AWS Toolkit ページから直接ダウンロードして追加できます

コンピュータですでに AWS アカウントを設定している場合、ツールキットはそのアカウントを使用して AWS に自動的に接続します。

VS Code ウィンドウのプライマリサイドバーに AWS アイコンが表示されます。そこから、ツールキットがアクセスできるすべてのサービスを確認できます。

このツールキットには、Visual Studio ツールキットのような Lambda プロジェクトテンプレートは含まれていません。代わりに、コマンドラインで dotnet new... コマンドを使用して新しい Lambda 関数を作成します。豊富なテンプレートリストが利用可能です。これらのテンプレートは、AWS Lambda 関数をすぐに使い始めるのに役立ちます。dotnet CLI テンプレートのインストール手順は以下のとおりです。

Lambda 関数に関連して、AWS エクスプローラーでは次のことができます。

  • AWS で Lambda 関数を呼び出し、必要なパラメータを渡して、応答を表示します。このツールは、Lambda をトリガーする他のさまざまな AWS サービスからの呼び出しをシミュレートするためのサンプル入力を提供します。
  • AWS .NET モックラムダテストツールを使用して Lambda 関数をローカルでデバッグします。
  • ビルドされた.NET Lambda 関数の zip アーカイブをアップロードします。
  • Lambda 関数によって生成されたログを表示します (CloudWatch ログ経由)。

ツールキットから Lambda 関数を呼び出すには、AWS Explorer を開き、Lambda セクションを展開し、実行する Lambda 関数を右クリックして [Invoke on AWS] を選択します。

新しいウィンドウが開き、関数を呼び出すリクエストペイロードを選択できます。

または、独自のリクエストペイロードを作成することもできます。VS Code 出力タブには、応答ペイロードが表示されます。

上記に加えて、Lambda 関連のコマンドラインツールはすべて、ターミナル経由で VS Code で使用できます。特に、dotnet Lambda コマンドは、VS Code Lambda 関数を使用する場合に特に便利です。インストールの詳細と手順は、以下の「.NET CLI 用 AWS 拡張機能 (dotnet lambda...)」セクションにあります。

AWS Toolkit for Rider

AWS Toolkit for Rider は、AWS リソースの構築、表示、管理に役立つ Rider のプラグインです。機能は AWS Toolkit for VS Code と似ていますが、.NET 用のさまざまなプロジェクトテンプレートが含まれているため、Lambda 関数の開発をすぐに開始できます。

インストール

AWS Toolkit for Rider をインストールするには、[ファイル] メニューから [設定]、[プラグイン] の順に開きます。AWS Toolkit を検索してインストールします。

コンピュータで既に AWS アカウントを設定している場合、ツールキットは自動的に AWS アカウントに接続します。

インストールが完了すると、さまざまな新しい AWS Lambda 関数テンプレートを利用できるようになります。

概要と主な機能

AWS Explorer を開くには、[表示] メニューから [ツールウィンドウ] に移動し、[AWS Explorer] を選択します。

AWS Explorer から、Lambda 関数に関連して次の操作を行うことができます。

  • AWS で Lambda 関数を呼び出し、必要なパラメータを渡して、応答を表示します。このツールは、Lambda をトリガーする他のさまざまな AWS サービスからの呼び出しをシミュレートするためのサンプル入力を提供します。
  • AWS .NET モックラムダテストツールを使用して Lambda 関数をローカルでデバッグします。
  • ビルドされた.NET Lambda 関数の zip アーカイブをアップロードします。
  • Lambda 関数によって生成されたログを表示します (CloudWatch ログ経由)。

Lambda 関数を呼び出すには、まず AWS Explorer を開きます。これを行うには、[表示] メニューから [ツールウィンドウ] に移動し、[AWS Explorer] を選択します。

AWS Explorer で Lambda セクションを展開し、呼び出したい Lambda を右クリックします。「[リモート]...」を実行

新しいウィンドウが開き、リクエストを呼び出すテンプレートを選択できます。

または、独自のリクエストを入力します。

「実行」をクリックします。その後、出力が表示されます。

上記に加えて、すべての Lambda コマンドラインツールはターミナル経由で Rider で使用できます。

コマンドラインツール

使用可能なすべてのコマンドラインツールは、Windows、Linux、および Mac の任意のシェル / ターミナル / コマンドプロンプトで動作します。

ただし、3 つのオペレーティングシステムすべてで一貫したエクスペリエンスを得るには、 PowerShell Core を使用することをお勧めします。端末ごとに JSON エンコーディングが異なるため、どこでも機能する例を提供することは難しく、PowerShell Core を使用すると問題は解消されます。そのため、このコースのすべての例は PowerShell Core を使用してテストされています。

AWS コマンドラインインターフェイス (CLI)

AWS コマンドラインインターフェイス (CLI) は、すべての AWS リソースをコマンドラインから管理できるオープンソースツールです。これらのアクションは手動で実行することも、選択したスクリプト言語を使用して自動的に実行することもできます。このツールは Linux、Windows、macOS で利用できます。

ほとんどの場合、AWS CLI のバージョン 2 をインストールする必要があります。これは、AWS の最新特徴量をすべてサポートしているためです。AWS CLI のバージョン 1 を使用する特別な理由がない限り、バージョン 2 を使用してください。

AWS サービスに新しい機能が追加されると、AWS CLI ツールが更新され、これらの機能を管理できるようになります。AWS CLI ツールは頻繁に更新されるため、新しいバージョンに注意する必要があります。

インストール

AWS CLI は Linux、Windows、macOS で利用できます。インストール方法は、オペレーティングシステムによって異なります。詳細な手順は、AWS ページ「AWS CLI の最新バージョンをインストールまたは更新する」に記載されています。 AWS では、パッケージ管理ソフトウェアを使用して AWS CLI をインストールしないことをお勧めします。代わりに、上記のリンクを使用してください。

最新の機能を利用するには、AWS CLI を随時更新する必要があることに注意してください。

お使いの AWS CLI のバージョンを確認するには、次のコマンドを実行します。

aws --version

次のようなレスポンスが表示されます。

aws-cli/2.5.4 Python/3.9.11 Windows/10 exe/AMD64 prompt/off

これにより、AWS CLI のバージョン 2.5.4 がインストールされていることがわかります。

AWS CLI の最新バージョンを確認するには、 https://github.com/aws/aws-cli/blob/v2/CHANGELOG.rst にアクセスしてください。下の「CHANGELOG」が最新リリースのバージョンになります。これを書いている時点では 2.7.2 なので、AWS CLI を更新する必要があります。

概要と主な機能

AWS CLI を使用すると、すべての AWS リソースを管理できます。AWS CLI には、探しているリソースを見つけるのに役立つ強力なクエリ機能とフィルタリング機能が含まれています。ご想像のとおり、AWS CLI では Lambda 関数を一覧表示、表示、管理、および呼び出すことができます。

例を含む詳細なドキュメントは、AWS CLI コマンドリファレンスで入手できます。

.NET Core 用 AWS Lambda-テンプレート

AWS CLI を使用すると、すべての AWS リソースを管理できます。AWS CLI には、探しているリソースを見つけるのに役立つ強力なクエリ機能とフィルタリング機能が含まれています。ご想像のとおり、AWS CLI では Lambda 関数を一覧表示、表示、管理、および呼び出すことができます。

例を含む詳細なドキュメントは、AWS CLI コマンドリファレンスで入手できます。

.NET Core 用 AWS Lambda-テンプレート

Visual Studio と Rider を使用する場合、AWS ツールキットには、AWS Lambda 関数を使い始めるのに役立つさまざまな C# (および F#) プロジェクトテンプレートが用意されています。

これらのテンプレートは、最も単純なもの、つまり文字列を受け取り、それを大文字に変換して文字列を返す Lambda 関数から始まります。それ自体は非常にシンプルですが、コードの記述と AWS Lambda のデプロイがいかに簡単かを始めて、ほんの数分で確認するには良い場所です。

より複雑なテンプレートも用意されています。これらのテンプレートは、.NET Web アプリケーションまたは API アプリケーションを完全にセットアップし、ロール、権限、バケット、API ゲートウェイなど、必要なインフラストラクチャをすべて構築します。

ほとんどのプロジェクトテンプレートには src ディレクトリと test ディレクトリが付属しており、アプリケーションの成長に合わせて拡張できるユニットテスト機能をすぐに利用できます。テストプロジェクトは、Lambda 関数がどのように機能するかを学ぶのに役立ち、コードをデバッグする簡単な方法を提供します。

インストール

Helm チャートをインストールするには、次のコマンドを実行します。

dotnet new -i "Amazon.Lambda.Templates::*"

概要と主な機能

インストールが完了したら、dotnet new コマンドを使用して新しい Lambda 関数プロジェクトを作成します。

使用可能なプロジェクトテンプレートのリストを表示するには、以下のコマンドを実行します。

dotnet new lambda --list

次のような出力が表示されます (使用可能なテンプレートは定期的に変更されることに注意してください)。

一部のテンプレートの短縮名が「serverless」で始まっていることに気付くかもしれません。」で始まるものもあれば、「lambda」で始まるものもあります。」。

「サーバーレス」で始まるもの.AWS サーバーレスアプリケーションモデル (SAM) を使用して Lambda 関数をデプロイし、Lambda 関数が使用する必要なインフラストラクチャを構築します。AWS SAM は、AWS 上でサーバーレスアプリケーションを構築できるオープンソースのフレームワークです。Lambda 関数の定義に加えて、AWS SAM では API ゲートウェイ、データベース、イベントソースなどの他のリソースを定義できます。

プロジェクト名/src/プロジェクト名ディレクトリに移動すると、serverless.template というファイルが表示されます。これにより、必要なインフラストラクチャと、それを Lambda 関数に接続する方法が定義されます。全体として「サーバーレス」。上記のテンプレートでは、API ゲートウェイを使用して HTTP リクエストを Lambda 関数にルーティングします。

「lambda」で始まるテンプレートはサーバーレスアプリケーションモデルを使用せず、他のインフラストラクチャをセットアップしないでください。他のインフラストラクチャが必要な場合は、自分でセットアップする必要があります。たとえば、Lambda.Kinesis プロジェクトテンプレートには、受信した Kinesis イベントの処理方法が示されていますが、Kinesis ストリームが自動的に作成されるわけではなく、Kinesis が Lambda 関数をトリガーするのに必要な関連権限も追加されていません。

Lambda.EmptyFunction テンプレートに基づいて新しいプロジェクトを作成するには、以下を実行します。

dotnet new lambda.EmptyFunction

ツールはオープンソースで、GitHub で閲覧できます。

https://github.com/aws/aws-lambda-dotnet#dotnet-cli-templates

他のコマンドラインツールと同様、関連する GitHub ページをチェックして、新しいバージョンがいつリリースされるかを確認する必要があります。

.NET CLI 用の AWS 拡張機能 (dotnet lambda ...)

AWS CLI ツールではすべての AWS リソースを管理できますが、.NET CLI 用 AWS Extensions は特に Lambda 関数に重点を置いており、.NET ツール、つまり dotnet lambda として呼び出されます。

インストール

dotnet tool install -g Amazon.Lambda.Tools

正しくインストールされていることを確認するには、以下を実行します。

dotnet lambda

これにより、使用できるコマンドの概要とバージョン番号が出力されます。

概要と主な機能

このツールはどのシェルからでも機能し、Visual Studio Code および Rider 内のターミナルから使用する場合に特に便利です。これにより、一般的な Lambda 関数関連のタスクを実行できます。

たとえば、すべての Lambda 関数を一覧表示するには、以下を使用できます。

dotnet lambda list-functions

もしくは、Lambda 関数の呼び出し:

dotnet lambda invoke-function functionName 

Lambda 関数をデプロイすることもできます。dotnet Lambda テンプレート (上記参照) を使用して Lambda 関数を作成したら、次のコマンドを使用して関数を AWS にデプロイできます。

dotnet lambda deploy-function

これにより、ビルドとガイド付きのデプロイプロセスが開始されます。ツールは、Lambda 関数名、関数に割り当てる (または新しいロールを作成する) ロールの入力を求めます。新しいロールを作成した場合、その新しいロールのアクセス権限ポリシーを選択するように求められます。その後、ツールは関数を AWS にデプロイし、数秒以内に呼び出せるようになります。

使用可能なコマンドラインオプションをすべて表示するには、-を使用してください

dotnet lambda deploy-function --help

各コマンドの背後には多くの機能がある場合があるため、各コマンドラインが複数のオプションをサポートしていることを理解することが重要です。たとえば、更新関数構成では、Lambda 関数の URL を有効にして設定します。この機能は deployy-function コマンドでは使用できません。Lambda サービスに関する最新のリリースドキュメントと機能を常に把握しておくことは、最新の機能を理解して活用するのに役立つため、重要です。

このツールは、コードを開発したり AWS について学んだりする際に、Lambda 関数を管理するのに非常に便利で強力ですが、ある程度の成熟度に達したアプリケーションへのデプロイには、堅牢な CI/CD プロセスを使用することを強くお勧めします。AWS はすべての主要な CI/CD ツールをサポートしています。

AWS Tools for PowerShell

AWS Tools for PowerShell は、一連の PowerShell モジュールを通じて AWS SDK for .NET を公開します。PowerShell スクリプトに精通しているユーザーにとって、PowerShell はデプロイメントスクリプトやメンテナンススクリプトを作成するための強力なツールになります。

AWS Tools for PowerShell は Windows、Mac、Linux にインストールでき、3 つのプラットフォームすべてで同じ機能セットを使用できます。

ツールは単一のモジュールで入手できるほか、必要に応じて必要なモジュールをダウンロードできるモジュール化されたバージョンもあります。

モジュール化されたバージョンは、実稼働環境におすすめです。

これらのバージョンチェックを選択する方法の詳細については、こちらをご覧ください。

インストール

Windows へのインストールについては、AWS Tools for PowerShell on Windows のインストールガイドを参照してください。

Linux または Mac にインストールする場合は、 AWS Tools for PowerShell on Linux or macOS のインストールガイドを参照してください。

概要と主な機能

AWS Tools for PowerShell で実行できるモジュール、そしてコマンドの数は非常に多いです。AWS Lambda では、ツールを使用して関数の一覧表示、表示、デプロイ、管理、呼び出しを行うことができます。

使用可能なコマンドをすべて表示するには、以下を実行します。

Get-Command -Module AWS.Tools.Lambda

すべてのコマンドの完全なドキュメントは、AWS Tools for PowerShell コマンドレットリファレンスにあります。左側のバーの Lambda セクションに移動してください。

すべての Lambda 関数を一覧表示するには、以下を実行します。

Get-LMFunctionList

Lambda 関数の呼び出し:

$Response=Invoke-LMFunction -FunctionName StringToUpperCase -Payload '"hello world"'

[System.IO.StreamReader]::new($Response.Payload).ReadToEnd() 

.NET 7 ネイティブ AOT 関数用ドッカー

2022 年 11 月、マイクロソフトは.NET 7 をリリースしました。このバージョンの .NET には Lambda マネージドランタイムはありませんが、 ネイティブの AOT (AOT) コンパイルでカスタムランタイムとして使用できます。

 このアプローチの主な利点は、.NET 7 関数のコールドスタートが大幅に高速化されることです。マネージドランタイムで .NET 6 を実行する同等の関数と、AOT コンパイルを使用する.NET 7 を実行するテストでは、.NET 7 関数の起動が最大 86% 速くなります。

AWS でのサーバーレス .NET アプリケーションの詳細については、「.NET 7 を使用して AWS Lambda でサーバーレス .NET アプリケーションを構築する」を参照してください。

.NET 7 Lambda 関数でコンパイルを使用するには、Docker をインストールして実行する必要があります。
Docker は Docker インストールの概要からダウンロードできます。

一部のツールの比較

知識のチェック

これで、モジュール 2「AWS Lambda を使用した .NET 開発用ツール」を完了しました。以下のテストでは、これまでに学んだことを確認できます。

1.IDE 用の AWS ツールキットの中で、最も多くの機能を備えているのはどれですか?(1 つ選択してください)

a.Visual Studio Code

b.Visual Studio

c.Rider

d.それらはすべて同じ機能を備えています

2..NET CLI 用 AWS 拡張機能をサポートしているオペレーティングシステムはどれですか?

a.Mac

b.Linux

c.Windows

d.上記のすべて

a.Homebrew

b.ピップ

c.ショコラティ

d.AWS から直接ダウンロード

回答:1-b、2 d、3 d

まとめ

このモジュールでは、.NET Lambda 関数を開発するための最も一般的で重要なツールについて学習しました。これで、利用できるツール、インストール方法、基本的な使用方法がわかりました。さらに詳細を確認するためのリンクもあります。

しかし、このような多くのことと同様に、学ぶための最良の方法は実験を始めることです。次のモジュールでは、.NET を Lambda サービスで使用する方法を学習します。

このページは役に立ちましたか?

.NET を AWS LAMBDA にデプロイする