Je souhaiterais planifier des requêtes dans Amazon Athena.
Brève description
La planification des requêtes est importante dans de nombreux cas, notamment lors de l’exécution de rapports périodiques ou du chargement de nouvelles partitions à intervalles réguliers. Voici quelques méthodes de planification de requêtes dans Athena :
Ré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. Joignez ensuite une politique 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 aux journaux CloudWatch.
2. Ouvrez la console Lambda.
3. Sélectionnez 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 :
Dans le champ Nom, saisissez le nom de votre fonction.
Dans Exécution,choisissez l’une des options Python.
Pour Rôle, choisissez 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 Code de fonction. Le présent exemple utilise Python 3.7. Remplacez les valeurs suivantes dans l’exemple :
par défaut : le nom de la base de données Athena
SELECT * FROM default.tb : la requête que vous souhaitez planifier
s3://AWSDOC-EXAMPLE-BUCKET/ : le compartiment S3 pour la sortie 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 Déployer.
8. Ouvrez la console Amazon EventBridge.
9. Choisissez Règles, puis Créer une règle dans le volet de navigation.
10. Saisissez le nom et la description de la règle.
11. Sélectionnez Planifier pour Définir le modèle.
12. Sélectionnez Expression Cron, puis saisissez une expression cron.
13. Choisissez Bus d’événements AWS par défaut pour sélectionner un bus d’événements.
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. Sélectionnez 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
Tutoriel : programmer des fonctions AWS Lambda à l’aide d’EventBridge
Création d’une règle Amazon EventBridge qui s’exécute selon un calendrier