Comment planifier des requêtes pour un cluster Amazon Redshift ?
Je souhaite planifier l'exécution d'une requête dans un cluster Amazon Redshift.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Utilisez l'éditeur de requêtes v2 pour exécuter, afficher, enregistrer et planifier des requêtes SQL pour vos clusters Amazon Redshift provisionnés.
Configurer les autorisations de l'éditeur de requêtes
Avant de créer une requête planifiée, vous devez configurer les rôles et autorisations Gestion des identités et des accès AWS (AWS IAM) appropriés. Les requêtes planifiées exigent qu'Amazon EventBridge lance la requête dans les délais prévus et que l'API Amazon Redshift Data exécute la requête sur le cluster.
L'utilisateur IAM qui crée la planification et le rôle IAM qui exécute la requête doivent disposer des autorisations appropriées.
Accès utilisateur IAM
Vous pouvez associer des politiques, telles que AmazonRedshiftDataFullAccess et AmazonEventBridgeFullAccess.
Vous pouvez également créer une politique personnalisée avec des autorisations plus spécifiques. Pour plus d'informations, consultez la section Configuration des autorisations pour planifier une requête.
Rôle d'exécution pour les requêtes
Pour exécuter des requêtes planifiées, identifiez ou créez un rôle IAM pour votre cluster Amazon Redshift ou votre groupe de travail Amazon Redshift sans serveur.
Puis. associez les politiques, telles que as AmazonRedshiftDataFullAccess et AmazonEventBridgeFullAccess, afin qu'Amazon Redshift puisse assumer le rôle et exécuter les actions planifiées.
Pour plus d'informations, consultez la section Utilisation de politiques basées sur l'identité (politiques IAM) pour Amazon Redshift.
Configuration de la responsabilité du rôle
Mettez à jour la politique d’approbation du rôle pour permettre au principal de planification de l'assumer. Puis, utilisez la console Amazon Redshift ou la commande modify-cluster-iam-roles de l'AWS CLI pour lier le rôle à votre cluster Amazon Redshift ou à votre groupe de travail Amazon Redshift sans serveur.
Authentification de base de données
Stockez vos informations d'identification dans un secret AWS Secrets Manager auquel votre rôle IAM peut accéder.
Ajoutez les identifications appropriées pour autoriser l'utilisation de l'API de données Amazon Redshift. Configurez votre rôle IAM pour obtenir des informations d'identification Amazon Redshift temporaires. Le rôle IAM de votre cluster ou groupe de travail doit approuver le principal et l'utilisateur de votre base de données doit disposer des autorisations nécessaires.
Pour plus d'informations, consultez la section Authentification d'une requête planifiée.
Planifier des requêtes sur la console Amazon Redshift
Procédez comme suit :
- Ouvrez la console Amazon Redshift.
- Dans le volet de navigation, choisissez Éditeur, puis sélectionnez Éditeur de requêtes V2.
- Connectez-vous à une base de données de votre cluster.
- Créez une planification de requêtes pour exécuter une instruction SQL.
- (Facultatif) Si vous utilisez Secrets Manager avec Amazon Redshift, sélectionnez votre secret.
- (Facultatif) Si vous utilisez des informations d'identification utilisateur IAM temporaires, choisissez votre cluster et indiquez la base de données et les noms d'utilisateur.
Remarque : Pour appeler l'action GetClusterCredentials, vous devez disposer d'un ensemble minimum d'autorisations.
Pour consulter les planifications nouvellement créées, procédez comme suit :
- Ouvrez la console Amazon Redshift.
- Dans le volet de navigation, choisissez Éditeur, puis sélectionnez Éditeur de requêtes V2.
- Sélectionnez Requêtes planifiées.
Vous pouvez activer les notifications Amazon Simple Notification Service (Amazon SNS) pour surveiller l'état d'exécution de la requête.
Si vous avez activé Amazon SNS, assurez-vous que l'action d’API Publier API existe pour events.amazonaws.com.
Exemple de stratégie d'accès incluant l'action Publier pour 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}" }
Pour plus d'informations, consultez la section Surveillance de la requête planifiée.
Planifier des requêtes avec EventBridge
Vous pouvez utiliser EventBridge et l'API de données Amazon Redshift pour planifier des instructions SQL.
Procédez comme suit :
-
Définissez une règle d'événement EventBridge nommée scheduled-refresh-currentEvents.
-
Utilisez la console EventBridge pour planifier l'exécution de la règle d’événement de manière régulière ou à une heure précise. Vous pouvez également exécuter la commande put-rule de l'AWS CLI suivante :
aws events put-rule \ --name scheduled-refresh-currentEvents \ --schedule-expression "cron(0/5 * * * ? *)"Remarque : Remplacez 5 par le nombre de minutes souhaité entre les actualisations.
-
Utilisez un éditeur de texte pour créer et enregistrer le fichier JSON suivant, nommé 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 } } ] }Remarque : Remplacez Cluster ARN, Role ARNSecrets Manager ARN par vos valeurs d'ARN.
-
Exécutez la commande put-targets suivante pour créer une cible d'événement avec le fichier JSON enregistré :
aws events put-targets --cli-input-json file://refreshCurrentEvents.json -
Exécutez la commande remove-targets suivante pour supprimer les cibles :
aws events remove-targets --rule scheduled-refresh-currentEvents --ids scheduled-refresh-currentEvents -
Exécutez la commande delete-rule suivante pour supprimer la règle :
aws events delete-rule --name scheduled-refresh-currentEvents
Consulter l'état et les résultats SQL
Procédez comme suit :
-
Ouvrez la console Amazon Redshift.
-
Dans le volet de navigation, choisissez Éditeur, puis sélectionnez Éditeur de requêtes V2.
-
Sélectionnez Requêtes planifiées.
-
Sélectionnez votre requête.
-
Dans Historique de planification, notez l'identifiant à utiliser ultérieurement.
-
Pour récupérer les résultats de la requête, exécutez la commande assume-role suivante :
aws sts assume-role --role-arn "Role ARN" --role-session-name Example Session NameRemarque : Remplacez Role ARN par l'ARN du rôle que vous utilisez pour planifier la requête et Example Session Name par le nom de votre session. La sortie de la commande renvoie l'ID de clé d'accès, la clé d'accès secrète et le jeton de session.
-
Exécutez les commandes d'exportation suivantes pour configurer les variables d'environnement :
export AWS_ACCESS_KEY_ID=ExampleRoleAccessKeyID export AWS_SECRET_ACCESS_KEY=ExampleRoleSecretAccessKey export AWS_SESSION_TOKEN=ExampleSessionTokenRemarque : Remplacez les exemples de valeurs par vos valeurs.
-
Exécutez la commande redshift-data avec get-statement-result pour récupérer les résultats :
aws redshift-data get-statement-result --id ID --region RegionRemarque : Remplacez ID par l'ID de votre instruction et Region par votre région AWS.
Informations connexes
Pourquoi ne puis-je pas me connecter à AmazonRedShiftQueryEditor dans Amazon Redshift ?
Utilisation de l'API de données Amazon Redshift pour interagir avec les clusters Amazon Redshift
Création d’une règle qui s’exécute selon un calendrier dans Amazon EventBridge
- Sujets
- Analytics
- Balises
- Amazon Redshift
- Langue
- Français

Contenus pertinents
demandé il y a 3 ans
demandé il y a 3 ans
demandé il y a 3 ans
AWS OFFICIELA mis à jour il y a 3 ans
AWS OFFICIELA mis à jour il y a un an