Supervisión de eventos de Athena con Amazon EventBridge
Puede utilizar Amazon Athena con Amazon EventBridge para recibir notificaciones en tiempo real sobre el estado de las consultas. Cuando una consulta ha enviado estados de transiciones, Athena publica un evento en EventBridge que contiene información sobre esa transición de estado de consulta. Puede escribir reglas simples para eventos que le interesen y realizar acciones automatizadas cuando un evento coincida con una regla. Por ejemplo, puede crear una regla que invoque una función AWS Lambda cuando una consulta alcance un estado terminal. Los eventos se emiten en la medida de lo posible.
Antes de crear reglas de eventos para Athena, debe hacer lo siguiente:
-
Familiarizarse con los eventos, las reglas y los destinos de EventBridge. Para obtener más información, consulte ¿Qué es Amazon EventBridge? Para obtener más información sobre cómo configurar reglas, consulte Introducción a Amazon EventBridge.
-
Crear el destino o destinos que se van a usar en las reglas de eventos.
nota
Actualmente, Athena ofrece un tipo de evento, Athena Query State Change (Cambio de estado de consulta de Athena), pero puede agregar otros tipos de eventos y detalles. Si va a deserializar datos JSON de eventos mediante programación, asegúrese de que la aplicación esté preparada para tratar propiedades desconocidas para evitar problemas si se agregan estas propiedades adicionales.
Formato de eventos de Athena
El siguiente es el patrón básico de un evento de Amazon Athena.
{ "source":[ "aws.athena" ], "detail-type":[ "Athena Query State Change" ], "detail":{ "currentState":[ "SUCCEEDED" ] } }
Evento de cambio de estado de la consulta de Athena
En el ejemplo siguiente se muestra el evento de cambio de estado de la consulta de Athena con un valor currentState
de SUCCEEDED
.
{ "version":"0", "id":"abcdef00-1234-5678-9abc-def012345678", "detail-type":"Athena Query State Change", "source":"aws.athena", "account":"123456789012", "time":"2019-10-06T09:30:10Z", "region":"us-east-1", "resources":[ ], "detail":{ "versionId":"0", "currentState":"SUCCEEDED", "previousState":"RUNNING", "statementType":"DDL", "queryExecutionId":"01234567-0123-0123-0123-012345678901", "workgroupName":"primary", "sequenceNumber":"3" } }
En el ejemplo siguiente se muestra el evento de cambio de estado de la consulta de Athena con un valor currentState
de FAILED
. El bloque athenaError
aparece solo cuando el valor de currentState
es FAILED
. Para obtener información acerca de los valores para errorCategory
y errorType
, consulte Catálogo de errores de Athena.
{ "version":"0", "id":"abcdef00-1234-5678-9abc-def012345678", "detail-type":"Athena Query State Change", "source":"aws.athena", "account":"123456789012", "time":"2019-10-06T09:30:10Z", "region":"us-east-1", "resources":[ ], "detail":{ "athenaError": { "errorCategory": 2.0, //Value depends on nature of exception "errorType": 1306.0, //Type depends on nature of exception "errorMessage": "Amazon S3 bucket not found", //Message depends on nature of exception "retryable":false //Retryable value depends on nature of exception }, "versionId":"0", "currentState": "FAILED", "previousState": "RUNNING", "statementType":"DML", "queryExecutionId":"01234567-0123-0123-0123-012345678901", "workgroupName":"primary", "sequenceNumber":"3" } }
Propiedades de salida
La salida JSON incluye las siguientes propiedades.
Propiedad | Descripción |
---|---|
athenaError |
Aparece solo cuando el valor de currentState es FAILED . Contiene información sobre el error que se ha producido, incluida la categoría de error, el tipo de error, el mensaje de error y si se puede reintentar la acción que ha provocado el error. Los valores de cada uno de estos campos dependen de la naturaleza del error. Para obtener información acerca de los valores para errorCategory y errorType , consulte Catálogo de errores de Athena. |
versionId |
Número de versión del esquema del objeto de detalle. |
currentState |
El estado que adoptó la consulta cuando se produjo el evento. |
previousState |
El estado que tenía la consulta cuando se produjo el evento. |
statementType |
El tipo de instrucción de consulta que se ejecutó. |
queryExecutionId |
El identificador único de la consulta que se ejecutó. |
workgroupName |
El nombre del grupo de trabajo en el que se ejecutó la consulta. |
sequenceNumber |
Un número monótonamente creciente que permite la deduplicación y la ordenación de eventos entrantes que implican una sola ejecución de consulta. Cuando se publican eventos duplicados para la misma transición de estado, el valor de sequenceNumber es el mismo. Cuando una consulta experimenta una transición de estado más de una vez, como las consultas que experimentan una puesta en cola extraña, puede utilizar sequenceNumber para ordenar eventos con valores de previousState y currentState idénticos. |
Ejemplo
En el siguiente ejemplo se publican eventos en un tema de Amazon SNS al que se ha suscrito. Cuando se realice una consulta en Athena, recibirá un correo electrónico. En el ejemplo se presupone que el tema de Amazon SNS existe y que se ha suscrito a él.
Para publicar eventos de Athena en un tema de Amazon SNS
-
Cree el destino del tema de Amazon SNS. Conceda a la entidad principal de EventBridge Events Service el permiso
events.amazonaws.com
para publicar en el tema de Amazon SNS, como en el siguiente ejemplo.{ "Effect":"Allow", "Principal":{ "Service":"events.amazonaws.com" }, "Action":"sns:Publish", "Resource":"arn:aws:sns:us-east-1:111111111111:your-sns-topic" }
-
Utilice el comando
events put-rule
de la AWS CLI para crear una regla para eventos de Athena, como en el siguiente ejemplo.aws events put-rule --name {
ruleName
} --event-pattern '{"source": ["aws.athena"]}' -
Utilice el comando
events put-targets
de la AWS CLI para asociar el destino del tema de Amazon SNS, como en el siguiente ejemplo.aws events put-targets --rule {
ruleName
} --targets Id=1,Arn=arn:aws:sns:us-east-1:111111111111:your-sns-topic -
Realice una consulta en Athena y observe el destino que se está invocando. Debería recibir mensajes de correo electrónico correspondientes del tema de Amazon SNS.
Uso de AWS User Notifications con Amazon Athena
Puede utilizar las AWS User Notifications para configurar los canales de entrega a fin de recibir notificaciones sobre los eventos de Amazon Athena. Recibirá una notificación cuando un evento coincida con una regla que especifique. Puede recibir notificaciones de eventos a través de varios canales, como correo electrónico, notificaciones por chat de AWS Chatbot o notificaciones de inserción de AWS Console Mobile Application. También puede ver las notificaciones en el Centro de notificaciones de la consola
Para obtener más información, consulte la Guía del usuario de AWS User Notifications.