

# PowerShell による Lambda 関数の構築
<a name="lambda-powershell"></a>

以下のセクションでは、Lambda 関数のコードを PowerShell で記述する際に、一般的なプログラミングパターンと主要概念がどのように適用されるかについて説明します。

Lambda は、PowerShell 用の次のサンプルアプリケーションを提供します。
+ [blank-powershell](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-powershell) – ログ記録、環境変数、AWS SDK の使用方法を示す PowerShell 関数。

開始する前に、PowerShell の開発環境をまず設定する必要があります。これを行う手順については、「[PowerShell 開発環境の設定](powershell-devenv.md)」を参照してください。

AWSLambdaPSCore モジュールを使用してテンプレートからサンプルの PowerShell プロジェクトをダウンロードし、PowerShell デプロイパッケージを作成して AWS クラウドに PowerShell 関数をデプロイする方法については、「[.zip ファイルアーカイブを使用した PowerShell Lambda 関数のデプロイする](powershell-package.md)」を参照してください。

Lambda は、次の .NET 言語のランタイムをサポートしています。


| 名前 | 識別子 | オペレーティングシステム | 廃止日 | 関数の作成をブロックする | 関数の更新をブロックする | 
| --- | --- | --- | --- | --- | --- | 
|  .NET 10  |  `dotnet10`  |  Amazon Linux 2023  |   2028 年 11 月 14 日   |   2028 年 12 月 14 日   |   2029 年 1 月 15 日   | 
|  .NET 9 (コンテナのみ)  |  `dotnet9`  |  Amazon Linux 2023  |   2026 年 11 月 10 日   |   スケジュールされていません   |   スケジュールされていません   | 
|  .NET 8  |  `dotnet8`  |  Amazon Linux 2023  |   2026 年 11 月 10 日   |   2026 年 12 月 10 日   |   2027 年 1 月 11 日   | 

**Topics**
+ [

# PowerShell 開発環境の設定
](powershell-devenv.md)
+ [

# .zip ファイルアーカイブを使用した PowerShell Lambda 関数のデプロイする
](powershell-package.md)
+ [

# PowerShell の Lambda 関数ハンドラーの定義
](powershell-handler.md)
+ [

# Lambda コンテキストオブジェクトを使用して PowerShell 関数の情報を取得する
](powershell-context.md)
+ [

# Powershell Lambda 関数のログ記録とモニタリング
](powershell-logging.md)

# PowerShell 開発環境の設定
<a name="powershell-devenv"></a>

