

# AWS IoT Wireless リソースのログ記録の設定
<a name="configure-resource-logging"></a>

AWS IoT Wireless リソースのログ記録を設定するには、API または CLI のいずれかを使用できます。AWS IoT Wireless リソースのモニタリングを開始する際、デフォルト設定を使用できます。これを行うには、このトピックをスキップして、[CloudWatch Logs を使用して AWS IoT Wireless をモニタリングする](cloud-watch-logs.md) に進んでログをモニタリングします。

ログのモニタリングを開始したら、CLI を使用して、ログレベルをより詳細なオプションに変更できます。例えば、`INFO` および `ERROR` の情報を指定したり、より多くのリソースに対するログ記録を有効にしたりするなどです。

## AWS IoT Wireless リソースとログレベル
<a name="log-levels-resources"></a>

API または CLI を使用する前に、次の表を使用して、ログ記録を設定できるさまざまなログレベルとリソースについて学習します。この表は、リソースをモニタリングするときに CloudWatch ログに表示されるパラメータを示しています。リソースに対するログ記録の設定方法によって、コンソールに表示されるログが決まります。

サンプルの CloudWatch ログがどのように表示されるか、およびこれらのパラメータを使用して AWS IoT Wireless リソースに関する有益な情報をログ記録する方法ついては、「[CloudWatch AWS IoT Wireless ログエントリの表示](cwl-format.md)」を参照してください。


**ログレベルとリソース**  

| 名前 | 使用できる値: | 説明 | 
| --- | --- | --- | 
| logLevel |  `INFO`, `ERROR`, または `DISABLED`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-wireless/latest/developerguide/configure-resource-logging.html)  | 
| resource |  `WirelessGateway` または `WirelessDevice`  |  リソースのタイプ。`WirelessGateway` または `WirelessDevice` です。  | 
| wirelessGatewayType | LoRaWAN | resource が WirelessGateway の場合の、ワイヤレスゲートウェイのタイプ。常に LoRaWAN です。 | 
| wirelessDeviceType | LoRaWAN または Sidewalk | resource が WirelessDevice の場合の、ワイヤレスデバイスのタイプ。LoRaWAN または Sidewalk です。 | 
| wirelessGatewayId | - | resource が WirelessGateway の場合の、ワイヤレスゲートウェイの ID。 | 
| wirelessDeviceId | - | resource が WirelessDevice の場合の、ワイヤレスデバイスの ID。 | 
| event | Join、Rejoin、Registration、Uplink\$1data、Downlink\$1data、CUPS\$1Request、および Certificate | ログに記録されるイベントのタイプ。ログに記録するリソースがワイヤレスデバイスかワイヤレスゲートウェイかによって異なります。詳細については、「[CloudWatch AWS IoT Wireless ログエントリの表示](cwl-format.md)」を参照してください。 | 

## AWS IoT Wireless ログ記録 API
<a name="logging-api-roles"></a>

以下の API アクションを使用して、リソースのログ記録を設定できます。この表には、API アクションを使用するために作成する必要のあるサンプルの IAM ポリシーも示されています。以下のセクションでは、API を使用してリソースのログレベルを設定する方法について説明します。


**API アクションのログ記録**  

