AWS IoT のログ記録の設定 - AWS IoT Core

AWS IoT のログ記録の設定

AWS IoT アクティビティの監視およびログ記録を行うには、AWS IoT コンソール、CLI、または API を使用してログ記録を有効にしておく必要があります。

ログ記録は、すべての AWS IoT または特定のモノグループのみを対象にして有効にすることができます。AWS IoT コンソール、CLI、または API を使用して AWS IoT ログ記録を設定できます。ただし、特定のモノグループのログ記録を設定するには、CLI または API を使用する必要があります。

AWS IoT ログ記録の設定方法を検討する場合、特に指定がない限り、AWS IoT アクティビティのログ記録方法はデフォルトのログ記録設定によって決まります。最初は、デフォルトのログレベル (INFO または DEBUG) を使用して、詳細なログを取得できます。初期ログを確認した後、デフォルトのログレベルから WARNERROR などの低い詳細レベルに変更し、注意が必要なリソースに対しては、詳細レベルを高くしてリソース固有のログレベルを設定できます。ログレベルはいつでも変更できます。

ログ記録ロールとポリシーの構成

AWS IoT でログ記録を有効にする前に、IAM ロールとポリシーを作成する必要があります。これらは、ユーザーに代わって AWS IoT アクティビティをモニタリングするためのアクセス許可を AWS に付与するために使用します。

注記

AWS IoT ログ記録を有効にする前に、CloudWatch Logs へのアクセス権限を理解しておく必要があります。CloudWatch Logs に対するアクセス許可のあるユーザーはデバイスからのデバッグ情報を表示できます。詳細については、「Amazon CloudWatch Logs に対する認証とアクセスコントロール」を参照してください。

負荷テストのために AWS IoT Core で高いトラフィックパターンが予想される場合は、IoT ログ記録をオフにしてスロットリングを防ぐことを検討してください。大量のトラフィックが検出された場合、当社のサービスはアカウントでのログ記録を無効にする場合があります。

以下に、 AWS IoT Core リソースのログ記録ロールとポリシーを作成する方法を示します。 AWS IoT Core for LoRaWAN のログ記録ロールとポリシーを作成する方法については、 AWS IoT Core for LoRaWAN のログ記録ロールとポリシーを作成する を参照してください。

ログ記録ロールの作成

ログ記録ロールを作成するには、IAM コンソールの [Roles] (ロール) ハブを開き、[Create role] (ロールの作成) を選択します。

  1. [Select type of trusted entity] (信頼されたエンティティの種類を選択) で、[AWS Service] (AWS のサービス)、[IoT] を選択します。

  2. [ユースケースの選択] で、[IoT]、[次のステップ: アクセス権限] の順に選択します。

  3. サービスロールに自動的にアタッチされるポリシーを表示するページで、[Next: Tags] (次の手順: タグ)、[Next: Review] (次の手順: 確認) の順に選択します。

  4. ロールの [ロール名] と [ロールの説明] を入力し、[ロールの作成] を選択します。

  5. [Roles] (ロール) のリストで、作成したロールを見つけて開き、AWS IoT でデフォルトのログ記録を設定する (コンソール) をするときに使用する [Role ARN] (ロール ARN) (logging-role-arn) をコピーします。

ログ記録ロールのポリシー

以下のポリシードキュメントは、お客様に代わって AWS IoT から CloudWatch にログエントリを送信するためのロールポリシーと信頼ポリシーを示しています。また、 AWS IoT Core for LoRaWAN がログエントリを送信することを許可した場合は、両方のアクティビティを記録したポリシードキュメントが作成されています。 AWS IoT Core for LoRaWAN の IAM ログ記録ロールとポリシーを作成する方法については、 AWS IoT Core for LoRaWAN のログ記録ロールとポリシーを作成する を参照してください。

注記

これらのドキュメントは、ログ記録ロールを作成したときに作成されたものです。

ロールポリシー:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutMetricFilter", "logs:PutRetentionPolicy" ], "Resource": [ "*" ] } ] }