Lambda では、PowerShell ランタイム用のツールとライブラリのセットを提供しています。インストール手順については、GitHub の [Lambda Tools for Powershell](https://github.com/aws/aws-lambda-dotnet/tree/master/PowerShell) を参照してください。

AWSLambdaPSCore モジュールには、PowerShell Lambda 関数を作成して発行するために次の新しいコマンドレットがあります。
+ **Get-AWSPowerShellLambdaTemplate** － 使用開始テンプレートのリストを返します。
+ **New-AWSPowerShellLambda** － テンプレートに基づいて最初の PowerShell スクリプトを作成します。
+ **Publish-AWSPowerShellLambda** － 特定の PowerShell スクリプトを Lambda に発行します。
+ **New-AWSPowerShellLambdaPackage** － デプロイのための CI/CD システムに使用できる Lambda デプロイパッケージを作成します。

# .zip ファイルアーカイブを使用した PowerShell Lambda 関数のデプロイする
<a name="powershell-package"></a>

PowerShell ランタイム用のデプロイパッケージには、PowerShell スクリプト、PowerShell スクリプトに必要な PowerShell モジュール および PowerShell Core をホストするために必要なアセンブリが含まれています。

## Lambda 関数の作成
<a name="powershell-package-create"></a>

Lambda で PowerShell スクリプトの記述と呼び出しを開始するためには、`New-AWSPowerShellLambda` コマンドレットを使用して、テンプレートに基づきながらスタータースクリプトを作成します。Lambda にスクリプトをデプロイするには、`Publish-AWSPowerShellLambda` コマンドレットを使用します。その後、コマンドラインあるいは Lambda コンソールから、スクリプトをテストできます。

新しい PowerShell スクリプトを作成してアップロードおよびテストするには、次を実行します。

1. 使用可能なテンプレートの一覧を表示するには、次のコマンドを実行します。

   ```
   PS C:\> Get-AWSPowerShellLambdaTemplate
   
   Template               Description
   --------               -----------
   Basic                  Bare bones script
   CodeCommitTrigger      Script to process AWS CodeCommit Triggers
   ...
   ```

1. `Basic` テンプレートに基づいてサンプルスクリプトを作成するには、次のコマンドを実行します。

   ```
   New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template Basic
   ```

   `MyFirstPSScript.ps1` という名前の新しいファイルが現在のディレクトリの新しいサブディレクイトリに作成されます。ディレクトリの名前は、`-ScriptName` パラメータに基づきます。別のディレクトリを選択するには、 `-Directory` パラメータを使用できます。

   新しいファイルの内容は次のとおりに表示されます。

   ```
   # PowerShell script file to run as a Lambda function
   # 
   # When executing in Lambda the following variables are predefined.
   #   $LambdaInput - A PSObject that contains the Lambda function input data.
   #   $LambdaContext - An Amazon.Lambda.Core.ILambdaContext object that contains information about the currently running Lambda environment.
   #
   # The last item in the PowerShell pipeline is returned as the result of the Lambda function.
   #
   # To include PowerShell modules with your Lambda function, like the AWSPowerShell.NetCore module, add a "#Requires" statement 
   # indicating the module and version.
                   
   #Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'}
   
   # Uncomment to send the input to CloudWatch Logs
   # Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5)
   ```

1. ログメッセージがどのように PowerShell スクリプトから Amazon CloudWatch Logs に送信されるかを表示するには、同じスクリプトの `Write-Host` 行のコメントを解除します。

   Lambda 関数からデータを返す方法を示すには、スクリプトの末尾に新しい行 (`$PSVersionTable`) を追加します。これは、PowerShell パイプラインに `$PSVersionTable` を追加します。PowerShell スクリプトが完了した後、PowerShell パイプラインの最後のオブジェクトは Lambda 関数に返されたデータです。`$PSVersionTable` は、実行されている環境の情報も提供する PowerShell グローバル変数です。

   上述の変更を行った後のサンプルスクリプトの最後の 2 行は次のようになります。

   ```
   Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5)
   $PSVersionTable
   ```

1. `MyFirstPSScript.ps1` ファイルを編集したら、スクリプトの場所にディレクトリを変更します。次に、次のコマンドを実行して、Lambda にスクリプトを発行します。

   ```
   Publish-AWSPowerShellLambda -ScriptPath .\MyFirstPSScript.ps1 -Name  MyFirstPSScript -Region us-east-2
   ```

   `-Name` パラメータは Lambda 関数名を指定しますが、これは Lambda コンソールに表示されます。この関数を使用して、手動でスクリプトを呼び出すことができます。

1. AWS Command Line Interface (AWS CLI) `invoke` コマンドを使用して関数を呼び出します。

   ```
   > aws lambda invoke --function-name MyFirstPSScript out
   ```

# PowerShell の Lambda 関数ハンドラーの定義
<a name="powershell-handler"></a>

Lambda 関数が呼び出されると、Lambda ハンドラは PowerShell スクリプトを呼び出します。

PowerShell スクリプトが呼び出された場合、以下の変数は事前定義されます。
+  *\$1LambdaInput* － ハンドラへの入力を含む PSObject。この入力は、イベントデータ (イベントソースによって公開される)、あるいは文字列やカスタムデータオブジェクトなど、ユーザーが提供するカスタム入力とすることができます。
+  *\$1LambdaContext* － 現在の呼び出しに関する情報にアクセスするために使用できる、Amazon.Lambda.Core.ILambdaContext オブジェクト。アクセスできる情報には、現在の関数名、メモリ制限、残りの実行時間、ログ記録があります。

例えば、次の PowerShell コードの例を考えてみます。

```
#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'}
Write-Host 'Function Name:' $LambdaContext.FunctionName
```

このスクリプトは、\$1LambdaContext 変数から取得した FunctionName プロパティを返します。

**注記**  
PowerShell スクリプト内の `#Requires` ステートメントを使用して、スクリプトが依存するモジュールを指定するように求められます。このステートメントは 2 つの重要なタスクを実行します。1) スクリプトが使用するモジュールを他のデベロッパーに伝え、そして 2) デプロイの一部として、スクリプトでパッケージングするために AWS PowerShell ツールが必要とする依存モジュールを識別します。PowerShell の `#Requires` ステートメントに関する詳細については、「[要件について](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_requires?view=powershell-6)」を参照してください。PowerShell デプロイパッケージについての詳細は、[.zip ファイルアーカイブを使用した PowerShell Lambda 関数のデプロイする](powershell-package.md) を参照してください。  
PowerShell Lambda 関数が AWS PowerShell コマンドレットを使用する場合、`#Requires` ステートメントが、Windows PowerShell のみをサポートする `AWSPowerShell` モジュールではなく、PowerShell Core をサポートする `AWSPowerShell.NetCore` モジュールを参照するように設定されていることを確認します。また、コマンドレットインポートプロセスを最適化する `AWSPowerShell.NetCore` のバージョン 3.3.270.0 以降を使用していることも確認します。古いバージョンを使用している場合、より長いコールドスタートが発生します。詳細については、「[AWS Tools for PowerShell](https://aws.amazon.com/powershell/?track=sdk)」を参照してください。

## データを返す
<a name="powershell-handler-output"></a>

一部の Lambda 呼び出しには、呼び出し元にデータを返す目的があります。例えば、呼び出しが API Gateway から送信されたウェブリクエストへの返答である場合、Lambda 関数はレスポンスを返す必要があります。PowerShell Lambda の場合、PowerShell パイプラインに最後に追加されるオブジェクトは Lambda 呼び出しから返されたデータです。オブジェクトが文字列の場合、返されるデータも文字列です。それ以外の場合、`ConvertTo-Json` コマンドレットを使用して、オブジェクトは JSON に変換されます。

例えば、PowerShell パイプラインに `$PSVersionTable` を追加する次の PowerShell ステートメントを検討します。

```
$PSVersionTable
```

PowerShell スクリプトの終了後の PowerShell パイプラインの最後のオブジェクトは、Lambda 関数に返されたデータです。`$PSVersionTable` は、実行されている環境の情報も提供する PowerShell グローバル変数です。

# Lambda コンテキストオブジェクトを使用して PowerShell 関数の情報を取得する
<a name="powershell-context"></a>

関数を実行すると、Lambda は、`$LambdaContext` 変数を[ハンドラ](powershell-handler.md)で使用できるようにして、コンテキスト情報を渡します。この変数は、呼び出し、関数、および実行関数に関する情報を含むメソッドおよびプロパティです。

**context プロパティ**
+ `FunctionName` － Lambda 関数の名前。
+ `FunctionVersion` － 関数の[バージョン](configuration-versions.md)。
+ `InvokedFunctionArn` － 関数を呼び出すために使用される Amazon リソースネーム (ARN)。呼び出し元でバージョン番号またはエイリアスが指定されているかどうかを示します。
+ `MemoryLimitInMB` － 関数に割り当てられたメモリの量。
+ `AwsRequestId` － 呼び出しリクエストの ID。
+ `LogGroupName` － 関数のロググループ。
+ `LogStreamName` — 関数インスタンスのログストリーム。
+ `RemainingTime` — 実行がタイムアウトするまでの残りのミリ秒数。
+ `Identity` — (モバイルアプリケーション) リクエストを認可した Amazon Cognito ID に関する情報。
+ `ClientContext` — (モバイルアプリケーション) クライアントアプリケーションが Lambda に提供したクライアントコンテキスト。
+ `Logger` － 関数の[ロガーオブジェクト](powershell-logging.md)。

次の PowerShell コードスニペットは、コンテキスト情報の一部を表示する単純なハンドラ関数を示しています。

```
#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'}
Write-Host 'Function name:' $LambdaContext.FunctionName
Write-Host 'Remaining milliseconds:' $LambdaContext.RemainingTime.TotalMilliseconds
Write-Host 'Log group name:' $LambdaContext.LogGroupName
Write-Host 'Log stream name:' $LambdaContext.LogStreamName
```

# Powershell Lambda 関数のログ記録とモニタリング
<a name="powershell-logging"></a>

AWS Lambda は、ユーザーに代わって Lambda 関数を自動的にモニタリングし、Amazon CloudWatch にログを送信します。Lambda 関数には、関数のインスタンスごとに CloudWatch Logs ロググループとログストリームが用意されています。Lambda ランタイム環境は、各呼び出しの詳細をログストリームに送信し、関数のコードからのログやその他の出力を中継します。詳細については、「[Lambda 関数ログを CloudWatch Logs に送信する](monitoring-cloudwatchlogs.md)」を参照してください。

このページでは、AWS Command Line Interface、Lambda コンソール、または CloudWatch コンソールを使用して、Lambda 関数のコードからログ出力を生成する方法、およびアクセスログを生成する方法について説明します。

**Topics**
+ [

## ログを返す関数の作成
](#powershell-logging-output)
+ [

## Lambda コンソールでログを表示する
](#powershell-logging-console)
+ [

## CloudWatch コンソールでの ログの表示
](#powershell-logging-cwconsole)
+ [

## AWS Command Line Interface (AWS CLI) を使用してログを表示する
](#powershell-logging-cli)
+ [

## ログの削除
](#powershell-logging-delete)

## ログを返す関数の作成
<a name="powershell-logging-output"></a>

関数コードからログを出力するには、[Microsoft.PowerShell.Utility](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility) で cmdlets を使用するか、あるいは `stdout` または `stderr` に書き込む任意のログ作成モジュールを使用できます。次の例では `Write-Host` を使用しています。

**Example [function/Handler.ps1](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-powershell/function/Handler.ps1) － ログ記録**  

```
#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'}
Write-Host `## Environment variables
Write-Host AWS_LAMBDA_FUNCTION_VERSION=$Env:AWS_LAMBDA_FUNCTION_VERSION
Write-Host AWS_LAMBDA_LOG_GROUP_NAME=$Env:AWS_LAMBDA_LOG_GROUP_NAME
Write-Host AWS_LAMBDA_LOG_STREAM_NAME=$Env:AWS_LAMBDA_LOG_STREAM_NAME
Write-Host AWS_EXECUTION_ENV=$Env:AWS_EXECUTION_ENV
Write-Host AWS_LAMBDA_FUNCTION_NAME=$Env:AWS_LAMBDA_FUNCTION_NAME
Write-Host PATH=$Env:PATH
Write-Host `## Event
Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 3)
```

**Example ログの形式**  

```
START RequestId: 56639408-xmpl-435f-9041-ac47ae25ceed Version: $LATEST
Importing module ./Modules/AWSPowerShell.NetCore/3.3.618.0/AWSPowerShell.NetCore.psd1
[Information] - ## Environment variables
[Information] - AWS_LAMBDA_FUNCTION_VERSION=$LATEST
[Information] - AWS_LAMBDA_LOG_GROUP_NAME=/aws/lambda/blank-powershell-function-18CIXMPLHFAJJ
[Information] - AWS_LAMBDA_LOG_STREAM_NAME=2020/04/01/[$LATEST]53c5xmpl52d64ed3a744724d9c201089
[Information] - AWS_EXECUTION_ENV=AWS_Lambda_dotnet6_powershell_1.0.0
[Information] - AWS_LAMBDA_FUNCTION_NAME=blank-powershell-function-18CIXMPLHFAJJ
[Information] - PATH=/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin
[Information] - ## Event
[Information] - 
{
    "Records": [
        {
            "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
            "receiptHandle": "MessageReceiptHandle",
            "body": "Hello from SQS!",
            "attributes": {
                "ApproximateReceiveCount": "1",
                "SentTimestamp": "1523232000000",
                "SenderId": "123456789012",
                "ApproximateFirstReceiveTimestamp": "1523232000001"
            },
            ...
END RequestId: 56639408-xmpl-435f-9041-ac47ae25ceed
REPORT RequestId: 56639408-xmpl-435f-9041-ac47ae25ceed	Duration: 3906.38 ms	Billed Duration: 9867 ms	Memory Size: 512 MB	Max Memory Used: 367 MB	Init Duration: 5960.19 ms	
XRAY TraceId: 1-5e843da6-733cxmple7d0c3c020510040	SegmentId: 3913xmpl20999446	Sampled: true
```

.NET ランタイムは、呼び出しごとに `START`、`END`、`REPORT` の各行を記録します。レポート行には、次の詳細が示されます。

**REPORT 行のデータフィールド**
+ **RequestId** － 呼び出しの一意のリクエスト ID。
+ **所要時間** － 関数のハンドラーメソッドがイベントの処理に要した時間。
+ **課金期間** － 呼び出しの課金対象の時間。
+ **メモリサイズ** － 関数に割り当てられたメモリの量。
+ **使用中の最大メモリ** － 関数によって使用されているメモリの量。呼び出しが実行環境を共有すると、Lambda はすべての呼び出しで使用される最大メモリを報告します。この動作により、予想よりも高い報告値が発生する可能性があります。
+ **初期所要時間** － 最初に処理されたリクエストについて、ハンドラーメソッド外で関数をロードしてコードを実行するためにランタイムにかかった時間。
+ **XRAY TraceId** － トレースされたリクエストの場合、[AWS X-Ray のトレース ID](services-xray.md)。
+ **SegmentId** － トレースされたリクエストの場合、X-Ray のセグメント ID。
+ **サンプリング済み** － トレースされたリクエストの場合、サンプリング結果。

## Lambda コンソールでログを表示する
<a name="powershell-logging-console"></a>

Lambda コンソールを使用して、Lambda 関数を呼び出した後のログ出力を表示できます。

組み込み **Code** エディタからコードがテスト可能である場合、**[実行結果]** でログを確認できます。コンソールのテスト機能を使用して関数を呼び出すと、**[詳細]** セクションで **[ログ出力]** を確認できます。

## CloudWatch コンソールでの ログの表示
<a name="powershell-logging-cwconsole"></a>

Amazon CloudWatch コンソールを使用して、すべての Lambda 関数呼び出しのログを表示できます。

**CloudWatch コンソールでログを表示するには**

1. CloudWatch コンソールの [[Log groups (ロググループ)] ページ](https://console.aws.amazon.com/cloudwatch/home?#logs:)を開きます。

1. 機能のロググループを選択します( **/aws/lambda/*関数名***)

1. ログストリームを選択します

各ログストリームは、[関数のインスタンス](lambda-runtime-environment.md)に相当します。ログストリームは、Lambda 関数を更新したとき、および同時呼び出しを処理するために追加のインスタンスが作成されたときに表示されます。特定の呼び出しのログを検索するために、AWS X-Ray を使って関数をインストルメント化することをお勧めします。　 X-Ray は、リクエストとログストリームの詳細をトレースに記録します。

## AWS Command Line Interface (AWS CLI) を使用してログを表示する
<a name="powershell-logging-cli"></a>

AWS CLI は、コマンドラインシェルでコマンドを使用して AWS サービスとやり取りするためのオープンソースツールです。このセクションの手順を完了するには、[AWS CLIバージョン 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) が必要です。

[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) および `--log-type` コマンドオプションを使用して、呼び出しのログを取得します。レスポンスには、`LogResult`フィールドが含まれ、このフィールドには、呼び出しから base64 コードされた最大 4 KB のログが含まれます。

**Example ログ ID を取得します**  
次の例は、`LogResult`という名前の関数の`my-function`フィールドから*ログ ID * を取得する方法を示しています。  

```
aws lambda invoke --function-name my-function out --log-type Tail
```
次のような出力が表示されます。  

```
{
    "StatusCode": 200,
    "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...",
    "ExecutedVersion": "$LATEST"
}
```

**Example ログをデコードします**  
同じコマンドプロンプトで、`base64` ユーティリティを使用してログをデコードします。次の例は、`my-function`の base64 でエンコードされたログを取得する方法を示しています 。  

```
aws lambda invoke --function-name my-function out --log-type Tail \
--query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode
```
AWS CLI バージョン 2 を使用している場合、**cli-binary-format** オプションは必須です。これをデフォルト設定にするには、`aws configure set cli-binary-format raw-in-base64-out` を実行します。詳細については、「*AWS Command Line Interface バージョン 2 用ユーザーガイド*」の「[AWS CLI でサポートされているグローバルコマンドラインオプション](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list)」を参照してください。  
以下の出力が表示されます。  

```
START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST
"AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib",
END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8
REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8  Duration: 79.67 ms      Billed Duration: 80 ms         Memory Size: 128 MB     Max Memory Used: 73 MB
```
`base64`このユーティリティは、Linux、macOS、および [ Windows の Ubuntu ](https://docs.microsoft.com/en-us/windows/wsl/install-win10) で使用できます。macOS ユーザーは、`base64 -D`を使用する必要があります 。

**Example get-logs.sh スクリプト**  
同じコマンドプロンプトで、次のスクリプトを使用して、最後の 5 つのログイベントをダウンロードします。このスクリプトは `sed` を使用して出力ファイルから引用符を削除し、ログが使用可能になるまで 15 秒待機します。この出力には Lambda からのレスポンスと、`get-log-events` コマンドからの出力が含まれます。  
次のコードサンプルの内容をコピーし、Lambda プロジェクトディレクトリに `get-logs.sh` として保存します。  
AWS CLI バージョン 2 を使用している場合、**cli-binary-format** オプションは必須です。これをデフォルト設定にするには、`aws configure set cli-binary-format raw-in-base64-out` を実行します。詳細については、「*AWS Command Line Interface バージョン 2 用ユーザーガイド*」の「[AWS CLI でサポートされているグローバルコマンドラインオプション](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list)」を参照してください。  

```
#!/bin/bash
aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"key": "value"}' out
sed -i'' -e 's/"//g' out
sleep 15
aws logs get-log-events --log-group-name /aws/lambda/my-function --log-stream-name stream1 --limit 5
```

**Example macOS および Linux (専用)**  
同じコマンドプロンプトで、macOS と Linux ユーザーが次のコマンドを実行して、スクリプトが実行可能であることを確認する必要があります。  

```
chmod -R 755 get-logs.sh
```

**Example 最後の 5 つのログイベントを取得します**  
同じコマンドプロンプトで、次のスクリプトを実行して、最後の 5 つのログイベントを取得します。  

```
./get-logs.sh
```
次のような出力が表示されます。  

```
{
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"
}
{
    "events": [
        {
            "timestamp": 1559763003171,
            "message": "START RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf Version: $LATEST\n",
            "ingestionTime": 1559763003309
        },
        {
            "timestamp": 1559763003173,
            "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tENVIRONMENT VARIABLES\r{\r  \"AWS_LAMBDA_FUNCTION_VERSION\": \"$LATEST\",\r ...",
            "ingestionTime": 1559763018353
        },
        {
            "timestamp": 1559763003173,
            "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tEVENT\r{\r  \"key\": \"value\"\r}\n",
            "ingestionTime": 1559763018353
        },
        {
            "timestamp": 1559763003218,
            "message": "END RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\n",
            "ingestionTime": 1559763018353
        },
        {
            "timestamp": 1559763003218,
            "message": "REPORT RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\tDuration: 26.73 ms\tBilled Duration: 27 ms \tMemory Size: 128 MB\tMax Memory Used: 75 MB\t\n",
            "ingestionTime": 1559763018353
        }
    ],
    "nextForwardToken": "f/34783877304859518393868359594929986069206639495374241795",
    "nextBackwardToken": "b/34783877303811383369537420289090800615709599058929582080"
}
```

## ログの削除
<a name="powershell-logging-delete"></a>

関数を削除しても、ロググループは自動的には削除されません。ログが無期限に保存されないようにするには、ロググループを削除するか、ログが自動的に削除されるまでの[保存期間を設定](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#SettingLogRetention)します。