| API 名 | 説明 | サンプルの IAM ポリシー | 
| --- | --- | --- | 
|  [GetLogLevelsByResourceTypes](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetLogLevelsByResourceTypes.html)  |  現在のデフォルトのログレベル、またはリソースタイプ別のログレベルを返します。ワイヤレスデバイスまたはワイヤレスゲートウェイのログオプションを含めることができます。  | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:GetLogLevelsByResourceTypes"            <br />            ],            <br />            "Resource": [                <br />                "*"            <br />            ]        <br />        }<br />    ]<br />}</pre>  | 
|  [GetResourceLogLevel](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetResourceLogLevel.html)  | 指定されたリソース IDとリソースタイプに対してログレベルのオーバーライドを返します。リソースは、ワイヤレスデバイスまたはワイヤレスゲートウェイにすることができます。  | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:GetResourceLogLevel"            <br />            ],            <br />            "Resource": [                <br />                 "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a",           <br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [PutResourceLogLevel](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_PutResourceLogLevel.html)  | 指定されたリソース IDとリソースタイプに対してログレベルのオーバーライドを設定します。リソースは、ワイヤレスゲートウェイまたはワイヤレスデバイスにすることができます。  この API では、ログレベルのオーバーライドが 1 アカウントにつき 200 に制限されています。   | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:PutResourceLogLevel"            <br />            ],            <br />            "Resource": [                <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a",            <br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [ResetAllResourceLogLevels](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ResetAllResourceLogLevels.html)  |  ワイヤレスゲートウェイとワイヤレスデバイスの両方を含む、すべてのリソースに対するログレベルのオーバーライドを削除します。  この API は、`UpdateLogLevelsByResourceTypes` API を使用して設定されたログレベルには影響しません。   | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:ResetAllResourceLogLevels"            <br />            ],            <br />            "Resource": [                <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/*", <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessGateway/*<br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [ResetResourceLogLevel](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ResetResourceLogLevel.html)  |  指定されたリソース ID とリソースタイプに対するログレベルのオーバーライドを削除します。リソースは、ワイヤレスゲートウェイまたはワイヤレスデバイスにすることができます。  | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:ResetResourceLogLevel"            <br />            ],            <br />            "Resource": [                <br />                "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a",            <br />            ]        <br />        }<br />    ]<br />}</pre> | 
|  [UpdateLogLevelsByResourceTypes](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateLogLevelsByResourceTypes.html)  |  デフォルトのログレベル、またはリソースタイプ別のログレベルを設定します。この API は、ワイヤレスデバイスまたはワイヤレスゲートウェイのログオプションに使用でき、CloudWatch に表示されるログメッセージを制御できます。  イベントはオプションで、イベントタイプはリソースタイプに関連付けられています。詳細については、「[イベントタイプとリソースタイプ](cwl-format.md#cwl-format-events-resources)」を参照してください。   | <pre>{    <br />    "Version": "2012-10-17",    <br />    "Statement": [        <br />        {            <br />            "Effect": "Allow",            <br />            "Action": [                <br />                 "iotwireless:UpdateLogLevelsByResourceTypes"            <br />            ],            <br />            "Resource": [                <br />                "*"            <br />            ]        <br />        }<br />    ]<br />}</pre> | 

## CLI を使用してリソースのログレベルを設定する
<a name="configure-logging-api"></a>

このセクションでは、API または AWS CLI を使用して AWS IoT Wireless リソースのログレベルを設定する方法について説明します。

**CLI を使用する前に、以下を行ってください。**
+ 前述のように、CLI コマンドを実行する API の IAM ポリシーを作成していることを確認します。
+ 使用するロールの Amazon リソースネーム (ARN) が必要です。ログ記録に使用するロールを作成する必要がある場合は、「[AWS IoT Wireless 用のログ記録ロールとポリシーを作成する](create-logging-role-policy.md)」を参照してください。

**AWS CLI を使用する理由**  
デフォルトでは、「[AWS IoT Wireless 用のログ記録ロールとポリシーを作成する](create-logging-role-policy.md)」で説明されているように IAM ロール `IoTWirelessLogsRole` を作成した場合、デフォルトのログレベル `ERROR` を持つ CloudWatch ログが AWS マネジメントコンソール に表示されます。すべてのリソースまたは特定のリソースのデフォルトのログレベルを変更するには、AWS IoT Wireless ログ記録 API または CLI を使用します。

**AWS CLI の使用方法**  
API アクションは、すべてのリソースと特定のリソースのどちらに対してログレベルを設定するかに応じて、次のタイプに分類できます。
+ API アクション `GetLogLevelsByResourceTypes` および `UpdateLogLevelsByResourceTypes` は、ワイヤレスゲートウェイ、LoRaWAN または Sidewalk デバイスなど、特定のタイプのアカウント内のすべてのリソースのログレベルを取得および更新できます。
+ API アクション `GetResourceLogLevel`、`PutResourceLogLevel`、および `ResetResourceLogLevel` は、リソース ID を使用して、指定した個々のリソースのログレベルを取得、更新、リセットできます。
+ API アクション `ResetAllResourceLogLevels` は、`PutResourceLogLevel` API を使用してログレベルのオーバーライドを指定したすべてのリソースに対して、ログレベルのオーバーライドを `null` にリセットします。

**CLI を使用して AWS IoT でリソース固有のログ記録を設定するには**
**注記**  
この手順は、ここに示す CLI コマンドに対応する AWS API のメソッドを使用することにより、API で行うこともできます。

1. デフォルトでは、すべてのリソースのログレベルは `ERROR` に設定されています。アカウント内のすべてのリソースについて、デフォルトのログレベル、またはリソースタイプ別のログレベルを設定するには、[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/update-log-levels-by-resource-types.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/update-log-levels-by-resource-types.html) コマンドを使用します。次の例は、JSON ファイル `Input.json` を作成して、入力として CLI コマンドに提供する方法を示しています。このコマンドを使用すると、特定のタイプのリソースおよびイベントに対して、選択的にログ記録を無効にしたり、デフォルトのログレベルをオーバーライドしたりできます。

   ```
   {
       "DefaultLogLevel": "INFO",
       "WirelessDeviceLogOptions": 
        [
           {
            "Type": "Sidewalk",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                 "Event": "Registration",
                 "LogLevel": "DISABLED"
               }
             ]
           }, 
           {
            "Type": "LoRaWAN",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                "Event": "Join",
                "LogLevel": "DISABLED"
               }, 
               {
                "Event": "Rejoin",
                "LogLevel": "ERROR"
               }
             ]
           }
         ]
        "WirelessGatewayLogOptions": 
         [
           {
            "Type": "LoRaWAN",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                "Event": "CUPS_Request",
                "LogLevel": "DISABLED"
               }, 
               {
                 "Event": "Certificate",
                 "LogLevel": "ERROR"
               }
             ]
           }
         ]
   }
   ```

   各パラメータの意味は次のとおりです。  
**WirelessDeviceLogOptions**  
ワイヤレスデバイスのログオプションのリスト。各ログオプションには、ワイヤレスデバイスのタイプ (Sidewalk または LoRaWAN) と、ワイヤレスデバイスのイベントログオプションのリストが含まれます。各ワイヤレスデバイスのイベントログオプションには、必要に応じて、イベントタイプとそのログレベルを含めることができます。  
**WirelessGatewayLogOptions**  
ワイヤレスゲートウェイのログオプションのリスト。各ログオプションには、ワイヤレスゲートウェイのタイプ (LoRaWAN) と、ワイヤレスゲートウェイのイベントログオプションのリストが含まれます。各ワイヤレスゲートウェイのイベントログオプションには、必要に応じて、イベントタイプとそのログレベルを含めることができます。  
**DefaultLogLevel**  
すべてのリソースに使用するログレベル。有効な値は、`ERROR`、`INFO`、`DISABLED` です。デフォルト値は `INFO` です。  
**LogLevel**  
個々のリソースタイプとイベントに使用するログレベル。これらのログレベルは、LoRaWAN ゲートウェイに対するログレベル `INFO` や、2 つのイベントタイプに対する `DISABLED` および `ERROR` などのデフォルトのログレベルをオーバーライドします。

   次のコマンドを実行すると、`Input.json` ファイルが入力としてコマンドに提供されます。このコマンドでは、出力が生成されません。

   ```
   aws iotwireless update-log-levels-by-resource-types \ 
       --cli-input-json Input.json
   ```

   ワイヤレスデバイスとワイヤレスゲートウェイの両方のログオプションを削除する場合は、次のコマンドを実行します。

   ```
   {
       "DefaultLogLevel":"DISABLED",
       "WirelessDeviceLogOptions": [],
       "WireslessGatewayLogOptions":[]
   }
   ```

1. **update-log-levels-by-resource-types** コマンドは出力を返しません。リソース固有のログ記録情報を取得するには、[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-log-levels-by-resource-types.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-log-levels-by-resource-types.html) コマンドを使用します。このコマンドは、デフォルトのログレベルと、ワイヤレスデバイスおよびワイヤレスゲートウェイのログオプションを返します。
**注記**  
**get-log-levels-by-resource-types** コマンドは、CloudWatch コンソールでログレベルを直接取得することはできません。**get-log-levels-by-resource-types** コマンドは、**update-log-levels-by-resource-types** コマンドを使用してリソースに対して指定した最新のログレベルの情報を取得するために使用できます。

   ```
   aws iotwireless get-log-levels-by-resource-types 
   ```

   次のコマンドを実行すると、**update-log-levels-by-resource-types** を使用して指定した最新のログ記録情報が返されます。例えば、ワイヤレスデバイスのログオプションを削除した場合、**get-log-levels-by-resource-types** を実行すると、この値が `null` として返されます。

   ```
   {
       "DefaultLogLevel": "INFO",
       "WirelessDeviceLogOptions": null,
        "WirelessGatewayLogOptions": 
         [
           {
            "Type": "LoRaWAN",
            "LogLevel": "INFO",
            "Events": 
             [
               {
                "Event": "CUPS_Request",
                "LogLevel": "DISABLED"
               }, 
               {
                 "Event": "Certificate",
                 "LogLevel": "ERROR"
               }
             ]
           }
         ]
   }
   ```

1. 個々のワイヤレスゲートウェイまたはワイヤレスデバイスリソースのログレベルを制御するには、次の CLI コマンドを使用します。
   + [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/put-resource-log-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/put-resource-log-level.html)
   + [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-resource-log-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-resource-log-level.html)
   + [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-resource-log-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-resource-log-level.html)

   これらの CLI をいつ使用するかの例として、ログに記録されているアカウント内に多数のワイヤレスデバイスまたはワイヤレスゲートウェイがあるとします。一部のワイヤレスデバイスに対してのみエラーのトラブルシューティングを行う場合は、`DefaultLogLevel` を `DISABLED` に設定してすべてのワイヤレスデバイスのログ記録を無効にし、**put-resource-log-level** を使用して、アカウント内のこれらのデバイスに対してのみ `LogLevel` を `ERROR` に設定できます。

   ```
   aws iotwireless put-resource-log-level \ 
       --resource-identifier 
       --resource-type WirelessDevice
       --log-level ERROR
   ```

   この例では、コマンドによって、指定したワイヤレスデバイスのリソースに対してのみログレベルが `ERROR` に設定され、その他のすべてのリソースのログが無効になります。このコマンドでは、出力が生成されません。この情報を取得して、ログレベルが設定されたことを確認するには、**get-resource-log-level** コマンドを使用します。

1. 前のステップでは、問題をデバッグしてエラーを解決した後、**reset-resource-log-level** コマンドを実行して、そのリソースのログレベルを `null` にリセットできます。`put-resource-log-level` コマンドを使用して、複数のワイヤレスデバイスまたはワイヤレスゲートウェイリソースに対してログレベルのオーバーライドを設定した場合 (複数のデバイスのエラーのトラブルシューティングなど)、[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-all-resource-log-levels.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/reset-all-resource-log-levels.html) コマンドを使用して、これらのすべてのリソースに対して、ログレベルのオーバーライドを `null` にリセットできます。

   ```
   aws iotwireless reset-all-resource-log-levels
   ```

   このコマンドでは、出力が生成されません。リソースのログ記録情報を取得するには、**get-resource-log-level** コマンドを実行します。

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

ログ記録ロールを作成し、AWS IoT Wireless API を使用して AWS IoT Core for LoRaWAN リソースのログ記録を設定する方法を学習しました。続いてログエントリのモニタリングについて学習するには、[CloudWatch Logs を使用して AWS IoT Wireless をモニタリングする](cloud-watch-logs.md) に移動してください。