AWS IoT ログ記録を設定する - AWS IoT Core

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

AWS IoT ログ記録を設定する

AWS IoT アクティビティをモニタリングおよびログ記録する前に、 AWS IoT コンソール、CLI、または API を使用してログ記録を有効にする必要があります。のログ記録は、アカウントレベル、イベントレベル、またはリソース固有の AWS IoT 3 つのレベルで設定できます。イベントレベルとリソース固有のログ記録は、V2 ログ記録でのみ使用できます。V1 ログ記録を使用するお客様は、これらの機能にアクセスするには V2 への移行を実行する必要があります。詳細については、「」を参照してください。

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

このトピックでは、クラウド側のログインについて説明します AWS IoT。デバイス側のログ記録とモニタリングについては、「CloudWatch にデバイス側のログをアップロード」を参照してください。

ログ記録とモニタリングの詳細については AWS IoT Greengrass、「 でのログ記録とモニタリング AWS IoT Greengrass」を参照してください。

V2 ログインの設定 AWS IoT

ログ記録のバージョンの確認

VGetV2LoggingOptions API は NotConfiguredException を返します。 V2 このエラーは、V1 ログ記録が使用中であるか、ログ記録が設定されていない場合に発生します。

V2 ログ記録機能について

V2 ログ記録には、イベントレベルのログ記録とリソース固有のログ記録の 2 つの主要な機能があります。イベントレベルのログ記録により、カスタマイズ可能なログレベルと CloudWatch ロググループの送信先を使用して、ターゲットを絞ったログ記録設定が可能になります。リソース固有のログ記録を使用すると、モノのグループ、ソース IP、クライアント ID、またはプリンシパル ID でログをフィルタリングできます。これらの機能により、IoT オペレーションをきめ細かく制御し、包括的に可視化できるため、不要なログ記録アクティビティがなくなるため、ログの検索可能性が向上し、コストを削減できます。

V1 から V2 への移行

AWS CLI または SDK を使用して、SetV2LoggingOptions API を使用して V2 ログ記録に移行できます。 SetV2LoggingOptions 移行後、 はすべてのログを CloudWatch ロググループAWSIotLogsV2 AWS IoT 」に自動的にルーティングします。重要: ダウンストリームアプリケーションまたはリソースがAWSIotLogs」の情報を使用する場合は、対応するロググループパスを使用するように更新します。

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

ログインを有効にする前に AWS IoT、ユーザーに代わって CloudWatch ロググループに AWS IoT ログアクティビティを書き込む AWS IoT アクセス許可を付与する IAM ロールとポリシーを作成する必要があります。AWS IoT コンソールの Logs セクションで必要なポリシーを使用して IAM ロールを生成することもできます。

注記

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

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

AWS IoT Core リソースのログ記録ロールとポリシーを作成する方法を以下に示します。

ログ記録ロールの作成

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

  1. [信頼されたエンティティを選択] で、[AWS サービス] を選択します。次に、[Use case] (ユースケース) で [IoT] を選択します。[IoT] が表示されない場合は、[他の AWS サービスのユースケース] ドロップダウンメニューで [IoT] と入力して検索してください。[次へ] を選択してください。

  2. [Add permissions] (権限の追加) ページでは、サービスロールに自動的に付加されるポリシーが表示されます。[次へ] を選択します。

  3. [Name, review, and create] (名前、確認、作成) ページで、ロールの [Role name] (ロール名) と [Role description] (ロールの説明) を入力し、次に [Create role] (ロールの作成) を選択します。

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

以下のポリシードキュメントは、お客様に代わって AWS IoT から CloudWatch にログエントリを送信するためのロールポリシーと信頼ポリシーを示しています。カスタム CloudWatch ロググループでイベントレベルのログ記録を設定する場合は、ロールポリシーを更新してカスタムリソース ARN を含める必要があります。

ログエントリ AWS IoT Core for LoRaWAN の送信も許可されている場合は、両方のアクティビティをログに記録するポリシードキュメントが作成されます。

