Registrar em log chamadas de API do OTA da AWS IoT com o AWS CloudTrail - FreeRTOS

Registrar em log chamadas de API do OTA da AWS IoT com o AWS CloudTrail

O FreeRTOS é integrado ao CloudTrail, um serviço que captura chamadas de API do AWS IoT específicas e fornece arquivos de log a um bucket do Amazon S3 especificado por você. O CloudTrail captura chamadas de API do seu código para as APIs OTA do AWS IoT. Usando as informações coletadas pelo CloudTrail, você pode determinar a solicitação que foi feita para o OTA do AWS IoT, o endereço IP de origem a partir do qual a solicitação foi feita, quem fez a solicitação, quando ela foi feita e assim por diante.

Para obter mais informações sobre o CloudTrail, incluindo como configurá-lo e habilitá-lo, consulte o Guia do usuário do AWS CloudTrail.

Informações dos planos do FreeRTOS no CloudTrail

Quando o registro em log do CloudTrail está habilitado em sua conta AWS, as chamadas de API feitas para ações do OTA do AWS IoT serão rastreadas nos arquivos de log do CloudTrail, onde serão gravadas com outros registros de serviço da AWS. O CloudTrail determina quando criar e gravar em um novo arquivo conforme o período e o tamanho do arquivo.

As seguintes ações de ambiente de gerenciamento OTA do AWS IoT são registradas pelo CloudTrail:

nota

As ações do plano de dados OTA do AWS IoT (lado do dispositivo) não são registradas em log pelo CloudTrail. Use o CloudWatch para monitorá-los.

Cada entrada de log contém informações sobre quem gerou a solicitação. As informações de identidade do usuário na entrada de log ajudam você a determinar o seguinte:

  • Se a solicitação foi feita com credenciais de usuário-raiz ou usuário do IAM.

  • Se a solicitação foi feita com credenciais de segurança temporárias de uma função ou de um usuário federado.

  • Se a solicitação foi feita por outro serviço da AWS.

Para obter mais informações, consulte o Elemento userIdentity do CloudTrail. AWS IoT. As ações OTA são documentadas na Referência da API OTA do AWS IoT.

É possível armazenar os arquivos de log no seu bucket do Amazon S3 pelo tempo que desejar, mas também pode definir regras do ciclo de vida do Amazon S3 para arquivar ou excluir os arquivos de log automaticamente. Por padrão, os arquivos de log são criptografados com criptografia do lado do servidor (SSE) do Amazon S3.

Se desejar ser notificado sobre quando os arquivos de log são entregues, é possível configurar o CloudTrail para publicar notificações do Amazon SNS. Para obter mais informações, consulte Configuração de notificações do Amazon SNS para o CloudTrail.

Também é possível agregar arquivos de log do OTA do AWS IoT de várias regiões da AWS e contas da AWS em um único bucket do Amazon S3.

Para obter mais informações, consulte Recebimento de arquivos de log do CloudTrail de várias regiões e Recebimento de arquivos de log do CloudTrail de várias contas.

Noções básicas das entradas de arquivo de log do FreeRTOS

Os arquivos de log do CloudTrail contêm uma ou mais entradas de log. Cada entrada lista vários eventos com formatação JSON. Uma entrada de log representa uma única solicitação de qualquer origem e inclui informações sobre a ação solicitada, a data e hora da ação, parâmetros de solicitação, e assim por diante. As entradas de log não são um rastreamento de pilha ordenada das chamadas de API pública. Assim, elas não são exibidas em nenhuma ordem específica.

O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra o log de uma chamada à ação 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" }