AWS CloudTrail を使用した AWS IoT API コールのロギング
AWS IoT は AWS CloudTrail と統合されています。このサービスは、ユーザーやロール、または AWS の AWS IoT のサービスによって実行されたアクションをレコードするサービスです。CloudTrail は、AWS IoT コンソールからの呼び出しや AWS IoT API へのコード呼び出しを含む、AWS IoT のすべての API コールをイベントとしてキャプチャします。トレイルを作成すると、AWS IoT のイベントを含む CloudTrail イベントの Amazon S3 ケットへの継続的な配信が可能になります。証跡を設定しない場合でも、CloudTrail コンソールの [Event history (イベント履歴)] で最新のイベントを表示できます。CloudTrail で収集された情報を使用して、AWS IoT に対するリクエスト、リクエスト元の IP アドレス、リクエスト者、リクエスト日時などの詳細を確認できます。
CloudTrail の詳細については、「AWS CloudTrail ユーザーガイド」を参照してください。
CloudTrail での AWS IoT 情報
CloudTrail は、アカウント作成時に AWS アカウント で有効になります。AWS IoT でアクティビティが発生すると、そのアクティビティは [Event history] (イベント履歴) の他の AWS のサービスのイベントとともに CloudTrail イベントに記録されます。最近のイベントは、AWS アカウント で表示、検索、ダウンロードできます。詳細については、「CloudTrail イベント履歴でのイベントの表示」を参照してください。
AWS IoT のイベントなど、AWS アカウント のイベントの継続的な記録に対して、追跡を作成します。証跡により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成するときに、証跡がすべての AWS リージョン に適用されます。証跡は、AWS パーティションのすべての AWS リージョン からのイベントをログに記録し、指定した Amazon S3 バケットにログファイルを配信します。その他の AWS のサービスを設定して、CloudTrail ログで収集されたイベントデータをより詳細に分析し、それに基づく対応を行うことができます。詳細については、以下を参照してください。
注記
AWS IoT データプレーンのアクション (デバイス側) は、CloudTrail によってログに記録されません。これらのアクションを監視するために CloudWatch を使用します。
一般的に、変更を行う AWS IoT コントロールプレーンアクションは CloudTrail によってログに記録されます。CreateThing、CreateKeysAndCertificate、UpdateCertificate などの呼び出しは CloudTrail エントリを残しますが、ListThings や ListTopicRules などの呼び出しは残しません。
各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。同一性情報は次の判断に役立ちます。
-
リクエストが、ルートと IAM ユーザー認証情報のどちらを使用して送信されたか。
-
リクエストがロールまたはフェデレーションユーザーの一時的なセキュリティ認証情報を使用して行われたかどうか。
-
リクエストが別の AWS サービスによって行われたかどうか。
詳細については、「CloudTrail userIdentity Element」(CloudTrail userIdentity 要素) を参照してください。
AWS IoT のアクションについては、AWS IoT API リファレンスに記載されています。AWS IoTWireless のアクションについては、AWS IoT Wireless API リファレンスに記載されています。
AWS IoT ログファイルエントリの概要
追跡は、指定したAmazon S3バケットにイベントをログファイルとして配信するように設定できます。CloudTrail のログファイルは、単一か複数のログエントリを含みます。イベントはあらゆるソースからの単一のリクエストを表し、リクエストされたアクション、アクションの日時、リクエストのパラメータなどの情報が含まれます。CloudTrail ログファイルは、パブリック API コールの順序付けられたスタックトレースではないため、特定の順序では表示されません。
以下の例は、AttachPolicy
アクションを示す CloudTrail ログエントリです。
{ "timestamp":"1460159496", "AdditionalEventData":"", "Annotation":"", "ApiVersion":"", "ErrorCode":"", "ErrorMessage":"", "EventID":"8bff4fed-c229-4d2d-8264-4ab28a487505", "EventName":"AttachPolicy", "EventTime":"2016-04-08T23:51:36Z", "EventType":"AwsApiCall", "ReadOnly":"", "RecipientAccountList":"", "RequestID":"d4875df2-fde4-11e5-b829-23bf9b56cbcd", "RequestParamters":{ "principal":"arn:aws:iot:us-east-1:123456789012:cert/528ce36e8047f6a75ee51ab7beddb4eb268ad41d2ea881a10b67e8e76924d894", "policyName":"ExamplePolicyForIoT" }, "Resources":"", "ResponseElements":"", "SourceIpAddress":"52.90.213.26", "UserAgent":"aws-internal/3", "UserIdentity":{ "type":"AssumedRole", "principalId":"AKIAI44QH8DHBEXAMPLE", "arn":"arn:aws:sts::12345678912:assumed-role/iotmonitor-us-east-1-beta-InstanceRole-1C5T1YCYMHPYT/i-35d0a4b6", "accountId":"222222222222", "accessKeyId":"access-key-id", "sessionContext":{ "attributes":{ "mfaAuthenticated":"false", "creationDate":"Fri Apr 08 23:51:10 UTC 2016" }, "sessionIssuer":{ "type":"Role", "principalId":"AKIAI44QH8DHBEXAMPLE", "arn":"arn:aws:iam::123456789012:role/executionServiceEC2Role/iotmonitor-us-east-1-beta-InstanceRole-1C5T1YCYMHPYT", "accountId":"222222222222", "userName":"iotmonitor-us-east-1-InstanceRole-1C5T1YCYMHPYT" } }, "invokedBy":{ "serviceAccountId":"111111111111" } }, "VpcEndpointId":"" }