AWS IoT Core アクティビティのみをログに記録する信頼ポリシー:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

AWS IoT でデフォルトのログ記録を設定する (コンソール)

ここでは、AWS IoT コンソールを使用してすべての AWS IoT に対するログ記録を設定する方法について説明します。特定のモノグループのみを対象にしてログ記録を設定するには、CLI または API を使用する必要があります。特定のモノグループのログ記録の設定については、「」を参照してくださいAWS IoT でリソース固有のログ記録を設定する (CLI)

AWS IoT コンソールを使用して、すべての AWS IoT に対するデフォルトのログ記録を設定するには

  1. AWS IoT コンソールにサインインします。詳細については、「」を参照してくださいAWS IoT コンソールを開きます。

  2. 左のナビゲーションペインの [設定] を選択します。[Settings] (設定) ページの [Logs] (ログ) セクションで、[Edit] (編集) を選択します。

    [ログ] セクションには、すべての AWS IoT で使用されるログ記録ロールと詳細レベルが表示されます。

  3. [Configure role setting] (ログ設定の構成) ページで、CloudWatch Logs に表示するログエントリの詳細レベルを表す [Level of verbosity] (詳細レベル) を選択します。

  4. [Select] (選択) を選択し、ログ記録ロールの作成 で作成したロールを指定するか、[Create Role] (ロールの作成) を選択してログ記録に使用するロールを作成します。

  5. [更新] を選択して変更を保存します。

ログ記録を有効にしたら、CloudWatch コンソールでの AWS IoT ログの表示 にアクセスして、ログエントリの表示方法の詳細を確認します。

AWS IoT でデフォルトのログ記録を設定する (CLI)

ここでは、CLI を使用して AWS IoT 全体のログ記録を設定する方法について説明します。

注記

使用するロールの Amazon リソースネーム (ARN) が必要です。ログ記録に使用するロールを作成する必要がある場合は、先へ進む前に ログ記録ロールの作成 を参照してください。

API を呼び出すために使用されるプリンシパルには、ログ記録ロール用のロールのアクセス権限の適用が必要です。

この手順は、ここに示す CLI コマンドに対応する AWS API のメソッドを使用することにより、API で行うこともできます。

CLI を使用して AWS IoT のデフォルトログ記録を設定するには

  1. set-v2-logging-options コマンドを使用して、アカウントのログ記録オプションを設定します。

    aws iot set-v2-logging-options \ --role-arn logging-role-arn \ --default-log-level log-level

    各パラメータの意味は次のとおりです。

    --role-arn

    CloudWatch Logs でログに書き込むアクセス許可を AWS IoT に付与するロール ARN。

    --default-log-level

    使用するログレベル。有効な値は ERRORWARNINFODEBUGDISABLED です。

    --no-disable-all-logs

    すべての AWS IoT ログ記録を有効にするオプションのパラメータ。このパラメータは、現在無効になっているログ記録を有効にする場合に使用します。

    --disable-all-logs

    すべての AWS IoT ログ記録を無効にするオプションのパラメータ。このパラメータは、現在有効になっているログ記録を無効にする場合に使用します。

  2. 現在のログ記録オプションを取得するには、get-v2-logging-options コマンドを使用します。

    aws iot get-v2-logging-options

ログ記録を有効にしたら、CloudWatch コンソールでの AWS IoT ログの表示 にアクセスして、ログエントリの表示方法の詳細を確認します。

注記

AWS IoT では、アカウント全体のログ記録を設定および取得するための以前のコマンド (set-logging-options および get-logging-options) が引き続きサポートされています。これらのコマンドを使用すると、作成されるログには JSON ペイロードではなくプレーンテキストが含まれ、一般的にログ記録のレイテンシーが高くなることに注意してください。これらの古いコマンドの実装は今後強化されません。「v2」バージョンを使用してログ記録オプションを設定し、可能な場合は、古いバージョンを使用するレガシーアプリケーションを変更することをお勧めします。

AWS IoT でリソース固有のログ記録を設定する (CLI)

