¿Cómo puedo programar una consulta de Amazon Athena?
Quiero programar consultas en Amazon Athena.
Breve descripción
La programación de consultas resulta útil en muchos escenarios, como la ejecución de consultas de informes periódicas o la carga de nuevas particiones a intervalos regulares. Estas son algunas de las formas de programar consultas en Athena:
- Cree una función de AWS Lambda con el SDK que prefiera para programar la consulta. Para obtener más información sobre los lenguajes de programación compatibles con Lambda, consulte Preguntas frecuentes sobre AWS Lambda. A continuación, cree una regla de Amazon EventBridge para programar la función de Lambda. Este es el método que se explica en Solución.
- Si usa Athena en una canalización de ETL, utilice AWS Step Functions para crear la canalización y programar la consulta.
- En una máquina Linux, utilice crontab para programar la consulta.
- Utilice 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, defina una programación para el trabajo de AWS Glue.
Solución
Siga estos pasos para programar una consulta de Athena mediante una función de Lambda y una regla de EventBridge:
1. Cree un rol de servicio de AWS Identity and Access Management (IAM) para Lambda. A continuación, asocie una política que permita el acceso a Athena, Amazon Simple Storage Service (Amazon S3) y Registros de Amazon CloudWatch. Por ejemplo, puede agregar 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.
2. Abra la consola de Lambda.
3. Elija Crear una función.
4. Asegúrese de que la opción Crear desde cero esté seleccionada y, a continuación, configure las siguientes opciones:
En Nombre, introduzca un nombre para la función.
En Versión ejecutable, elija una de las opciones de Python.
En Rol, seleccione Uso de un rol existente y, a continuación, elija el rol de IAM que creó en el paso 1.
5. Elija Crear una función.
6. Pegue el código en la sección Código de la función. En el siguiente ejemplo se usa Python 3.7. Sustituya los siguientes valores en el ejemplo:
default: nombre de la base de datos de Athena
SELECT * FROM default.tb: consulta que desea 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
7. Elija Desplegar.
8. Abra la consola de Amazon EventBridge.
9. En el panel de navegación, seleccione Reglas y, a continuación, elija Crear regla.
10. Introduzca un nombre y una descripción para la regla.
11. En Definir patrón, seleccione Programación.
12. Seleccione Expresión cron y, a continuación, introduzca una expresión cron.
13. En Seleccionar bus de eventos, elija Bus de eventos predeterminado de AWS.
14. En la sección Seleccionar destinos, siga estos pasos:
En Destino, seleccione Función de Lambda en la lista desplegable. En Función, elija el nombre de la función de Lambda en la lista desplegable.
15. Seleccione Crear.
Si programa varias consultas, tenga en cuenta que existen cuotas respecto al número de llamadas a la API de Athena por cada cuenta. Para obtener más información, consulte Per account API call quotas.
Información relacionada
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año