Passer au contenu

Comment planifier des requêtes pour un cluster Amazon Redshift ?

Lecture de 6 minute(s)
0

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 :

  1. Ouvrez la console Amazon Redshift.
  2. Dans le volet de navigation, choisissez Éditeur, puis sélectionnez Éditeur de requêtes V2.
  3. Connectez-vous à une base de données de votre cluster.
  4. Créez une planification de requêtes pour exécuter une instruction SQL.
  5. (Facultatif) Si vous utilisez Secrets Manager avec Amazon Redshift, sélectionnez votre secret.
  6. (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 :

  1. Ouvrez la console Amazon Redshift.
  2. Dans le volet de navigation, choisissez Éditeur, puis sélectionnez Éditeur de requêtes V2.
  3. 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 :

  1. Définissez une règle d'événement EventBridge nommée scheduled-refresh-currentEvents.

  2. 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.

  3. 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.

  4. 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
  5. Exécutez la commande remove-targets suivante pour supprimer les cibles :

    aws events remove-targets --rule scheduled-refresh-currentEvents --ids scheduled-refresh-currentEvents
    
  6. 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 :

  1. Ouvrez la console Amazon Redshift.

  2. Dans le volet de navigation, choisissez Éditeur, puis sélectionnez Éditeur de requêtes V2.

  3. Sélectionnez Requêtes planifiées.

  4. Sélectionnez votre requête.

  5. Dans Historique de planification, notez l'identifiant à utiliser ultérieurement.

  6. 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 Name

    Remarque : 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.

  7. 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=ExampleSessionToken

    Remarque : Remplacez les exemples de valeurs par vos valeurs.

  8. 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 Region

    Remarque : 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

AWS OFFICIELA mis à jour il y a un an