AWS IoT での AWS CloudTrail OTA API コールのログ記録 - FreeRTOS

AWS IoT での AWS CloudTrail OTA API コールのログ記録

FreeRTOS は CloudTrail と統合されています。これは、AWS IoT OTA API コールをキャプチャし、ログファイルを、指定した Amazon S3 バケットに渡すサービスです。CloudTrail は、コードから AWS IoT OTA API への API コールをキャプチャします。CloudTrail によって収集された情報を使用して、リクエストの作成元のソース IP アドレス、リクエストの実行者、リクエストの実行日時など、AWS IoT OTA に対してどのようなリクエストが行われたかを判断することができます。

CloudTrail を設定して有効にする方法などの詳細については、AWS CloudTrail ユーザーガイドを参照してください。https://docs.aws.amazon.com/awscloudtrail/latest/userguide/

CloudTrail での FreeRTOS 情報

AWS アカウントで CloudTrail ログ記録が有効になっている場合、AWS IoT OTA アクションに対して行われた API コールが CloudTrail ログファイルに記録されます。他の AWS のサービスのレコードもこのファイルに書き込まれます。CloudTrail は、期間とファイルサイズに基づいて、新しいファイルをいつ作成して書き込むかを決定します。

次の AWS IoT OTA のコントロールプレーンは、CloudTrail によってログに記録されます。

注記

AWS IoT OTA データプレーンのアクション (デバイス側) は、CloudTrail によってログに記録されません。これらをモニタリングするために CloudWatch を使用します。

各ログエントリには、リクエストの生成者に関する情報が含まれます。ログエントリのユーザーアイデンティティ情報は、次のことを確認するのに役立ちます。

  • リクエストがルートまたは IAM ユーザー認証情報で行われたかどうか。

  • リクエストがロールまたはフェデレーションユーザーの一時的なセキュリティ認証情報を使用して行われたかどうか。

  • リクエストが別の AWS サービスによって行われたかどうか。

詳細については、CloudTrail userIdentity エレメントを参照してください。AWS IoT OTA のアクションは、AWS IoT OTA API リファレンスで説明されています。

必要な場合はログファイルを自身の Amazon S3 バケットに保存できますが、ログファイルを自動的にアーカイブまたは削除するにように Amazon S3 ライフサイクルルールを定義することもできます。デフォルトでは Amazon S3 のサーバー側の暗号化 (SSE) を使用して、ログファイルが暗号化されます。

ログファイルの配信時に通知を受け取る場合は、Amazon SNS 通知が発行されるように CloudTrail を設定できます。詳細については、CloudTrail 用の Amazon SNS 通知の構成を参照してください。

また、複数の AWS リージョンと複数の AWS アカウントの AWS IoT OTA ログファイルを 1 つの Amazon S3 バケットに集約することもできます。

詳細は、CloudTrail ログファイルを複数のリージョンから受け取るCloudTrail ログファイルを複数のアカウントから受け取るを参照してください。

FreeRTOS ログファイルのエントリについて

CloudTrail ログファイルには、1 つ以上のログエントリを含むことができます。各エントリには、複数の JSON 形式のイベントがリストされます。ログエントリは任意の送信元からの単一のリクエストを表し、リクエストされたアクション、アクションの日時、リクエストのパラメータなどに関する情報が含まれます。ログエントリは、パブリック API コールの順序付けられたスタックトレースではないため、特定の順序では表示されません。

以下の例は、CreateOTAUpdate アクションへの呼び出しからのログを示す CloudTrail ログエントリを示しています。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EXAMPLE", "arn": "arn:aws:iam::your_aws_account:user/your_user_id", "accountId": "your_aws_account", "accessKeyId": "your_access_key_id", "userName": "your_username", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-08-23T17:27:08Z" } }, "invokedBy": "apigateway.amazonaws.com" }, "eventTime": "2018-08-23T17:27:19Z", "eventSource": "iot.amazonaws.com", "eventName": "CreateOTAUpdate", "awsRegion": "your_aws_region", "sourceIPAddress": "apigateway.amazonaws.com", "userAgent": "apigateway.amazonaws.com", "requestParameters": { "targets": [ "arn:aws:iot:your_aws_region:your_aws_account:thing/Thing_CMH" ], "roleArn": "arn:aws:iam::your_aws_account:role/Role_FreeRTOSJob", "files": [ { "fileName": "/sys/mcuflashimg.bin", "fileSource": { "fileId": 0, "streamId": "your_stream_id" }, "codeSigning": { "awsSignerJobId": "your_signer_job_id" } } ], "targetSelection": "SNAPSHOT", "otaUpdateId": "FreeRTOSJob_CMH-23-1535045232806-92" }, "responseElements": { "otaUpdateArn": "arn:aws:iot:your_aws_region:your_aws_account:otaupdate/FreeRTOSJob_CMH-23-1535045232806-92", "otaUpdateStatus": "CREATE_PENDING", "otaUpdateId": "FreeRTOSJob_CMH-23-1535045232806-92" }, "requestID": "c9649630-a6f9-11e8-8f9c-e1cf2d0c9d8e", "eventID": "ce9bf4d9-5770-4cee-acf4-0e5649b845c0", "eventType": "AwsApiCall", "recipientAccountId": "recipient_aws_account" }