ここでは、CLI を使用して AWS IoT でリソース固有のログ記録を設定する方法について説明します。リソース固有のログ記録では、特定のモノのグループに特定のログ記録レベルを指定できます。

モノグループには別のモノグループを含めて、階層的な関係を作成することができます。この手順では、単一のモノグループのログ記録を設定する方法について説明します。階層内の親モノグループにこの手順を適用することにより、階層内のすべてのモノグループに対してログ記録を設定することもできます。この手順を子モノグループに適用して、親のログ記録設定をオーバーライドすることもできます。

注記

使用するロールの Amazon リソースネーム (ARN) が必要です。ログ記録に使用するロールを作成する必要がある場合は、先へ進む前に ログ記録ロールの作成 を参照してください。

API を呼び出すためにに使用されるプリンシパルには、ログ記録ロール用のロールのアクセス権限の適用が必要です。

この手順は、ここに示す CLI コマンドに対応する AWS API のメソッドを使用することにより、API で行うこともできます。

CLI を使用して AWS IoT でリソース固有のログ記録を設定するには

  1. set-v2-logging-options コマンドを使用して、アカウントのログ記録オプションを設定します。

    aws iot set-v2-logging-options \ --role-arn logging-role-arn \ --default-log-level log-level

    各パラメータの意味は次のとおりです。

    --role-arn

    CloudWatch Logs でログに書き込むアクセス許可を AWS IoT に付与するロール ARN。

    --default-log-level

    使用するログレベル。有効な値は ERRORWARNINFODEBUGDISABLED です。

    --no-disable-all-logs

    すべての AWS IoT ログ記録を有効にするオプションのパラメータ。このパラメータは、現在無効になっているログ記録を有効にする場合に使用します。

    --disable-all-logs

    すべての AWS IoT ログ記録を無効にするオプションのパラメータ。このパラメータは、現在有効になっているログ記録を無効にする場合に使用します。

  2. モノグループのリソース固有のログ記録を設定するには、set-v2-logging-level コマンドを使用します。

    aws iot set-v2-logging-level \ --log-target targetType=THING_GROUP,targetName=thing_group_name \ --log-level log_level
    --log-target

    ログ記録を設定するリソースの名前とタイプ。target_type の値は THING_GROUP にする必要があります。log-target パラメータ値には、前のコマンド例で示したテキストや、次の例のような JSON 文字列を指定できます。

    aws iot set-v2-logging-level \ --log-target '{"targetType": "THING_GROUP","targetName": "thing_group_name"}' \ --log-level log_level
    --log-level

    指定されたリソースのログを生成する際に使用されるログ記録レベル。有効な値: DEBUGINFOERRORWARNDISABLED

  3. 現在設定されているログ記録レベルを一覧表示するには、list-v2-logging-levels コマンドを使用します。

    aws iot list-v2-logging-levels
  4. リソース固有のログ記録レベルを削除するには、 delete-v2-logging-level コマンドを使用します。

    aws iot delete-v2-logging-level \ --targetType "THING_GROUP" \ --targetName "thing_group_name"
    --targetType

    target_type の値は THING_GROUP にする必要があります

    --targetName

    ログ記録レベルを削除するモノグループの名前。

ログ記録を有効にしたら、CloudWatch コンソールでの AWS IoT ログの表示 にアクセスして、ログエントリの表示方法の詳細を確認します。

ログレベル

以下のログレベルは、ログにどのイベントを記録するかを決定します。デフォルトおよびリソース固有のログレベルに適用されます。

ERROR

オペレーションの失敗につながるすべてのエラー。

ログには ERROR 情報のみが含まれます。

WARN

オペレーションの失敗につながるわけではないが、システムの不整合を引き起こす可能性のあるすべての要因。

ログには ERROR および WARN 情報が含まれます。

INFO

モノのフローに関する概要。

ログには INFO、ERROR および WARN 情報が含まれます。

DEBUG

問題のデバッグに役立つ場合のある情報。

ログには DEBUG、INFO、ERROR、WARN 情報が含まれます。

DISABLED

すべてのロギングが無効です。