Registrare le chiamate API di Amazon Athena con AWS CloudTrail - Amazon Athena

Registrare le chiamate API di Amazon Athena con AWS CloudTrail

Athena è integrato con AWS CloudTrail, un servizio che offre un record delle operazioni eseguite da un utente, un ruolo o un Servizio AWS in Athena.

CloudTrail acquisisce tutte le chiamate API per Athena come eventi. Le chiamate acquisite includono le chiamate dalla console Athena e le chiamate di codice alle operazioni delle API Athena. Se si crea un percorso, è possibile abilitare la distribuzione continua di eventi CloudTrail in un bucket Amazon S3, inclusi gli eventi per Athena. Se non configuri un trail, puoi comunque visualizzare gli eventi più recenti nella console di CloudTrail in Cronologia eventi.

Le informazioni raccolte da CloudTrail consentono di determinare la richiesta effettuata ad Athena, l'indirizzo IP da cui è partita la richiesta, l'autore della richiesta, il momento in cui è stata eseguita e altri dettagli.

Per ulteriori informazioni su CloudTrail, vedi la Guida per l'utente di AWS CloudTrail.

È possibile utilizzare Athena per interrogare i file di log CloudTrail da Athena stessa e da altri Servizi AWS. Per ulteriori informazioni, consulta Log AWS CloudTrail delle query, Hive JSON SerDe e il post del blog AWS Big Data Usa le istruzioni CTAS con Amazon Athena per ridurre i costi e migliorare le prestazioni, che utilizza CloudTrail per fornire informazioni dettagliate sull'utilizzo di Athena.

Informazioni riguardanti Athena in CloudTrail

CloudTrail è abilitato sull'account Amazon Web Services al momento della sua creazione. Quando si verifica un'attività in Athena, questa viene registrata in un evento CloudTrail insieme ad altri eventi di servizio AWS in Cronologia eventi. È possibile visualizzare, cercare e scaricare gli eventi recenti nell'account Amazon Web Services. Per ulteriori informazioni, consulta Visualizzazione di eventi mediante la cronologia eventi di CloudTrail.

Per una registrazione continua degli eventi nell'account Amazon Web Services che includa gli eventi per Athena, crea un percorso. Un percorso consente a CloudTrail di distribuire i file di log in un bucket Amazon S3. Per impostazione predefinita, quando si crea un percorso nella console, questo sarà valido in tutte le Regioni AWS. Il percorso registra gli eventi di tutte le Regioni nella partizione AWSe distribuisce i file di log nel bucket Amazon S3 specificato. Inoltre, è possibile configurare altri Servizi AWSper analizzare con maggiore dettaglio e usare i dati evento raccolti nei registri CloudTrail. Per ulteriori informazioni, consulta gli argomenti seguenti:

Tutte le operazioni Athena vengono registrate da CloudTrail e documentate nella referenza dell'API di Amazon Athena. Ad esempio, le chiamate alle operazioni StartQueryExecution e GetQueryResults generano voci nei file di log di CloudTrail.

Ogni evento o voce di log contiene informazioni sull'utente che ha generato la richiesta. Le informazioni di identità consentono di determinare quanto segue:

  • Se la richiesta è stata effettuata con credenziali utente root o AWS Identity and Access Management (IAM).

  • Se la richiesta è stata effettuata con le credenziali di sicurezza temporanee per un ruolo o un utente federato.

  • Se la richiesta è stata effettuata da un altro Servizio AWS.

Per ulteriori informazioni, consulta Elemento CloudTrail userIdentity.

Comprendere le voci di file di log di Athena

Un trail è una configurazione che consente la distribuzione di eventi come i file di log in un bucket Amazon S3 specificato. I file di log di CloudTrail possono contenere una o più voci di log. Un evento rappresenta una singola richiesta da un'origine e include informazioni sull'operazione richiesta, sulla data e sull'ora dell'operazione, sui parametri richiesti e così via. I file di log CloudTrail non sono una traccia dello stack ordinata delle chiamate API pubbliche e di conseguenza non devono apparire in base a un ordine specifico.