注記

これらのドキュメントは、ログ記録ロールを作成したときに作成されたものです。ドキュメントには変数 ${partition}${region} ${accountId} があり、 を値に置き換える必要があります。

  • partition をリージョンのパーティションに置き換えます。

  • region を、使用する AWS リージョンに置き換えます。デバイスで CLI AWS の設定に使用したリージョンと同じ AWS リージョンを使用していることを確認してください。

  • account-id を自分の AWS アカウント ID に置き換えます。

ロールポリシー:

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutMetricFilter", "logs:PutRetentionPolicy", "iot:GetLoggingOptions", "iot:SetLoggingOptions", "iot:SetV2LoggingOptions", "iot:GetV2LoggingOptions", "iot:SetV2LoggingLevel", "iot:ListV2LoggingLevels", "iot:DeleteV2LoggingLevel" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:AWSIotLogsV2:*" ] } ] }

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

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

AWS IoT IAM ロールのアクセス許可が不十分なため、ログ記録が CloudWatch Logs へのログ記録の発行に失敗する可能性があります。これが発生した場合は、CloudWatch ログ記録メトリクスをチェックして、障害を調査およびトラブルシューティングします。

でログ記録を設定する AWS IoT (コンソール)

このセクションでは、 AWS IoT コンソールを使用して AWS IoT ログ記録を設定する方法について説明します。アカウントレベル、イベントレベル、リソース固有のログ記録を設定できます。

AWS IoT ログ記録を設定するには:
  1. AWS IoT コンソールにサインインします。詳細については、「AWS IoT コンソールを開く」を参照してください。

  2. 左側のナビゲーションペインで、ログ (以前の設定のセクション) を選択します。

  3. アカウントレベルのログ記録を設定する: イベントレベルまたはリソース固有の設定によって上書きされない限り、アカウントレベルのログ記録はすべての AWS IoT フリート (デバイスまたはエンドポイント) に適用されます。

    1. アカウントレベルのログ記録で、アカウントレベルのログ記録の管理を選択して更新を行います。

    2. CloudWatch へのログの送信を開始するには、「ログ記録を有効にする」チェックボックスを選択します。「ログ記録を有効にする」がチェックされていない場合、イベントレベルまたはリソースレベルのログ記録設定に関係なく、 AWS IoT は CloudWatch ロググループにログを送信しません。

    3. IAM ログロールで、ドロップダウンリストから既存のロールを選択します。ロールの詳細を表示して、ロールのアクセス許可を検査できます。または、新しいロールの作成を選択して新しい IAM ロールを設定します。ログ記録ロールは、 がユーザーに代わって CloudWatch AWS IoT にログエントリを送信できるようにするポリシーを提供します。カスタム CloudWatch ロググループを使用してイベントレベルのログ記録を設定する場合は、ロールポリシーを更新して、このロググループの ARN を含める必要があります。

    4. CloudWatch Logs に表示するログエントリの詳細レベルに対応するデフォルトのログレベルを選択します。 https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level注: ログレベル「DEBUG」は最も詳細ですが、CloudWatch のコストが増加します。CloudWatch ロググループの送信先をアカウントレベルで設定することはできません。ただし、次のセクションで説明するように、個々のイベントタイプのカスタムロググループを指定できます。

    5. ログ記録の更新を選択して変更を保存します。

  4. イベントレベルのログ記録を使用すると、関連するイベントのログを選択的にキャプチャし、専用の CloudWatch ロググループに送信できます。これにより、ログを有効にし、イベントの重要度に基づいてログレベルを設定することで、検出可能性を高め、さまざまな対象者と共有し、CloudWatch コストを削減するために、ユースケースごとにログを柔軟に整理できます。

    イベントレベルのログ記録を設定する: イベントレベルのログ記録は、クライアント認証の試行などの特定の AWS IoT イベントをキャプチャします。これらの設定は、アカウントレベルのログ記録を上書きします。

    1. イベントレベルのログ記録セクションで、イベントレベルのログ記録の管理を選択して更新を行います。

    2. デフォルトでは、イベントタイプはアカウントレベルのログ記録設定を継承します。注: リソース固有のログ記録を設定すると、アカウントとイベントレベルの設定が上書きされます。

    3. 個々のイベントの設定を変更するには、対応するイベント行の値をクリックします。ログレベルと CloudWatch ロググループの送信先の両方を調整できます。カスタム CloudWatch ロググループの送信先を指定するときは、IAM ロールポリシーに新しいロググループのアクセス許可が含まれていることを確認する必要があります。ロールポリシーを更新しないと、 AWS IoT はカスタムロググループにログを書き込むことができません。選択したら、チェックマークをクリックして選択を確定します。「Is Modified」列に「Yes」と表示され、保留中の変更を示します。

    4. ログ記録の更新をクリックして変更を適用するか、キャンセルを選択して破棄します。

  5. リソース固有のオーバーライドを設定する: リソース固有のオーバーライドは、選択したリソースにログ記録設定を適用します。リソースには、モノのグループ、ソース IP、クライアント ID、またはプリンシパル ID を指定できます。リソース固有のログ記録設定は、アカウントレベルとイベントレベルの両方の設定を上書きします。有効にすると、指定されたリソースに対して設定されたログ記録レベルですべてのイベントタイプのログが生成されます。たとえば、他のすべてのモノの情報レベルのログ記録を維持しながら、特定のモノのデバッグレベルのログ記録を設定できます。

    1. 「リソース固有のオーバーライドの追加」セクションの「リソース固有のオーバーライドの追加」を選択します。

    2. ログターゲットを選択します: モノのグループ、ソース IP、クライアント ID、またはプリンシパル ID。

    3. 選択したターゲットタイプに対応するログターゲット値を入力します。

    4. リソース固有のログレベルセクションのドロップダウンメニューから目的のログレベルを選択します。

    5. Submit をクリックしてオーバーライドを追加するか、Cancel をクリックして変更を破棄します。

    6. 既存のリソース固有のオーバーライドを変更するには、リソースの横にあるチェックボックスを選択し、「削除」をクリックしてオーバーライドを削除するか、「編集」をクリックして変更します。

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

