Quiero programar consultas en Amazon Athena.
Descripción corta
Las consultas programadas tienen muchos casos de uso, como la generación de informes periódicos o la carga de nuevas particiones en intervalos regulares. Elige una de las siguientes formas de programar consultas en Athena, según tu caso de uso:
- Crea una función de AWS Lambda para programar la consulta y, a continuación, crea una regla de Amazon EventBridge para programar la función de Lambda.
- Utiliza AWS Step Functions para crear una canalización de ETL que utilice Athena.
- En una máquina Linux, utiliza crontab para programar la consulta.
- Utiliza un trabajo de shell Python de AWS Glue.
Resolución
Uso de una función de Lambda y una regla de EventBridge para programar una consulta de Athena
Puedes usar una función de Lambda y una regla de EventBridge para programar una consulta de Athena. Para ello, sigue estos pasos:
-
Crea un rol de servicio de AWS Identity and Access Management (IAM) para Lambda. A continuación, asocia una política que permita el acceso a Athena, Amazon Simple Storage Service (Amazon S3) y Registros de Amazon CloudWatch. Por ejemplo, puedes agregar permisos AmazonAthenaFullAccess y CloudWatchLogsFullAccess al rol. AmazonAthenaFullAccess permite total acceso a Athena e incluye permisos básicos para Amazon S3. CloudWatchLogsFullAccess permite total acceso a Registros de CloudWatch.
-
Abre la consola de Lambda.
-
Selecciona Crear función.
-
Asegúrate de que la opción Crear desde cero esté seleccionada y, a continuación, configura las siguientes opciones:
En Nombre, introduce un nombre para tu función.
En Versión ejecutable, elige una de las opciones de Python.
En Rol, selecciona Uso de un rol existente y, a continuación, elige el rol de IAM que creaste en el paso 1.
-
Selecciona Crear función.
-
Pea el código en la sección Código de la función. En el siguiente ejemplo se usa Python 3.7. Sustituye los siguientes valores en el ejemplo:
default: nombre de la base de datos de Athena
SELECT * FROM default.tb: consulta que deseas programar
s3://AWSDOC-EXAMPLE-BUCKET/: bucket de S3 para el resultado de la consulta
import boto3
# Query string to execute
query = 'SELECT * FROM database.tb'
# Database to execute the query against
DATABASE = 'database'
# Output location for query results
output='s3://OUTPUTBUCKET/'
def lambda_handler(event, context):
# Initiate the Boto3 Client
client = boto3.client('athena')
# Start the query execution
response = client.start_query_execution(
QueryString=query,
QueryExecutionContext={
'Database': DATABASE
},
ResultConfiguration={
'OutputLocation': output
}
)
# Return response after starting the query execution
return response
-
Selecciona Desplegar.
-
Abre la consola de Amazon EventBridge.
-
En el panel de navegación, selecciona Reglas y, a continuación, selecciona Crear una regla.
-
Introduce un nombre y una descripción para la regla.
-
En Definir patrón, selecciona Programación.
-
Selecciona Expresión cron y, a continuación, introduce una expresión cron.
-
En Seleccionar bus de eventos, elige Bus de eventos predeterminado de AWS.
-
En la sección Seleccionar objetivos, haz lo siguiente:
En Objetivo, selecciona Función de Lambda en la lista desplegable.
En Función, selecciona el nombre de la función de Lambda en la lista desplegable.
-
Selecciona Crear.
Nota: Hay cuotas para el número permitido de llamadas a la API de Athena por cuenta. Asegúrate de mantenerte dentro de las cuotas si quieres programar varias consultas. Para obtener más información, consulta Cuotas de llamadas a la API por cuenta.
Creación de una canalización de ETL con Step Functions
Si usas Step Functions para crear una canalización de ETL que incluya Athena, puedes usar Step Functions para programar una consulta de Athena.
Uso de crontab desde una máquina Linux
Si usas una máquina Linux, puedes usar crontab para programar una consulta de Athena.
Uso de un trabajo de shell de Python de AWS Glue
Puedes usar un trabajo de shell de Python de AWS Glue para ejecutar la consulta de Athena mediante la API de Boto3 de Athena. A continuación, define una programación para el trabajo de AWS Glue.
Información relacionada
Tutorial: Creación de una regla programada de EventBridge para las funciones de AWS Lambda
Creación de una regla de Amazon EventBridge que se ejecute según una programación en Amazon EventBridge