Como faço para agendar consultas para um cluster do Amazon Redshift?
Quero agendar uma consulta para ser executada em um cluster do Amazon Redshift.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Use o editor de consultas v2 para executar, visualizar, salvar e programar consultas SQL para seus clusters provisionados do Amazon Redshift.
Configurar permissões do editor de consultas
Antes de criar uma consulta agendada, você deve configurar as funções e permissões corretas do AWS Identity and Access Management (AWS IAM). As consultas agendadas exigem que o Amazon EventBridge inicie a consulta dentro do cronograma e que a API de dados do Amazon Redshift execute a consulta no cluster.
Tanto o usuário do IAM que cria o agendamento quanto o perfil do IAM que executa a consulta devem ter as permissões apropriadas.
Acesso de usuário do IAM
É possível anexar políticas, como AmazonRedshiftDatafullAccess e AmazonEventBridgefullAccess.
Também é possível criar uma política personalizada com permissões mais específicas. Para obter mais informações, consulte Configurar permissões para agendar uma consulta.
Perfil de execução para consultas
Para executar consultas agendadas, identifique ou crie um perfil do IAM para seu cluster do Amazon Redshift ou grupo de trabalho do Amazon Redshift sem servidor.
Em seguida, anexe as políticas, como AmazonRedshiftDatafullAccess e AmazonEventBridgefullAccess, para que o Amazon Redshift possa assumir o perfil e realizar ações agendadas.
Para mais informações, consulte Uso de políticas baseadas em identidade (políticas do IAM) para o Amazon Redshift.
Suponha a configuração do perfil
Atualize a política de confiança do perfil para permitir que a entidade principal de agendamento a assuma. Em seguida, use o console do Amazon Redshift ou o comando modify-cluster-iam-roles da AWS CLI para vincular o perfil ao seu cluster do Amazon Redshift ou ao grupo de trabalho do Amazon Redshift sem servidor.
Autenticação de banco de dados
Armazene suas credenciais em um segredo do AWS Secrets Manager que seu perfil do IAM possa acessar.
Adicione as tags apropriadas para permitir o uso da API de dados do Amazon Redshift. Configure seu perfil do IAM para obter credenciais temporárias do Amazon Redshift. Seu perfil do IAM de cluster ou grupo de trabalho deve confiar na entidade principal, e o usuário do banco de dados deve ter as permissões necessárias.
Para obter mais informações, consulte Autenticação de uma consulta agendada.
Agende consultas no console do Amazon Redshift
Conclua as etapas a seguir:
- Abra o console do Amazon Redshift.
- No painel de navegação, escolha Editor e, em seguida, escolha Editor de consultas V2.
- Conecte-se a um banco de dados em seu cluster.
- Crie um cronograma de consulta para executar uma instrução SQL.
- (Opcional) Se você estiver usando o Secrets Manager com o Amazon Redshift, selecione seu segredo.
- (Opcional) Se você estiver usando credenciais temporárias de usuário do IAM, escolha seu cluster e forneça o banco de dados e os nomes de usuário.
Observação: para chamar a ação GetClusterCredentials, você deve ter um conjunto mínimo de permissões.
Para visualizar as agendas recém-criadas, conclua as seguintes etapas:
- Abra o console do Amazon Redshift.
- No painel de navegação, escolha Editor e, em seguida, escolha Editor de consultas V2.
- Escolha Consultas agendadas.
É possível ativar as notificações do Amazon Simple Notification Service (Amazon SNS) para monitorar o status de execução da consulta.
Se você ativou o Amazon SNS, certifique-se de que a ação Publish API exista para events.amazonaws.com.
Exemplo de política de acesso que inclui a ação Publicar para events.amazonaws.com:
{ "Sid": "Allow_Publish_Events", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-1:{ACCOUNT_ID}:{SNS_TOPIC_NAME}" }
Para obter mais informações, consulte Monitoramento da consulta agendada.
Agende consultas com o EventBridge
É possível usar o EventBridge e a API de dados do Amazon Redshift para programar instruções SQL.
Conclua as etapas a seguir:
-
Defina uma regra de evento do EventBridge chamada scheduled-refresh-currentEvents.
-
Use o console do EventBridge para programar a execução regular da regra do evento ou em um horário específico. Ou execute o seguinte comando put-rule da AWS CLI:
aws events put-rule \ --name scheduled-refresh-currentEvents \ --schedule-expression "cron(0/5 * * * ? *)"Observação: substitua 5 pelo número de minutos que você deseja entre as atualizações.
-
Use um editor de texto para criar e salvar o seguinte arquivo JSON chamado refreshCurrentEvents.json:
{ "Rule": "scheduled-refresh-currentEvents", "EventBusName": "default", "Targets": [ { "Id": "scheduled-refresh-currentEvents", "Arn": "Clsuter ARN", "RoleArn": "Role ARN", "RedshiftDataParameters": { "SecretManagerArn": "Secrets Manager ARN", "Database": "Database Name", "Sql": "REFRESH MATERIALIZED VIEW currentEvents;", "StatementName": "scheduled-refresh-currentEvents", "WithEvent": true } } ] }Observação: substitua o Cluster ARN e o Role ARNSecrets Manager ARN pelos seus valores de ARN.
-
Execute o seguinte comando put-targets para criar um destino de evento com o arquivo JSON salvo:
aws events put-targets --cli-input-json file://refreshCurrentEvents.json -
Execute o seguinte comando remove-targets para remover os alvos:
aws events remove-targets --rule scheduled-refresh-currentEvents --ids scheduled-refresh-currentEvents -
Execute o seguinte comando delete-rule para deletar a regra:
aws events delete-rule --name scheduled-refresh-currentEvents
Exibir status e resultados do SQL
Conclua as etapas a seguir:
-
Abra o console do Amazon Redshift.
-
No painel de navegação, escolha Editor e, em seguida, escolha Editor de consultas V2.
-
Escolha Consultas agendadas.
-
Selecione sua consulta.
-
No Histórico da programação, anote a ID a ser usada em uma etapa posterior.
-
Para recuperar os resultados da consulta, execute o seguinte comando assume-role:
aws sts assume-role --role-arn "Role ARN" --role-session-name Example Session NameObservação: substitua o ARN do perfil pelo ARN do perfil que você usa para agendar a consulta e o Nome da sessão de exemplo pelo nome da sessão. A saída do comando retorna o ID da chave de acesso, a chave de acesso secreta e o token da sessão.
-
Execute os seguintes comandos de exportação para configurar as variáveis de ambiente:
export AWS_ACCESS_KEY_ID=ExampleRoleAccessKeyID export AWS_SECRET_ACCESS_KEY=ExampleRoleSecretAccessKey export AWS_SESSION_TOKEN=ExampleSessionTokenObservação: substitua todos os valores de exemplo pelos seus valores.
-
Execute o comando redshift-data com get-statement-result para recuperar os resultados:
aws redshift-data get-statement-result --id ID --region RegionObservação: substitua o ID pelo ID do seu extrato e a região pela sua região da AWS.
Informações relacionadas
Por que não consigo me conectar ao AmazonRedshiftQueryEditor no Amazon Redshift?
Uso da API de dados do Amazon Redshift para interagir com clusters do Amazon Redshift
Criação de uma regra que é executada de acordo com um cronograma no Amazon EventBridge
- Tópicos
- Analytics
- Tags
- Amazon Redshift
- Idioma
- Português

Conteúdo relevante
feita há 9 meses
feita há 5 meses