アカウントとイベントレベルのログインを設定する AWS IoT (CLI)

このセクションでは、 CLI AWS IoT を使用して のグローバルログ記録を設定する方法について説明します。

オプションで、イベントレベルのログ記録を設定できます。イベントレベルのログ記録は、認証、認可、証明書作成イベントなどのログ情報をイベントレベルでキャプチャします。ログレベルと CloudWatch ロググループの送信先の両方をイベントレベルでカスタマイズできます。イベントレベルのログ記録は、アカウントレベルのログ記録よりもターゲットを絞ったレベルで動作するため、アカウントレベルのログ記録設定を上書きします。この階層的アプローチにより、運用上の重要性とコストの考慮事項に基づいて、さまざまなタイプのイベントに対してさまざまなログ記録戦略を維持できます。

注記

使用するロールの Amazon リソースネーム (ARN) が必要です。ログ記録に使用するロールを作成する必要がある場合は、先へ進む前に「ログ記録ロールの作成」を参照してください。任意のイベントタイプにカスタム CloudWatch ロググループを指定するときは、ログ記録ロールにターゲットロググループに必要なアクセス許可があることを確認してください。

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

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

CLI を使用して のデフォルトログ記録を設定するには AWS IoT
  1. set-v2-logging-options コマンドを使用して、アカウントのログ記録オプションを設定します。

    aws iot set-v2-logging-options \ --event-configurations event-configuration-list \ --role-arn logging-role-arn \ --default-log-level log-level

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

    --role-arn

    CloudWatch Logs のログに書き込むアクセス AWS IoT 許可を付与するロール ARN。初期設定には Role-arn 設定が必要です。

    --default-log-level

    使用するログレベル。有効な値は、ERROR、、WARNINFODEBUG、または ですDISABLED。初期設定には、Default-log-level設定が必要です。

    --no-disable-all-logs

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

    --disable-all-logs

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

    --event-configurations

    このパラメータはオプションであり、個々のイベントタイプのログ記録設定をカスタマイズできます。

    • eventType: アカウントレベルの設定を上書きするイベントのタイプ

    • logLevel: DEBUG、INFO、ERROR、WARN、または DISABLED でアカウントレベルの設定を上書きする

    • logDestination: ログ配信用のカスタム CloudWatch ロググループを指定する

    ログ記録レベルとログ送信先は、イベントタイプごとに個別に設定できます。指定しない場合、イベントはアカウントレベルの設定を継承します。

    aws iot set-v2-logging-options \ --event-configurations "[{\"eventType\":\"Publish-In\",\"logLevel\":\"INFO\",\"logDestination\":\"examplePublishInLogGroup\"}]"
  2. 現在のログ記録オプションを取得するには、get-v2-logging-options コマンドを使用します。

    aws iot get-v2-logging-options \ --verbose

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

    --verbose

    すべての eventTypes とその設定を取得できるオプションのパラメータ。

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

