Como posso agendar uma consulta ao Amazon Athena?
Quero agendar consultas no Amazon Athena.
Breve descrição
O agendamento de consultas é útil em muitos cenários, como na execução de consultas periódicas de relatórios ou no carregamento de novas partições em intervalos regulares. Aqui estão algumas maneiras de agendar consultas no Athena:
- Crie uma função do AWS Lambda, usando o SDK de sua escolha, para agendar a consulta. Para obter mais informações sobre as linguagens de programação compatíveis no Lambda, consulte as Perguntas frequentes sobre o AWS Lambda. Em seguida, crie uma regra do Amazon EventBridge para agendar a função do Lambda. Esse é o método explicado na Resolução.
- Se estiver usando o Athena em um pipeline de ETL, use o AWS Step Functions para criar esse pipeline e agendar a consulta.
- Em uma máquina Linux, use crontab para agendar a consulta.
- Use um trabalho de shell Python do AWS Glue para executar a consulta do Athena usando a API boto3 do Athena. Em seguida, defina um cronograma para o trabalho do AWS Glue.
Resolução
Siga estas etapas para agendar uma consulta do Athena usando uma função do Lambda e uma regra do EventBridge:
1. Crie um perfil do AWS Identity and Access Management (IAM) para o Lambda. Em seguida, anexe uma política que permita o acesso ao Athena, ao Amazon Simple Storage Service (Amazon S3) e ao Amazon CloudWatch Logs. Por exemplo, você pode adicionar AmazonAthenaFullAccess e CloudWatchLogsFullAccess ao perfil. AmazonAthenaFullAccess permite acesso total ao Athena e inclui permissões básicas para o Amazon S3. **CloudWatchLogsFullAccess ** permite acesso total ao CloudWatch Logs.
2. Abra o console do Lambda.
3. Selecione Criar função.
4. Certifique-se de que a opção Criar do zero esteja selecionada e configure as seguintes opções:
Em Nome, insira um nome para a função.
Em Runtime, escolha uma das opções do Python.
Em Perfil, escolha Usar um perfil existente e depois escolha o perfil do IAM criado na etapa 1.
5. Selecione Criar função.
6. Cole seu código na Código da função. O exemplo a seguir usa o Python 3.7. Substitua os seguintes valores no exemplo:
default: o nome do banco de dados Athena
SELECT * FROM default.tb: a consulta que você deseja agendar
s3://AWSDOC-EXAMPLE-BUCKET/: o bucket do S3 para a saída da 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. Escolha Implantar.
8. Abra o console do Amazon EventBridge.
9. No painel de navegação, selecione Regras, em seguida, selecione Criar regra.
10. Insira um nome e uma descrição para a regra.
11. Em Definir padrão, selecione Cronograma.
12. Selecione Expressão Cron e insira uma expressão cron.
13. Em Selecionar barramento de eventos, selecione Barramento de eventos padrão da AWS.
14. Na seção Selecionar destinos, faça o seguinte:
Em Destino, selecione Função do Lambda na lista suspensa. Em Função, selecione o nome da sua função do Lambda na lista suspensa.
15. Escolha Criar.
Se estiver agendando várias consultas, observe que há cotas para o número de chamadas à API do Athena por conta. Para obter mais informações, consulte Cotas de chamada de API por conta.
Informações relacionadas
Conteúdo relevante
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano