Registro de las llamadas a la API de Amazon Athena con AWS CloudTrail - Amazon Athena

Registro de las llamadas a la API de Amazon Athena con AWS CloudTrail

Athena está integrada con AWS CloudTrail, un servicio que proporciona un registro de las acciones del usuario, el rol o un Servicio de AWS en Athena.

CloudTrail captura todas las llamadas a la API de Athena como eventos. Las llamadas capturadas incluyen las llamadas desde la consola de Athena y las llamadas desde el código a las operaciones de la API de Athena. Si crea un registro de seguimiento, puede habilitar la entrega continua de eventos de CloudTrail a un bucket de Amazon S3, incluidos los eventos para Athena. Si no configura un registro de seguimiento, puede ver los eventos más recientes en la consola de CloudTrail en el Historial de eventos.

Mediante la información recopilada por CloudTrail, puede determinar la solicitud que se realizó a Athena, la dirección IP desde la que se realizó la solicitud, quién la realizó, cuándo la realizó y los detalles adicionales.

Para más información sobre CloudTrail, consulte la Guía del usuario de AWS CloudTrail.

Puede usar Athena para consultar archivos de registro de CloudTrail desde Athena en sí y desde otros Servicios de AWS. Para obtener más información, consulte Consulta de registros de AWS CloudTrail, El SerDe JSON de Hive y la publicación del Blog de macrodatos de AWS Utilizar instrucciones CTAS con Amazon Athena para reducir los costos y mejorar el rendimiento, que utiliza CloudTrail para proporcionar información sobre el uso de Athena.

Información de Athena en CloudTrail

CloudTrail se habilita en su cuenta de Amazon Web Services cuando crea la cuenta. Cuando se produce una actividad en Athena, esa actividad se registra en un evento de CloudTrail junto con otros eventos de servicio de AWS en el Historial de eventos. Puede ver, buscar y descargar los últimos eventos de la cuenta de Amazon Web Services. Para obtener más información, consulte Ver eventos con el historial de eventos de CloudTrail.

Para mantener un registro continuo de eventos en la cuenta de Amazon Web Services, incluidos los eventos de Athena, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviar archivos de registro a un bucket de Amazon S3. De forma predeterminada, cuando se crea un registro de seguimiento en la consola, el registro de seguimiento se aplica a todas las Regiones de AWS. El registro de seguimiento registra los eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket de Amazon S3 especificado. También es posible configurar otros Servicios de AWS para analizar en profundidad y actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Para más información, consulte los siguientes temas:

CloudTrail registra todas las acciones de Athena, que están documentadas en la Referencia de la API de Amazon Athena. Por ejemplo, las llamadas a las acciones StartQueryExecution y GetQueryResults generan entradas en los archivos de registro de CloudTrail.

Cada entrada de registro o evento contiene información sobre quién generó la solicitud. La información de identidad del usuario lo ayuda a determinar lo siguiente:

  • Si la solicitud se realizó con credenciales de usuario de AWS Identity and Access Management (IAM) o credenciales de usuario raíz.

  • Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.

  • Si la solicitud la realizó otro Servicio de AWS.

Para más información, consulte Elemento userIdentity de CloudTrail.

Comprensión de las entradas de archivos de registro de Athena

Un registro de seguimiento es una configuración que permite la entrega de eventos como archivos de registros en un bucket de Amazon S3 que especifique. Los archivos de registro de CloudTrail pueden contener una o varias entradas de registro. Un evento representa una solicitud específica realizada desde un origen cualquiera, y contiene información sobre la acción solicitada, la fecha y la hora de la acción, los parámetros de la solicitud, etc. Los archivos de registro de CloudTrail no rastrean el orden en la pila de las llamadas públicas a la API, por lo que estas no aparecen en ningún orden específico.

nota

Para evitar la divulgación involuntaria de información confidencial, la entrada queryString en los registros StartQueryExecution y CreateNamedQuery tiene un valor de ***OMITTED***. Este comportamiento es así por diseño. Para acceder a la cadena de consulta real, puede utilizar la API GetQueryExecution de Athena y pasar el valor de responseElements.queryExecutionId del registro de CloudTrail.

Los siguientes son ejemplos de entradas de registro de CloudTrail para:

StartQueryExecution (correcto)

{ "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://DOC-EXAMPLE-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 (error)

{ "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" },