注記

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

AWS IoT (CLI) でリソース固有のオーバーライドを設定する

このセクションでは、 CLI AWS IoT を使用して のリソース固有のオーバーライドを設定する方法について説明します。リソース固有のオーバーライドを使用すると、モノのグループ、クライアント ID、ソース IP、またはプリンシパル ID で識別される特定のリソースのログ記録レベルを指定できます。リソース固有のログ記録を有効にすると、アカウントレベルとイベントレベルの両方の設定が上書きされます。すべてのイベントタイプは、イベントレベルの設定でそれらのイベントが無効になっている場合でも、設定されたログ記録レベルで指定されたリソースのログを生成します。

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

モノはモノグループのメンバーにすることができます。メンバーになることで、そのモノのグループに適用される設定、ポリシー、および設定をモノが継承できるようになります。モノのグループは、各モノを個別に処理するのではなく、複数のモノをまとめて管理および適用するために使用されます。クライアント ID がモノの名前と一致すると、 AWS IoT Core はクライアントセッションを対応するモノのリソースに自動的に関連付けます。これによりクライアントセッションは、モノが属するモノのグループに適用される構成や設定 (ログ記録レベルなど) を継承できるようになります。クライアント ID がモノの名前と一致しない場合は、排他的なモノのアタッチメントを有効にして関連付けを確立することができます。詳細については、「AWS IoTモノを MQTT クライアント接続に関連付ける」を参照してください。

モノグループに加えて、デバイスのクライアント ID、ソース IP、プリンシパル ID などのターゲットをログに記録することもできます。

注記

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

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

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

CLI を使用して のリソース固有のオーバーライドを設定するには AWS IoT
  1. 次のコマンドを使用してリソース固有のログ記録を設定する前に、アカウントレベルのログ記録を有効にします。aws iot set-v2-logging-options コマンド

  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

    ログ記録を設定するリソースの名前とタイプ。targetTypeの値は次のいずれかである必要があります : THING_GROUP | CLIENT_ID | SOURCE_IP | PRINCIPAL_ID。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 \ --target-type "THING_GROUP" \ --target-name "thing_group_name"
    aws iot delete-v2-logging-level \ --target-type=CLIENT_ID --target-name=ClientId1
    --target-type

    target-typeの値は次のいずれかである必要があります : THING_GROUP | CLIENT_ID | SOURCE_IP | PRINCIPAL_ID

    --target-name

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

ログレベル

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

ERROR

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

例: 証明書の有効期限が切れたため、デバイスの認証に失敗しました。

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

WARN

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

例: メッセージレート制限に近づいています。

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

INFO

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

例: クライアントが MQTT トピックに正常にサブスクライブしました。

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

DEBUG

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

例: IoT Rules Engine は、ルールトピック「rule/test」に発行されたメッセージを検出し、正常に実行を開始しました。ルールは RepublishAction で設定されます。

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

DISABLED

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