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。デバイス側のログ記録とモニタリングの詳細については、「デバイス側のログを にアップロードする CloudWatch」を参照してください。

のログ記録とモニタリングの詳細については AWS IoT Greengrass、「 でのログ記録とモニタリング AWS IoT Greengrass」を参照してください。2023 年 6 月 30 日現在、 AWS IoT Greengrass Core ソフトウェアは に移行されています AWS IoT Greengrass Version 2。

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

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

注記

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

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

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

ログ記録ロールの作成

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

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

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

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

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

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

次のポリシードキュメントは、 が CloudWatch ユーザーに代わって AWS IoT にログエントリを送信できるようにするロールポリシーと信頼ポリシーを提供します。 AWS IoT Core LoRaWAN がログエントリを送信することを許可した場合、両方のアクティビティをログに記録するポリシードキュメントが作成されます。

注記

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

ロールポリシー:

{ "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:${partition}:logs:${region}:${accountId}:log-group:AWSIotLogsV2:*" ] } ] }

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] (ログ) セクションで、[Manage logs] (ログの管理) を選択します。

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

    ログロールと詳細レベルを表示するログページ。
  3. [Logs] (ログ) ページで、[Select role] (ログの選択) を選択し、ログ記録ロールの作成 で作成したロールを指定するか、[Create Role] (ロールの作成) を選択してログ記録に使用するロールを作成します。

    ログロールとログレベルを表示するログページ。
  4. ログに表示するログエントリの詳細レベルを記述する CloudWatch ログレベルを選択します。 ログレベル

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

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

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

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

注記

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

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

ここに示す CLI コマンドに対応する API のメソッドを使用して、 AWS 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 を使用して のリソース固有のログ記録を設定する方法について説明します。リソース固有のログ記録では、特定のモノのグループに特定のログ記録レベルを指定できます。

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

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

注記

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

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

ここに示す CLI コマンドに対応する API のメソッドを使用して、 AWS 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 | 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

    aws iot set-v2-logging-level \ --log-target targetType=CLIENT_ID,targetName=ClientId1 \ --log-level DEBUG
  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
    --targetType

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

    --targetName

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

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

ログレベル

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

ERROR

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

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

WARN

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

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

INFO

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

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

DEBUG

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

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

DISABLED

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