Comment puis-je planifier des requêtes dans Amazon Athena ?
Brève description
La planification des requêtes est utile dans de nombreux scénarios, tels que l'exécution de requêtes de rapport périodiques ou le chargement de nouvelles partitions à intervalles réguliers. Voici quelques méthodes de planification de requêtes dans Athena :
Solution
Suivez ces étapes pour planifier une requête Athena à l'aide d'une fonction Lambda et d'une règle EventBridge :
1. Créez un rôle de service AWS Identity and Access Management (IAM) pour Lambda. Ensuite, joignez une stratégie qui autorise l'accès à Athena, Amazon Simple Storage Service (Amazon S3) et Amazon CloudWatch Logs. Par exemple, vous pouvez ajouter AmazonAthenaFullAccess et CloudWatchLogsFullAccess au rôle. AmazonAthenaFullAccess permet un accès complet à Athena et inclut des autorisations de base pour Amazon S3. CloudWatchLogsFullAccess permet un accès complet à CloudWatch Logs.
2. Ouvrez la console Lambda.
3. Choisissez Create function (Créer une fonction).
4. Assurez-vous que l'option Créer à partir de zéro est sélectionnée, puis configurez les options suivantes :
Pour Name (Nom), saisissez un nom pour votre fonction.
Pour Runtime (Exécution), choisissez l'une des options Python.
Pour Role (Rôle), choisissez Use an existing role, (Utiliser un rôle existant), puis choisissez le rôle IAM que vous avez créé à l'étape 1.
5. Sélectionnez Créer une fonction.
6. Collez votre code dans la section Function code (Code de fonction). L'exemple suivant utilise Python 3.7. Remplacez les valeurs suivantes dans l'exemple :
default : le nom de base de données Athena
SELECT * FROM default.tb : la requête que vous souhaitez planifier
s3 ://AWSDOC-EXAMPLE-BUCKET/ : le compartiment S3 pour le résultat de la requête
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. Choisissez Deploy (Déployer).
8. Ouvrez la console Amazon EventBridge.
9. Dans le volet de navigation, sélectionnez Règles, puis Créer une règle.
10. Saisissez un nom et une description pour la règle.
11. Pour Définir le modèle, sélectionnez Planifier.
12. Sélectionnez Expression Cron, puis saisissez une expression cron.
13. Pour Sélectionner un bus d'événements, sélectionnez Bus d'événements AWS par défaut.
14. Dans la section Sélectionner des cibles, procédez comme suit :
Pour Cible, sélectionnez Fonction Lambda dans la liste déroulante. Pour Fonction, sélectionnez le nom de votre fonction Lambda dans la liste déroulante.
15. Choisissez Créer.
Si vous planifiez plusieurs requêtes, notez qu'il existe des quotas pour le nombre d'appels d'API Athena par compte. Pour plus d'informations, consultez Quotas d'appel d'API par compte.
Informations connexes
Didacticiel : Programmer des fonctions AWS Lambda à l'aide d'EventBridge
Création d'une règle Amazon EventBridge qui s'exécute selon un calendrier