

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Lambda
<a name="lambda-index"></a>

を使用して .NET Core ベースの C\$1 Lambda 関数を開発およびデプロイします AWS Toolkit for Visual Studio。 AWS Lambda は、サーバーのプロビジョニングや管理を行わずにコードを実行できるようにするコンピューティングサービスです。Toolkit for Visual Studio には、Visual Studio 用の AWS Lambda .NET Core プロジェクトテンプレートが含まれています。

詳細については AWS Lambda、[AWS Lambda ](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)デベロッパーガイドを参照してください。

.NET Core の詳細については、Microsoft の「[.NET Core](https://docs.microsoft.com/en-us/dotnet/articles/core/)」ガイドを参照してください。Windows、macOS、Linux の各プラットフォームでの、.NET Core の前提条件とインストール方法については、「[.NET Core のダウンロード](https://www.microsoft.com/net/download/core)」を参照してください。

以下のトピックでは、 Toolkit for Visual Studio AWS Lambda を使用して を操作する方法について説明します。

**Topics**
+ [基本 AWS Lambda プロジェクト](lambda-creating-project-in-visual-studio.md)
+ [Docker イメージの作成の基本 AWS Lambda プロジェクト](lambda-creating-project-docker-image.md)
+ [チュートリアル: を使用してサーバーレスアプリケーションを構築およびテストする AWS Lambda](lambda-build-test-severless-app.md)
+ [チュートリアル: Amazon Rekognition Lambda アプリケーションの作成](lambda-rekognition-example.md)
+ [チュートリアル: AWS Lambda で Amazon ログ記録フレームワークを使用してアプリケーションログを作成する](cw-log-frameworks.md)

# 基本 AWS Lambda プロジェクト
<a name="lambda-creating-project-in-visual-studio"></a>

 AWS Toolkit for Visual Studioでは、Microsoft .NET Core プロジェクト テンプレートを使用して Lambda 関数を作成できます。

## Visual Studio .NET Core Lambda プロジェクトを作成する
<a name="create-a-visual-studio-net-core-lam-project"></a>

Lambda-Visual Studio テンプレートとブループリントを使用して、プロジェクトの初期化を高速化できます。Lambda ブループリントには、柔軟なプロジェクト基盤の作成を簡素化する、事前に作成された関数が含まれています。

**注記**  
Lambda サービスでは、パッケージタイプごとにデータ制限があります。データ制限の詳細については、*AWS Lambda *ユーザーガイドの「[Lambda クォータ](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)」のトピックを参照してください。

**Visual Studio で Lambda プロジェクトを作成するには**

1. Visual Studio の **[ファイル]** メニューを展開し、**[新規]** を展開し、**[プロジェクト]** を選択します。

1. **[新しいプロジェクト]** ダイアログボックスで、**[言語]**、**[プラットフォーム]**、および **[プロジェクトタイプ]** ドロップダウンボックスを [すべて] に設定し、**[検索]** フィールドに「**aws lambda**」と入力します。[**AWS Lambda プロジェクト (.NET Core - C\$1)**] テンプレートを選択します。

1. **[名前]** フィールドに「**AWSLambdaSample**」と入力し、ファイルの **[場所]**を指定して、**[作成]** を選択して続行します。

1. **[ブループリントの選択]** ページで、**[空の関数]** ブループリントを選択し、**[完了]** を選択して Visual Studio プロジェクトを作成します。

## プロジェクトファイルを確認する
<a name="review-the-project-files"></a>

見直すべきプロジェクトファイルとして、`aws-lambda-tools-defaults.json` と `Function.cs` の 2 つがあります。

次の例は、プロジェクトの一部として自動的に作成される `aws-lambda-tools-defaults.json` ファイルを示しています。このファイルのフィールドを使用してビルドオプションを設定できます。

**注記**  
 Visual Studio のプロジェクトテンプレートにはさまざまなフィールドが含まれています。以下の点に注意してください。  
**関数ハンドラー**: Lambda 関数の実行時に実行されるメソッドを指定します。
**[関数ハンドラー]** フィールドに値を指定すると、公開ウィザードにその値が自動的に入力されます。
ただし、関数、クラス、またはアセンブリの名前を変更した場合、`aws-lambda-tools-defaults.json` ファイル内の対応するフィールドも更新する必要があります。

```
{
  "Information": [
    "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.",
    "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.",
    "dotnet lambda help",
    "All the command line options for the Lambda command can be specified in this file."
  ],
  "profile": "default",
  "region": "us-west-2",
  "configuration": "Release",
  "function-architecture": "x86_64",
  "function-runtime": "dotnet8",
  "function-memory-size": 512,
  "function-timeout": 30,
  "function-handler": "AWSLambdaSample::AWSLambdaSample.Function::FunctionHandler"
}
```

`Function.cs` ファイルを調べます。`Function.cs` は、c\$1 関数を Lambda 関数として公開できるように定義します。この`FunctionHandler`は、Lambda 関数の実行時に実行される Lambda 関数です。このプロジェクトでは、`FunctionHandler` という 1 つの関数が定義され、入力テキストに `ToUpper()` を呼び出します。

これでプロジェクトを Lambda に発行できるようになりました。

## Lambda への発行
<a name="publish-to-lam"></a>

以下の手順と画像は、 AWS Toolkit for Visual Studioを使用して関数を Lambda にアップロードする方法を示しています。

![\[関数のテストページを呼び出す\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/uploadnet8.png)


**Lambda への関数の公開**

1. **ビュー**を展開し、 AWS Explorer を選択して **AWS Explorer** に移動します。

1. **Solution Explorer** で、公開するプロジェクトのコンテキストメニューを開き (右クリック）、**Lambda に発行を選択して AWS Lambda** **関数のアップロード**ウィンドウを開きます。

1. [**Lambda 関数のアップロード**] ウィンドウで、以下のフィールドに入力します。

   1. **パッケージタイプ**: [**Zip**] を選択します。ZIP ファイルはビルドプロセスの結果として作成され、Lambda にアップロードされます。または、**[パッケージタイプ]** で [**Image**] を選択することもできます。「[チュートリアル: 基本 AWS Lambda プロジェクトによる Docker イメージの作成](lambda-creating-project-docker-image.md)」では、**[パッケージタイプ]** で [**Image**] を使用した公開方法について説明しています。

   1. **Lambda ランタイム**: ドロップダウンメニューから Lambda ランタイムを選択します。

   1. **アーキテクチャ**: 任意のアーキテクチャの矢印を選択します。

   1. **関数名**: **[新しい関数を作成する]** の矢印を選択し、Lambda インスタンスの表示名を入力します。この名前は AWS Explorer と AWS マネジメントコンソール ディスプレイの両方で参照されます。

   1. **ハンドラー**: このフィールドを使用して関数ハンドラーを指定します。例: **AWSLambdaSample::AWSLambdaSample.Function::FunctionHandler**。

   1. *(オプション)* **[説明]**: AWS マネジメントコンソールでインスタンスに表示される説明文を入力します。

   1. **設定**: ドロップダウンメニューから任意の設定を選択します。

   1. **フレームワーク**: ドロップダウンメニューから任意のフレームワークを選択します。

   1. **設定の保存**: このボックスを選択すると、現在の設定が `aws-lambda-tools-defaults.json` に保存され、今後のデプロイメントのデフォルトとして使用されます。

   1. **[次へ]** を選択して、**[関数の高度な詳細]** ウィンドウに進みます。

1. **[関数の高度な詳細]** ウィンドウで、以下のフィールドに入力します。

   1. **ロール名**: アカウントに関連付けられているロールを選択します。ロールは、 関数のコードによって行われた AWS サービス呼び出しの一時的な認証情報を提供します。ロールがない場合は、スクロールしてドロップダウンセレクタの** AWS マネージドポリシーに基づいて新しいロール**を見つけ、**AWSLambdaBasicExecutionRole** を選択します。このロールには最小限のアクセス許可があります。
**注記**  
アカウントには IAM ListPolicies アクションを実行できるアクセス許可が必要です。この権限がない場合には、[**Role Name (ロール名)**] リストは空となり、続行できません。

   1. *(オプション)* Lambda 関数が Amazon VPC 上のリソースにアクセスする場合、サブネットおよびセキュリティグループを選択します。

   1. *(オプション)* Lambda 関数に必要となる環境変数を設定します。キーは、無料のデフォルトのサービスキーによって自動的に暗号化されます。または、料金が発生する AWS KMS キーを指定することもできます。[KMS](https://aws.amazon.com/kms/) は、データの暗号化に使用される暗号化キーの作成と管理を行うために使用できる、マネージド型サービスです。 AWS KMS キーがある場合は、リストから選択できます。

1. **[アップロード]** を選択すると、**[関数のアップロード中]** ウィンドウが開き、アップロードプロセスが開始されます。
**注記**  
**関数のアップロード**中に、関数のアップロードページが表示されます AWS。アップロード後にレポートを表示するためにウィザードを開いたままにするには、アップロードが完了する前に、フォームの最後にある **[Automatically close wizard on successful completion]** (正常完了時にウィザードを自動で閉じる) のチェックボックスをオフにします。  
関数がアップロードされると、Lambda 関数はライブ状態になります。**[Function:]** (関数:) ビューページが開き、新しい Lambda 関数の設定が表示されます。

1. **[関数のテスト]** タブの自由文入力フィールドに 「`hello lambda!`」と入力し、**[呼び出し]** を選択して Lambda 関数を手動で呼び出します。入力したテキストは、大文字に変換されて **[レスポンス]** タブに表示されます。
**注記**  
**[AWS Explorer]** で、**AWS Lambda** ノードの下にあるデプロイ済みインスタンスをダブルクリックすると、いつでも **[関数:]** ビューを再び開くことができます。  
![\[関数のテストページを呼び出す\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/invokeBasic.PNG)

1. *(オプション)* Lambda 関数が正常に発行されたことを確認するには、 にログイン AWS マネジメントコンソール し、Lambda を選択します。コンソールには、先ほど作成した関数を含め、発行されたすべての Lambda 関数が表示されます。

## クリーンアップ
<a name="cleanup-lam"></a>

この例で開発を続行しない場合は、デプロイした関数を削除して、アカウント内の未使用のリソースに対して請求されないようにします。

**注記**  
Lambda は、ユーザーに代わって Lambda 関数を自動でモニタリングし、Amazon CloudWatch からメトリクスを報告します。関数をモニタリングおよびトラブルシューティングするには、 AWS Lambda デベロッパーガイドの[Amazon CloudWatch を使用した AWS Lambda 関数のトラブルシューティングとモニタリング](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html)」トピックを参照してください。

**関数を削除するには**

1. **AWS Explorer** から **AWS Lambda** ノードを展開します。

1. デプロイしたインスタンスを右クリックし、**[削除]**を選択します。

# Docker イメージの作成の基本 AWS Lambda プロジェクト
<a name="lambda-creating-project-docker-image"></a>

Toolkit for Visual Studio を使用して、 AWS Lambda 関数を Docker イメージとしてデプロイできます。Docker を使用すると、ランタイムをより細かく制御できます。例えば、.NET 8.0 などのカスタムランタイムを選択できます。Docker イメージは、他のコンテナイメージと同じ方法でデプロイします。このチュートリアルは、「[チュートリアル: 基本的な Lambda プロジェクト](lambda-creating-project-in-visual-studio.md)」に忠実に従っていますが、2 つには以下の違いがあります。
+ このプロジェクトには Dockerfile が含まれています。
+ 別の公開設定が選択されています。

Lambda コンテナイメージに関する詳細については、*AWS Lambda デベロッパーガイド*の「[Lambda デプロイパッケージ](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html)」を参照してください。

Lambda の使用の詳細については AWS Toolkit for Visual Studio、このユーザーガイドの [トピックの AWS Lambda 「テンプレートの使用 AWS Toolkit for Visual Studio](lambda-index.md)」を参照してください。

## Visual Studio .NET Core Lambda プロジェクトを作成する
<a name="create-a-visual-studio-net-core-lam-project"></a>

Lambda Visual Studio テンプレートとブループリントを使用して、プロジェクトの初期化を高速化できます。Lambda ブループリントには、柔軟なプロジェクト基盤の作成を簡素化する、事前に作成された関数が含まれています。

**Visual Studio .NET Core Lambdaプロジェクトを作成するには**

1. Visual Studio の **[ファイル]** メニューを展開し、**[新規]** を展開し、**[プロジェクト]** を選択します。

1. **[新しいプロジェクト]** ダイアログボックスで、**[言語]**、**[プラットフォーム]**、および **[プロジェクトタイプ]** ドロップダウンボックスを [すべて] に設定し、**[検索]** フィールドに「**aws lambda**」と入力します。[**AWS Lambda プロジェクト (.NET Core - C\$1)**] テンプレートを選択します。

1. **[プロジェクト名]** フィールドに「**AWSLambdaDocker**」と入力し、ファイルの **[場所]** を指定して **[作成]** を選択します。

1. **[ブループリントの選択]** ページで、**[.NET 8 (コンテナイメージ)]** ブループリントを選択し、**[完了]** を選択して Visual Studio プロジェクトを作成します。これでプロジェクトの構造とコードを確認できるようになりました。

## プロジェクトファイルを確認する
<a name="review-the-project-files"></a>

以下のセクションでは、**.NET 8 (コンテナイメージ)** ブループリントによって作成された 3 つのプロジェクトファイルについて説明します。

1. `Dockerfile`

1. `aws-lambda-tools-defaults.json`

1. `Function.cs`

### 1. Dockerfile
<a name="dockerfile"></a>

`Dockerfile` は 3 つの主要なアクションを実行します。
+ `FROM`: このイメージで使用するベースイメージを確立します。このベースイメージは、.NET ランタイム、Lambda ランタイム、および Lambda .NET プロセスのエントリポイントを提供するシェルスクリプトを提供します。
+ `WORKDIR`: イメージの内部作業ディレクトリを として確立します`/var/task`。
+ `COPY`: ビルドプロセスから生成されたファイルを、ローカルの場所からイメージのワークディレクトリにコピーします。

以下は、オプションで指定できる `Dockerfile` アクションです。
+ `ENTRYPOINT`: ベースイメージには、イメージの起動時に実行されるスタートアッププロセスである `ENTRYPOINT` が既に含まれています。独自のエントリを指定する場合は、その基本エントリポイントを上書きします。
+ `CMD`: 実行する AWS カスタムコードを指示します。カスタムメソッドには完全修飾名が必要です。この行は Dockerfile に直接含める必要があるか、発行プロセス中に指定することができます。

  ```
  # Example of alternative way to specify the Lambda target method rather than during the publish process.
  CMD [ "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler"]
  ```

以下は、.NET 8 (コンテナイメージ) ブループリントによって作成された Dockerfile の例です。

```
FROM public.ecr.aws/lambda/dotnet:8

WORKDIR /var/task

# This COPY command copies the .NET Lambda project's build artifacts from the host machine into the image. 
# The source of the COPY should match where the .NET Lambda project publishes its build artifacts. If the Lambda function is being built 
# with the AWS .NET Lambda Tooling, the `--docker-host-build-output-dir` switch controls where the .NET Lambda project
# will be built. The .NET Lambda project templates default to having `--docker-host-build-output-dir`
# set in the aws-lambda-tools-defaults.json file to "bin/Release/lambda-publish".
#
# Alternatively Docker multi-stage build could be used to build the .NET Lambda project inside the image.
# For more information on this approach checkout the project's README.md file.
COPY "bin/Release/lambda-publish"  .
```

### 2. aws-lambda-tools-defaults.json
<a name="aws-lambda-tools-defaults"></a>

`aws-lambda-tools-defaults.json` ファイルは、Toolkit for Visual Studio のデプロイウィザードと .NET Core CLI のデフォルト値を指定するために使用されます。`aws-lambda-tools-defaults.json` ファイルで設定できるフィールドについて以下に説明します。
+ `profile`: AWS プロファイルを設定します。
+ `region`: リソースが保存されている AWS リージョンを設定します。
+ `configuration`: 関数の公開に使用される設定を設定します。
+ `package-type`: デプロイパッケージタイプをコンテナイメージまたは .zip ファイルアーカイブに設定します。
+ `function-memory-size`: 関数のメモリ割り当てを MB 単位で設定します。
+ `function-timeout`: タイムアウトとは、Lambda 関数がタイムアウトするまでの最大実行時間です。これは 1 秒単位で調整でき、最大値は 15 分です。
+ `docker-host-build-output-dir`: `Dockerfile` 内の指示に対応するビルドプロセスの出力ディレクトリを設定します。
+ `image-command`: メソッド、つまりLambda 関数で実行するコードの完全修飾名です。構文は次のとおりです：`{Assembly}::{Namespace}.{ClassName}::{MethodName}`詳細については、「[ハンドラー署名](https://docs.aws.amazon.com/lambda/latest/dg/csharp-handler.html#csharp-handler-signatures)」を参照してください。ここで `image-command` を設定すると、後ほど Visual Studio の発行ウィザードにこの値が事前入力されます。

以下は、.NET 8 (コンテナイメージ) ブループリントによって作成された aws-lambda-tools-defaults.json の例です。

```
{
  "Information": [
    "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.",
    "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.",
    "dotnet lambda help",
    "All the command line options for the Lambda command can be specified in this file."
  ],
  "profile": "default",
  "region": "us-west-2",
  "configuration": "Release",
  "package-type": "image",
  "function-memory-size": 512,
  "function-timeout": 30,
  "image-command": "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler",
  "docker-host-build-output-dir": "./bin/Release/lambda-publish"
}
```

### 3. Function.cs
<a name="w2aac15c45c16c17c21"></a>

`Function.cs` ファイルは、Lambda 関数として公開する C\$1 関数を定義します。-`FunctionHandler`は、Lambda 関数の実行時に実行される Lambda 関数です。このプロジェクトでは、`FunctionHandler` は入力テキストに対して `ToUpper()` を呼び出します。

## Lambda に発行する
<a name="publish-to-lam"></a>

ビルドプロセスによって生成された Docker イメージは、Amazon Elastic Container Registry (Amazon ECR) にアップロードされます。Amazon ECR は、デベロッパーが Docker コンテナイメージを簡単に保存、管理、デプロイできる完全マネージド型の Docker コンテナレジストリです。Amazon ECR はイメージをホストし、Lambda は呼び出されたときにプログラムされた Lambda 機能を提供するために参照します。

**関数を Lambdaに発行するには**

1. **[Solution Explorer]** で、プロジェクトのコンテキストメニュー (右クリック) を開き、**[ AWS Lambda Lambda に公開]** を選択して **[Lambda 関数のアップロード]** ウィンドウを開きます。

1. **[Lambda 関数のアップロード]** ページで、次を実行します。  
![\[イメージベースの Lambda 関数を に発行するためのアップロード画面 AWS\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-docker-03192024.png)

   1.  **[Package Type]** (パッケージタイプ) については、プロジェクト内で発行ウィザードが `Dockerfile` を検出したので、**Image** が **パッケージタイプ**として自動的に選択されます。

   1. **[Function Name]** (関数名) には、Lambda インスタンスの表示名を入力します。この名前は、Visual Studio の AWS Explorer および AWS マネジメントコンソールの両方に表示される参照名です。

   1.  **[Description]** (説明) には、 AWS マネジメントコンソール内のインスタンスとともに表示するテキストを入力します。

   1. **[Image Command]** (イメージコマンド) では、Lambda 関数で実行するメソッドへの完全修飾パスを入力します：**AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler**
**注記**  
ここに入力されたメソッド名は、Dockerfile 内のすべての CMD 命令を上書きします。**[Image Command]** (イメージコマンド) を入力するのが、オプションであるのは、`Dockerfile`が`CMD`Lambda 関数の起動方法を指示するを含む場合においてだけです。

   1. **[Image Repo]** (イメージ Repo) では、新規もしくは既存の Amazon Elastic コンテナレジストリの名前を入力します。ビルドプロセスが作成する Docker イメージは、このレジストリにアップロードされます。公開されている Lambda 定義は、その Amazon ECR イメージを参照します。

   1.  **[Image Tag]** (イメージタグ)で、リポジトリ内のイメージに関連付ける Docker タグを入力します。

   1. [**次へ**] を選択します。

1. **[Advanced Function Details]** (アドバンスト関数の詳細) ページの **[Role Name]** (ロール名) で、アカウントに関連付けられているロールを選択します。このロールは、関数内のコードによって行われる Amazon Web Services コールに一時的な認証情報を提供するために使用されます。ロールがない場合は、** AWS 管理ポリシーに基づいて新しいロール**を選択し、**AWSLambdaBasicExecutionRole** を選択します。
**注記**  
アカウントには IAM ListPolicies アクションを実行できるアクセス許可が必要であり、そうしないと **[Role Name]** (ロール名) リストは空となります。

1. **[アップロード]** を選択し、アップロードと公開のプロセスを開始します。
**注記**  
-関数がアップロード中に**アップロード機能**ページが表示されます。発行プロセスは、設定パラメータに基づいてイメージをビルドし、必要に応じて Amazon ECR リポジトリを作成し、必要ならばイメージをリポジトリにアップロードし、そのイメージを使用してそのリポジトリを参照する Lambda を作成します。  
関数がアップロードされると、**関数** ページが開き、新しい Lambda 関数の設定が表示されます。

1. Lambda 関数を手動で呼び出すには、**[Test Function]** (関数のテスト) タブで、リクエストの自由文入力フィールドに `hello image based lambda` を入力してから **[Invoke]** (呼び出し) を選択します。大文字に変換されたテキストは、**[Response]** (レスポンス) に表示されます。  
![\[発行された [Function] (関数) ビューページの [Test Function] (関数のテスト) タブには、Lambda メソッドを手動で呼び出すためのボタンがあります。\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/lambda-invoke-docker-03192024.png)

1. リポジトリを参照するには、**AWS Explorer** で **[Amazon Elastic Container Service]** の下にある **[Repositories]** (リポジトリ) を選択します。

   **[AWS Explorer]** で、**AWS Lambda** ノードの下にあるデプロイ済みインスタンスをダブルクリックすると、いつでも **[関数:]** ビューを再び開くことができます。
**注記**  
 AWS Explorer ウィンドウが開いていない場合は、**ビュー** -> **AWS Explorer** を使用してドッキングできます。

1. **[Configuration]** (設定) タブに、イメージ固有の追加設定オプションがあります。このタブには、Dockerfile 内で指定された可能性がある `ENTRYPOINT`、`CMD`、および `WORKDIR` に上書きする方法が用意されています。**説明**アップロード/公開中に入力した説明 (ある場合) です。

## クリーンアップ
<a name="cleanup-lam"></a>

この例で開発を続行しない場合は、デプロイされた関数および ECR イメージを削除して、アカウント内の未使用のリソースに対して請求されないようにすることを忘れないでください。
+ 関数を削除するには、**AWS Explorer** で **AWS Lambda** ノードの下にあるデプロイ済みインスタンスを右クリックします。
+ リポジトリは、**AWS Explorer ** で **[Amazon Elastic Container Service]** - **[Repositories]** (リポジトリ) の下で削除できます。

## 次のステップ
<a name="next-steps-lam"></a>

Lambda イメージの作成およびテストについては、「[Lambda でのコンテナイメージの使用](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html)」を参照してください。

コンテナイメージのデプロイ、アクセス許可、および構成設定の上書きの詳細については、「[関数の設定](https://docs.aws.amazon.com/lambda/latest/dg/configuration-images.html)」を参照してください。

# チュートリアル: を使用してサーバーレスアプリケーションを構築およびテストする AWS Lambda
<a name="lambda-build-test-severless-app"></a>

 AWS Toolkit for Visual Studio テンプレートを使用してサーバーレス Lambda アプリケーションを構築できます。Lambda プロジェクトテンプレートには、**AWS サーバーレスアプリケーション** (SAM) の AWS Toolkit for Visual Studio 実装であるサーバーレスアプリケーション用のテンプレートが含まれています。 [AWSAWS](https://github.com/awslabs/serverless-application-model)このプロジェクトタイプを使用すると、 を使用してデプロイをオーケストレーションし、 AWS Lambda 関数のコレクションを開発し、アプリケーション全体で必要な AWS リソース AWS CloudFormation でデプロイできます。

の設定に関する前提条件と情報については AWS Toolkit for Visual Studio、 [AWS Toolkit for Visual Studio の AWS 「Lambda テンプレートの使用](lambda-index.md)」を参照してください。

**Topics**
+ [新しい AWS サーバーレスアプリケーションプロジェクトを作成する](#create-a-new-aws-serverless-application-project)
+ [サーバーレスアプリケーションファイルの確認](#examine-the-files-in-the-serverless-application)
+ [サーバーレスアプリケーションのデプロイ](#deploy-the-serverless-application)
+ [サーバーレスアプリケーションのテスト](#test-the-serverless-application)

## 新しい AWS サーバーレスアプリケーションプロジェクトを作成する
<a name="create-a-new-aws-serverless-application-project"></a>

AWS サーバーレスアプリケーションプロジェクトは、サーバーレス CloudFormation テンプレートを使用して Lambda 関数を作成します。 CloudFormation テンプレートを使用すると、データベースなどの追加のリソースを定義し、IAM ロールを追加し、一度に複数の関数をデプロイできます。これは、単一の AWS Lambda 関数の開発とデプロイに焦点を当てた Lambda プロジェクトとは異なります。

次の手順では、新しい AWS サーバーレスアプリケーションプロジェクトを作成する方法について説明します。

1. Visual Studio の **[ファイル]** メニューを展開し、**[新規]** を展開し、**[プロジェクト]** を選択します。

1. **[新しいプロジェクト]** ダイアログボックスで、**[言語]**、**[プラットフォーム]**、および **[プロジェクトタイプ]** のドロップダウンボックスが [すべて...] に設定されていることを確認して、**[検索]** フィールドに **aws lambda** を入力します。

1. **AWS Serverless Application with Tests (.NET Core - C\$1)** テンプレートを選択します。
**注記**  
**AWS Serverless Application with Tests (.NET Core - C\$1)** テンプレートが結果の上部に入力されない可能性があります。

1. **[次へ]** をクリックして、**[新しいプロジェクトを設定]** ダイアログを開きます。

1. **[新しいプロジェクトを設定]** ダイアログで、**[名前]** に **ServerlessPowertools** と入力し、残りのフィールドを必要に応じて入力します。**[作成]** ボタンを選択して、**[ブループリントを選択]** ダイアログに進みます。

1. **[ブループリントを選択]** ページで、**[Powertools for AWS Lambda]** ブループリントを選択し、**[完了]** を選択して Visual Studio プロジェクトを作成します。

## サーバーレスアプリケーションファイルの確認
<a name="examine-the-files-in-the-serverless-application"></a>

以下のセクションでは、プロジェクト用に作成された 3 つのサーバーレスアプリケーションファイルについて詳しく説明します。

1. serverless.template

1. Functions.cs

1. aws-lambda-tools-defaults.json

### 1. serverless.template
<a name="blogcs"></a>

`serverless.template` ファイルは、サーバーレス関数やその他の AWS リソースを宣言するための AWS CloudFormation テンプレートです。このプロジェクトに含まれるファイルには、Amazon API Gateway を通じて `HTTP *Get*` オペレーションとして公開される単一の Lambda 関数の宣言が含まれています。このテンプレートを編集して、既存の関数をカスタマイズしたり、アプリケーションに必要な関数やその他のリソースを追加したりできます。

次は、`serverless.template` ファイルの例です。

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Transform": "AWS::Serverless-2016-10-31",
  "Description": "An AWS Serverless Application.",
  "Resources": {
    "Get": {
      "Type": "AWS::Serverless::Function",
      "Properties": {
         "Architectures": [
            "x86_64"
            ],
         "Handler": "ServerlessPowertools::ServerlessPowertools.Functions::Get",
         "Runtime": "dotnet8",
         "CodeUri": "",
         "MemorySize": 512,
         "Timeout": 30,
         "Role": null,
         "Policies": [
            "AWSLambdaBasicExecutionRole"
            ],
         "Environment": {
            "Variables": {
               "POWERTOOLS_SERVICE_NAME": "ServerlessGreeting",
               "POWERTOOLS_LOG_LEVEL": "Info",
               "POWERTOOLS_LOGGER_CASE": "PascalCase",
               "POWERTOOLS_TRACER_CAPTURE_RESPONSE": true,
               "POWERTOOLS_TRACER_CAPTURE_ERROR": true,
               "POWERTOOLS_METRICS_NAMESPACE": "ServerlessGreeting"
               }
            },
         "Events": {
            "RootGet": {
               "Type": "Api",
               "Properties": {
                  "Path": "/",
                  "Method": "GET"
                  }
               }
            }
         }
      }
   },
  "Outputs": {
    "ApiURL": {
      "Description": "API endpoint URL for Prod environment",
      "Value": {
        "Fn::Sub": "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
      }
    }
  }
}
```

`...AWS:: Serverless::Function...` 宣言フィールドの多くは、Lambda プロジェクトのデプロイメントのフィールドと類似していることに注意してください。Powertools のログ記録、メトリクス、トレースは、次の環境変数を使用して設定されます。
+ POWERTOOLS\$1SERVICE\$1NAME=ServerlessGreeting
+ POWERTOOLS\$1LOG\$1LEVEL=Info
+ POWERTOOLS\$1LOGGER\$1CASE=PascalCase
+ POWERTOOLS\$1TRACER\$1CAPTURE\$1RESPONSE=true
+ POWERTOOLS\$1TRACER\$1CAPTURE\$1ERROR=true
+ POWERTOOLS\$1METRICS\$1NAMESPACE=ServerlessGreeting

環境変数の定義と詳細については、[「Powertools for AWS Lambda references](https://awslabs.github.io/aws-lambda-powertools-dotnet/references/)」ウェブサイトを参照してください。

### 2. Functions.cs
<a name="functionscs"></a>

`Functions.cs` は、テンプレートファイルで宣言された単一の関数にマッピングされた C\$1 メソッドを含むクラスファイルです。Lambda 関数は API Gateway からの `HTTP Get` メソッドに応答します。以下は、`Functions.cs` ファイルの例です。

```
public class Functions
{
    [Logging(LogEvent = true, CorrelationIdPath = CorrelationIdPaths.ApiGatewayRest)]
    [Metrics(CaptureColdStart = true)]
    [Tracing(CaptureMode = TracingCaptureMode.ResponseAndError)]
    public APIGatewayProxyResponse Get(APIGatewayProxyRequest request, ILambdaContext context)
    {
        Logger.LogInformation("Get Request");

        var greeting = GetGreeting();

        var response = new APIGatewayProxyResponse
        {
            StatusCode = (int)HttpStatusCode.OK,
            Body = greeting,
            Headers = new Dictionary (string, string) { { "Content-Type", "text/plain" } }
        };

        return response;
    }

    [Tracing(SegmentName = "GetGreeting Method")]
    private static string GetGreeting()
    {
        Metrics.AddMetric("GetGreeting_Invocations", 1, MetricUnit.Count);

        return "Hello Powertools for AWS Lambda (.NET)";
    }
}
```

### 3. aws-lambda-tools-defaults.json
<a name="functionscs"></a>

`aws-lambda-tools-defaults.json` は、Visual Studio 内の AWS デプロイウィザードのデフォルト値と、.NET Core CLI に追加された AWS Lambda コマンドを提供します。このプロジェクトに含まれる `aws-lambda-tools-defaults.json` ファイルの例を次に示します。

```
{
  "profile": "Default",
  "region": "us-east-1",
  "configuration": "Release",
  "s3-prefix": "ServerlessPowertools/",
  "template": "serverless.template",
  "template-parameters": ""
}
```

## サーバーレスアプリケーションのデプロイ
<a name="deploy-the-serverless-application"></a>

サーバーアプリケーションから以下のステップを実行します。

1. **Solution Explorer** から、プロジェクトのコンテキストメニューを開き (右クリック）、** AWS Lambda に発行**を選択して** AWS サーバーレスアプリケーションの発行**ダイアログを開きます。

1. ** AWS サーバーレスアプリケーションの発行**ダイアログで、 CloudFormation スタック名フィールドに**スタック**コンテナの名前を入力します。

1. **[S3 バケット]** フィールドで、アプリケーションバンドルがアップロードする Amazon S3 バケットを選択するか、**[新規...]** ボタンを選択して、新しい Amazon S3 バケットの名前を入力します。次に、**[公開]** を選択してアプリケーションを公開し、デプロイします。
**注記**  
 CloudFormation スタックと Amazon S3 バケットは同じ AWS リージョンに存在する必要があります。プロジェクトの残りの設定は、`serverless.template` ファイルで定義されます。  
![\[Publish AWS Serverless Application ダイアログの画像。\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-serverless-03192024.png)

1. 公開プロセス中に **[スタック]** ビューウィンドウが開き、デプロイが完了すると、**[ステータス]** フィールドに `CREATE_COMPLETE` と表示されます。  
![\[Visual Studio のデプロイメントスタックビュー ウィンドウの画像。\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-stackview-03192024.png)

## サーバーレスアプリケーションのテスト
<a name="test-the-serverless-application"></a>

スタックの作成が完了したら、**AWS サーバーレス URL** を使用してアプリケーションを表示できます。関数やパラメータを追加せずにこのチュートリアルを完了した場合、 AWS サーバーレス URL にアクセスすると、ウェブブラウザに というフレーズが表示されます`Hello Powertools for AWS Lambda (.NET)`。

# チュートリアル: Amazon Rekognition Lambda アプリケーションの作成
<a name="lambda-rekognition-example"></a>

このチュートリアルでは、Amazon Rekognition を使用して、検出ラベルのタグを Amazon S3 オブジェクトに付ける Lambdaアプリケーションを作成する方法を示します。

の設定に関する前提条件と情報については AWS Toolkit for Visual Studio、 [AWS Toolkit for Visual Studio の AWS 「Lambda テンプレートの使用](lambda-index.md)」を参照してください。

## Visual Studio の NET Core Lambda Image Rekognition プロジェクトを作成します
<a name="create-a-visual-studio-net-core-lam-image-rekognition-project"></a>

次の手順では、 AWS Toolkit for Visual Studioから Amazon Rekognition Lambda アプリケーションを作成する方法について説明します。

**注記**  
作成すると、アプリケーションには 2 つのプロジェクトを含むソリューションが作成されます。1 つは Lambda にデプロイする Lambda 関数コードを含むソースプロジェクト、もう 1 つは関数をローカルでテストするための xUnit を使用したテストプロジェクトです。  
Visual Studio がプロジェクトの NuGet の参照をすべて見つけられない場合があります。これは、これらのブループリントで必要な依存関係を、NuGet から取得する必要があるからです。新しいプロジェクトが作成されたとき、Visual Studio はローカル参照だけを取り込み、NuGet からリモート参照を取り込みません。NuGet エラーを修正するには: 参照を右クリックし、**[パッケージの復元]** を選択します。

1. Visual Studio の **[ファイル]** メニューを展開し、**[新規]** を展開し、**[プロジェクト]** を選択します。

1. **[新しいプロジェクト]** ダイアログボックスで、**[言語]**、**[プラットフォーム]**、および **[プロジェクトタイプ]** のドロップダウンボックスが [すべて...] に設定されていることを確認して、**[検索]** フィールドに **aws lambda** を入力します。

1. **AWS Lambda with Tests (.NET Core - C\$1)** テンプレートを選択します。

1. **[次へ]** へをクリックして、**[新しいプロジェクトを設定]** ダイアログを開きます。

1. **[新しいプロジェクトを設定]** ダイアログで、**[名前]** に 「ImageRekognition」と入力し、残りのフィールドを必要に応じて入力します。**[作成]** ボタンを選択して、**[ブループリントを選択]** ダイアログに進みます。

1. **[ブループリントの選択]** ダイアログで、**[Detect Image Labels**] ブループリントを選択し、**[完了]** を選択して Visual Studio プロジェクトを作成します。
**注記**  
このブループリントには Amazon S3 イベントをリッスンするためのコードがあり、Amazon Rekognition を使用してラベルを検出し、それらを Amazon S3 オブジェクトにタグとして追加できます。

## プロジェクトファイルを確認する
<a name="examine-the-files"></a>

以下のセクションでは、これらのプロジェクトファイルについて説明します。

1. `Function.cs`

1. `aws-lambda-tools-defaults.json`

### 1. Function.cs
<a name="functioncs"></a>

`Function.cs` ファイル内の最初のコードセグメントは、ファイルの先頭にある assembly 属性です。デフォルトでは、Lambda はタイプ `System.IO.Stream` の戻り値型と入力パラメータのみを受け入れます。入力パラメータや戻り値型で型付きのクラスを使用するには、シリアライザーを登録する必要があります。この assembly 属性は、`Newtonsoft.Json` を使用してストリームを型付きクラスに変換する Lambda JSON シリアライザーを登録します。シリアライザーをアセンブリまたはメソッドレベルで設定できます。

以下は assembly 属性の例です。

```
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
```

このクラスには、2 つのコンストラクタがあります。1 つ目は、デフォルトコンストラクタで、Lambda がユーザーの関数を呼び出すときに使用されます。このコンストラクタは、Amazon S3 および Amazon Rekognition のサービスクライアントを作成します。また、コンストラクタは、デプロイ時に関数に割り当てる IAM ロールからこれらのクライアントの AWS 認証情報を取得します。クライアントの AWS リージョンは、Lambda 関数が実行されているリージョンに設定されます。このブループリントでは、Amazon Rekognition サービスがラベルに関して最低限の信頼度を持っている場合にのみ、Amazon S3 オブジェクトにタグを追加します。このコンストラクタは環境変数 `MinConfidence` をチェックして、許容できる信頼レベルを決定します。この環境変数は、Lambda 関数をデプロイするときに、設定できます。

以下は、`Function.cs` の最初のクラスコンストラクタの例です。

```
public Function()
{
    this.S3Client = new AmazonS3Client();
    this.RekognitionClient = new AmazonRekognitionClient();

    var environmentMinConfidence = System.Environment.GetEnvironmentVariable(MIN_CONFIDENCE_ENVIRONMENT_VARIABLE_NAME);
    if(!string.IsNullOrWhiteSpace(environmentMinConfidence))
    {
        float value;
        if(float.TryParse(environmentMinConfidence, out value))
        {
            this.MinConfidence = value;
            Console.WriteLine($"Setting minimum confidence to {this.MinConfidence}");
        }
        else
        {
            Console.WriteLine($"Failed to parse value {environmentMinConfidence} for minimum confidence. Reverting back to default of {this.MinConfidence}");
        }
    }
    else
    {
        Console.WriteLine($"Using default minimum confidence of {this.MinConfidence}");
    }
}
```

次の例は、2番目のコンストラクタをテストにどのように活用するかを示しています。テストプロジェクトでは、独自の S3 クライアントと Rekognition クライアントを設定し、それらを渡します。

```
public Function(IAmazonS3 s3Client, IAmazonRekognition rekognitionClient, float minConfidence)
{
    this.S3Client = s3Client;
    this.RekognitionClient = rekognitionClient;
    this.MinConfidence = minConfidence;
}
```

以下は、`FunctionHandler` ファイル内の `Function.cs` メソッドの例です。

```
public async Task FunctionHandler(S3Event input, ILambdaContext context)
{
    foreach(var record in input.Records)
    {
        if(!SupportedImageTypes.Contains(Path.GetExtension(record.S3.Object.Key)))
        {
            Console.WriteLine($"Object {record.S3.Bucket.Name}:{record.S3.Object.Key} is not a supported image type");
            continue;
        }

        Console.WriteLine($"Looking for labels in image {record.S3.Bucket.Name}:{record.S3.Object.Key}");
        var detectResponses = await this.RekognitionClient.DetectLabelsAsync(new DetectLabelsRequest
        {
            MinConfidence = MinConfidence,
            Image = new Image
            {
                S3Object = new Amazon.Rekognition.Model.S3Object
                {
                    Bucket = record.S3.Bucket.Name,
                    Name = record.S3.Object.Key
                }
            }
        });

        var tags = new List();
        foreach(var label in detectResponses.Labels)
        {
            if(tags.Count < 10)
            {
                Console.WriteLine($"\tFound Label {label.Name} with confidence {label.Confidence}");
                tags.Add(new Tag { Key = label.Name, Value = label.Confidence.ToString() });
            }
            else
            {
                Console.WriteLine($"\tSkipped label {label.Name} with confidence {label.Confidence} because maximum number of tags reached");
            }
        }

        await this.S3Client.PutObjectTaggingAsync(new PutObjectTaggingRequest
        {
            BucketName = record.S3.Bucket.Name,
            Key = record.S3.Object.Key,
            Tagging = new Tagging
            {
                TagSet = tags
            }
        });
    }
    return;
}
```

 `FunctionHandler` は、インスタンスの作成後に Lambda が呼び出すメソッドです。入力パラメータは `S3Event` 型で `Stream` ではないことに注意してください。これができるのは、登録された Lambda JSON シリアライザーのためです。`S3Event` には Amazon S３でトリガーされたイベントに関するすべての情報が含まれています。関数は、イベントの一部であるすべての S3 オブジェクトをループし、Rekognition に対しラベルの検出を指示します。ラベルが検出された後、それらは S3 オブジェクトにタグとして追加されます。

**注記**  
コードには `Console.WriteLine()` の呼び出しが含まれています。Lambda で関数を実行する際に、すべての `Console.WriteLine()` の呼び出しを Amazon CloudWatch Logs にリダイレクトします。

### 2. aws-lambda-tools-defaults.json
<a name="toolsdefaults"></a>

`aws-lambda-tools-defaults.json` ファイルには、ブループリントによって設定されたデフォルト値が含まれており、デプロイウィザードの一部のフィールドに事前入力されます。また、.NET Core CLI との統合のためのコマンドラインオプションの設定にも役立ちます。

.NET Core CLI 統合にアクセスするには、関数のプロジェクトディレクトリに移動し、「**dotnet lambda help**」と入力します。

**注記**  
関数ハンドラーは、呼び出した関数に応答して Lambda が呼び出すメソッドを示します。このフィールドの形式は `<assembly-name>::<full-type-name>::<method-name>` です。型名には名前空間を含める必要があります。

## 関数をデプロイする
<a name="deploy-the-function"></a>

次の手順では、Lambda 関数をデプロイする方法について説明します。

1. **Solution Explorer** から、Lambda プロジェクトを右クリックし、** AWS Lambda に発行**を選択して、**Upload to AWS Lambda** ウィンドウを開きます。
**注記**  
プリセット値は `aws-lambda-tools-defaults.json` ファイルから取得されます。

1. **[ AWS Lambdaにアップロード]** ウィンドウで **[関数名]** フィールドに名前を入力し、**[次へ]** ボタンを選択して **[関数の高度な詳細]** ウィンドウに進みます。
**注記**  
この例では、**[関数名]** として「**ImageRekognition**」を使用します。  
![\[AWS Lambda function upload interface with package type, runtime, and configuration options.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-03192024.png)

1. **[関数の高度な詳細]** ページで、S3 と Amazon Rekognition にアクセスするコードに対してアクセス許可を付与する IAM ロールを選択します。
**注記**  
この例に従っている場合は、`AWSLambda_FullAccess` ロールを選択します。

1. 環境変数 `MinConfidence` を 60 に設定し、**[アップロード]** を選択してデプロイプロセスを起動します。**[関数]** ビューが **[AWS Explorer]** に表示されると、発行プロセスが完了します。  
![\[AWS Lambda function configuration interface showing permissions, execution, and environment settings.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-advanced-03192024.png)

1. デプロイが成功したら、**[イベントソース]** タブに移動して、新しい関数にイベントを送信するように Amazon S3 を設定します。

1. **[イベントソース]** タブで、**[追加]** ボタンを選択し、Lambda 関数に接続する Amazon S3 バケットを選択します。
**注記**  
バケットは Lambda 関数と同じ AWS リージョンにある必要があります。

## 関数をテストする
<a name="test-the-function"></a>

これで、関数がデプロイされ、イベントのソースとして S3 バケットが関数に対して設定されたので、S3 バケットブラウザを **AWS Explorer** から、選択したバケットについて開きます。次に、いくつかのイメージをアップロードします。

アップロードが完了すると、使用する関数のビューからログを調べることで、関数が実行されたことを確認できます。または、バケットブラウザ内のイメージを右クリックし、[**Properties (プロパティ)**] を選択します。[**Tags (タグ)**] タブで、使用するオブジェクトに適用されたタグを表示できます。

![\[Properties window showing metadata tags for an image file in a cloud storage bucket.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/lambda-object-properties.png)


# チュートリアル: AWS Lambda で Amazon ログ記録フレームワークを使用してアプリケーションログを作成する
<a name="cw-log-frameworks"></a>

「Amazon CloudWatch Logs」を使用して、アプリケーションのログのモニタリング、保存、アクセスを行うことができます。CloudWatch Logs にログデータを取得するには、 AWS SDK を使用するか、CloudWatch Logs エージェントをインストールして特定のログフォルダをモニタリングします。CloudWatch Logs は、いくつかの一般的な .NET ログ記録フレームワークと統合されており、ワークフローを簡素化します。

CloudWatch Logs と .NET ログ記録フレームワークの使用を開始するには、適切な NuGet パッケージと CloudWatch Logs 出力ソースをアプリケーションに追加し、通常どおりにログ記録ライブラリを使用します。これにより、アプリケーションは .NET フレームワークを使用してメッセージをログに記録し、CloudWatch Logs に送信して、アプリケーションのログメッセージを CloudWatch Logs コンソールに表示できるようになります。CloudWatch Logs コンソールから、アプリケーションのログメッセージに基づくメトリクスおよびアラームをセットアップすることもできます。

サポートされている .NET ログ記録フレームワークは次のとおりです。
+ **NLog**: 表示するには、「[nuget.org NLog package](https://www.nuget.org/packages/AWS.Logger.NLog)」を参照してください。
+ **Log4net**: 表示するには、「[nuget.org Log4net package](https://www.nuget.org/packages/AWS.Logger.NLog)」を参照してください。
+ **ASP.NET Core ログ記録フレームワーク**: 表示するには、「[nuget.org ASP.NET Core logging Framework package](https://www.nuget.org/packages/AWS.Logger.AspNetCore/)」を参照してください。

以下は、`AWS.Logger.NLog`NuGet パッケージと AWS ターゲットを に追加することで、CloudWatch Logs とコンソールの両方をログメッセージの出力として有効にする `NLog.config`ファイルの例です`NLog.config`。

```
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      throwExceptions="true">
  <targets>
    <target name="aws" type="AWSTarget" logGroup="NLog.ConfigExample" region="us-east-1"/>
    <target name="logfile" xsi:type="Console" layout="${callsite} ${message}" />
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="logfile,aws" />
  </rules>
</nlog>
```



ログ記録プラグインはすべて 上に構築 AWS SDK for .NET され、SDK と同様のプロセスで AWS 認証情報を認証します。次の例は、ログプラグインの認証情報が CloudWatch Logs にアクセスするために必要なアクセス許可を示しています。

**注記**  
 AWS .NET ログ記録プラグインはオープンソースプロジェクトです。追加情報、サンプル、および手順については、[AWS Logging .NET GitHub](https://github.com/aws/aws-logging-dotnet) リポジトリの[サンプル](https://github.com/aws/aws-logging-dotnet/tree/master/samples)と[手順](https://github.com/aws/aws-logging-dotnet/blob/master/README.md)に関するトピックを参照してください。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ]
    }
  ]
}
```

------