Nota

Per evitare la divulgazione involontaria di informazioni riservate, la voce queryString in entrambi i log StartQueryExecution e CreateNamedQuery ha un valore di ***OMITTED***. Si tratta di un'impostazione predefinita. Per accedere alla stringa di query effettiva, puoi utilizzare l'API Athena GetQueryExecution e passare il valore di responseElements.queryExecutionId dal log CloudTrail.

I seguenti esempi mostrano voci di log di CloudTrail per:

StartQueryExecution (Successful)

{ "eventVersion":"1.05", "userIdentity":{ "type":"IAMUser", "principalId":"EXAMPLE_PRINCIPAL_ID", "arn":"arn:aws:iam::123456789012:user/johndoe", "accountId":"123456789012", "accessKeyId":"EXAMPLE_KEY_ID", "userName":"johndoe" }, "eventTime":"2017-05-04T00:23:55Z", "eventSource":"athena.amazonaws.com", "eventName":"StartQueryExecution", "awsRegion":"us-east-1", "sourceIPAddress":"77.88.999.69", "userAgent":"aws-internal/3", "requestParameters":{ "clientRequestToken":"16bc6e70-f972-4260-b18a-db1b623cb35c", "resultConfiguration":{ "outputLocation":"s3://amzn-s3-demo-bucket/test/" }, "queryString":"***OMITTED***" }, "responseElements":{ "queryExecutionId":"b621c254-74e0-48e3-9630-78ed857782f9" }, "requestID":"f5039b01-305f-11e7-b146-c3fc56a7dc7a", "eventID":"c97cf8c8-6112-467a-8777-53bb38f83fd5", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" }

StartQueryExecution (Failed)

{ "eventVersion":"1.05", "userIdentity":{ "type":"IAMUser", "principalId":"EXAMPLE_PRINCIPAL_ID", "arn":"arn:aws:iam::123456789012:user/johndoe", "accountId":"123456789012", "accessKeyId":"EXAMPLE_KEY_ID", "userName":"johndoe" }, "eventTime":"2017-05-04T00:21:57Z", "eventSource":"athena.amazonaws.com", "eventName":"StartQueryExecution", "awsRegion":"us-east-1", "sourceIPAddress":"77.88.999.69", "userAgent":"aws-internal/3", "errorCode":"InvalidRequestException", "errorMessage":"Invalid result configuration. Should specify either output location or result configuration", "requestParameters":{ "clientRequestToken":"ca0e965f-d6d8-4277-8257-814a57f57446", "queryString":"***OMITTED***" }, "responseElements":null, "requestID":"aefbc057-305f-11e7-9f39-bbc56d5d161e", "eventID":"6e1fc69b-d076-477e-8dec-024ee51488c4", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" }

CreateNamedQuery

{ "eventVersion":"1.05", "userIdentity":{ "type":"IAMUser", "principalId":"EXAMPLE_PRINCIPAL_ID", "arn":"arn:aws:iam::123456789012:user/johndoe", "accountId":"123456789012", "accessKeyId":"EXAMPLE_KEY_ID", "userName":"johndoe" }, "eventTime":"2017-05-16T22:00:58Z", "eventSource":"athena.amazonaws.com", "eventName":"CreateNamedQuery", "awsRegion":"us-west-2", "sourceIPAddress":"77.88.999.69", "userAgent":"aws-cli/1.11.85 Python/2.7.10 Darwin/16.6.0 botocore/1.5.48", "requestParameters":{ "name":"johndoetest", "queryString":"***OMITTED***", "database":"default", "clientRequestToken":"fc1ad880-69ee-4df0-bb0f-1770d9a539b1" }, "responseElements":{ "namedQueryId":"cdd0fe29-4787-4263-9188-a9c8db29f2d6" }, "requestID":"2487dd96-3a83-11e7-8f67-c9de5ac76512", "eventID":"15e3d3b5-6c3b-4c7c-bc0b-36a8dd95227b", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" },