本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon CloudTrail 记录 Amazon IoT OTA API 调用
FreeRTOS 与 CloudTrail Amazon S3 桶集成,该服务可捕获Amazon IoT OTA API 调用并将日志文件传输到您指定的 Amazon S3 桶中。 CloudTrail 捕获从您的代码对Amazon IoT OTA API 的 API 调用。使用收集的信息 CloudTrail,您可以确定向Amazon IoT OTA 发出了什么请求、发出请求的来源 IP 地址、何人发出的请求、请求的发出时间以及其它信息。
有关 CloudTrail详细信息(包括如何对其进行配置和启用),请参阅Amazon CloudTrail用户指南。
中的 FreeRTOS 信息 CloudTrail
在Amazon账户中启用 CloudTrail 日志记录后,对Amazon IoT OTA 操作的 API 调用将在 CloudTrail 日志文件中跟踪,这些调用随其它Amazon服务记录一起写入到日志文件中。 CloudTrail 根据时间段和文件大小来确定何时创建并写入新文件。
以下Amazon IoT OTA 控制平面操作由以下人员记录 CloudTrail:
Amazon IoT不会记录 OTA 数据层面的操作(设备端) CloudTrail。 CloudWatch 用于监视这些。
每个日志条目都包含有关生成请求的人员的信息。日志条目中的用户身份信息可帮助您确定以下内容:
-
请求是使用根用户凭证还是 IAM 用户凭证发出的。
-
请求是使用角色还是联合身份用户的临时安全凭证发出的。
-
请求是否由其它 Amazon 服务发出。
有关更多信息,请参阅 CloudTrail userIdentity 元素。 Amazon IoTOTA 操作记录在 Amazon IoTOTA API 参考中。
日志文件可以在Amazon S3 桶中存储任意长时间,不过您也可以定义 Amazon S3 生命周期规则以自动归档或删除日志文件。默认情况下,将使用 Amazon S3 服务器端加密 (SSE) 对日志文件进行加密。
如果您想在日志文件传输时收到日志文件时通知,您可以配置 CloudTrail 为发布 Amazon SNS 通知。有关更多信息,请参阅为配置 Amazon SNS 通知 CloudTrail。
您也可以将多个Amazon区域和多个Amazon账户的Amazon IoT OTA 日志文件聚合到单个 Amazon S3 桶中。
有关更多信息,请参阅接收来自多个区域 CloudTrail 的日志文件和接收来自多个账户 CloudTrail 的日志文件。
了解 FreeRTOS 日志文件条目
CloudTrail 日志文件可以包含一个或多个日志条目。每个条目列出了多个 JSON 格式的事件。一个日志条目表示来自任何源的一个请求,包括有关所请求的操作、操作的日期和时间、请求参数等方面的信息。日志条目不是公用 API 调用的有序堆栈跟踪,因此它们不会以任何特定顺序显示。
下面的示例显示了一个 CloudTrail 日志条目,该条目说明了CreateOTAUpdate
行动号召性用语的日志条目。
{ "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
" }