Planification d’une requête - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Planification d’une requête

Important

L’éditeur de requêtes Amazon Redshift v2 prend désormais en charge la planification d’une requête. Nous vous recommandons d’utiliser l’éditeur de requêtes v2. Pour plus d’informations, consultez Planification d'une requête avec l'éditeur de requête v2.

Pour créer une planification d’exécution d’une instruction SQL, vous pouvez utiliser l’éditeur de requêtes sur la console Amazon Redshift. Vous pouvez créer une planification pour exécuter votre instruction SQL aux intervalles de temps qui correspondent aux besoins de votre activité. Au moment de l'exécution de la requête planifiée, Amazon EventBridge lance la requête.

Pour créer une planification afin d’exécuter une instruction SQL
  1. Ouvrez la console et l’éditeur de requêtes comme décrit dans Utilisation de l’éditeur de requête. Vous ne pouvez utiliser cet éditeur de requêtes qu’avec des clusters provisionnés.

  2. Choisissez Schedule (Planification) afin de créer une planification pour exécuter une instruction SQL.

    Lorsque vous définissez la planification, vous fournissez les informations suivantes :

    • Un rôle IAM qui est utilisé pour assumer les autorisations requises pour l’exécution de la requête. Pour plus d’informations, consultez Configuration des autorisations pour planifier une requête.

    • Les valeurs d'authentification pour l'une AWS Secrets Manager ou l'autre des informations d'identification temporaires permettant d'autoriser l'accès à votre cluster. Pour plus d’informations, consultez Authentification d’une requête planifiée.

    • Le nom de la requête planifiée et une instruction SQL unique à exécuter.

    • Les options de fréquence et de répétition de la planification ou une valeur au format cron.

    • Si nécessaire, vous pouvez activer les notifications Amazon SNS pour surveiller la requête planifiée. Si votre requête est en cours d'exécution mais que vous ne voyez aucun message publié dans votre rubrique SNS, consultez Ma règle est déclenchée mais je ne vois aucun message publié dans ma rubrique Amazon SNS dans le guide de l'utilisateur EventBridge Amazon.

Vous pouvez également gérer et mettre à jour les requêtes planifiées à l’aide de la console Amazon Redshift. Selon votre version de la console, les requêtes planifiées peuvent être répertoriées aux endroits suivants :

  • Dans l’onglet Planification (Schedules) de la page de détails de votre cluster.

  • Dans l’onglet Scheduled queries (Requêtes planifiées) de l’éditeur de requête.

Si vous choisissez Schedule name (Nom de la planification) dans l’un de ces emplacements, vous pouvez afficher et modifier la définition de votre requête planifiée.

Configuration des autorisations pour planifier une requête sur la console Amazon Redshift

Pour planifier des requêtes, l'utilisateur AWS Identity and Access Management (IAM) qui définit le calendrier et le rôle IAM associé au calendrier doivent être configurés comme suit.

Pour l’utilisateur IAM connecté à la console Amazon Redshift, procédez comme suit :

  • Associez la politique AmazonEventBridgeFullAccess AWS gérée à un rôle IAM.

  • Attachez une politique avec l’autorisation sts:AssumeRole du rôle IAM que vous spécifiez lorsque vous définissez l’instruction SQL planifiée.

    L’exemple suivant illustre une politique qui assume un rôle IAM spécifié.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AssumeIAMRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::account-id:role/sql-statement-iam-role" } ] }

Pour le rôle IAM que vous spécifiez en vue de permettre au planificateur d’exécuter une requête, procédez comme suit :

  • Assurez-vous que ce rôle IAM spécifie le principal EventBridge de service (events.amazonaws.com). Voici un exemple de relation d’approbation.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    Pour plus d'informations sur la création d'un rôle IAM pour les EventBridge événements, consultezAutorisations requises pour utiliser le EventBridge planificateur Amazon.

  • Associez la politique AmazonRedshiftDataFullAccess AWS gérée au rôle IAM.

  • Pour permettre aux utilisateurs d’afficher l’historique des planifications, modifiez le rôle IAM pour ajouter l’autorisation sts:AssumeRole.

L’exemple de politique d’approbation suivant est défini pour un rôle IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Authentification d’une requête planifiée

Lorsque vous planifiez une requête, vous utilisez l’une des méthodes d’authentification suivantes lors de l’exécution de la requête SQL. Chaque méthode nécessite une combinaison différente d’entrées à partir de la console Amazon Redshift.

AWS Secrets Manager

Avec cette méthode, fournissez une valeur secrète pour le paramètre secret-arn qui est stocké dans AWS Secrets Manager. Ce secret contient des informations d’identification pour vous connecter à votre base de données. Le secret doit être étiqueté avec la clé RedshiftDataFullAccess.

Pour plus d’informations sur les autorisations minimales, consultez Création et gestion des secrets avec AWS Secrets Manager dans le Guide de l’utilisateur AWS Secrets Manager .

Informations d’identification temporaires

Avec cette méthode, fournissez les valeurs de votre base de données et de votre utilisateur de base de données.

La politique AmazonRedshiftDataFullAccess accorde à l’utilisateur de la base de données nommé redshift_data_api_user les autorisations pour redshift:GetClusterCredentials. Si vous souhaitez utiliser un autre utilisateur de base de données pour exécuter l’instruction SQL, ajoutez une politique au rôle IAM pour accorder l’autorisation redshift:GetClusterCredentials. L’exemple de stratégie suivant autorise les utilisateurs de base de données awsuser et myuser.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UseTemporaryCredentialsForAllDbUsers", "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": [ "arn:aws:redshift:*:*:dbuser:*/awsuser", "arn:aws:redshift:*:*:dbuser:*/myuser" ] } ] }

Créez une EventBridge règle Amazon qui s'exécute à la fin d'une requête

Vous pouvez créer une règle d’événement pour envoyer une notification lorsqu’une requête se termine. Pour la procédure à suivre à l'aide de la EventBridge console Amazon, consultez la section Création de EventBridge règles Amazon qui réagissent aux événements dans le guide de EventBridge l'utilisateur Amazon. Pour plus d'informations sur les modèles d'événements, consultez la section Modèles EventBridge d'événements Amazon dans le guide de EventBridge l'utilisateur Amazon.

Par exemple, l’exemple d’événement suivant est envoyé lorsqu’une requête est FINISHED.

{ "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "Redshift Data Statement Status Change", "source": "aws.redshift-data", "account": "123456789012", "time": "2020-12-22T17:00:00Z", "region": "us-west-1", "resources": [ "arn:aws:redshift:us-east-2:123456789:cluster:t1" ], "detail": { "statementId": "01bdaca2-8967-4e34-ae3f-41d9728d5644", "clusterId": "test-dataapi", "statementName": "awesome query", "state": "FINISHED", "pages": 5, "expireAt": "2020-12-22T18:43:48Z", "principal": "arn:aws:sts::123456789012:assumed-role/any", "queryId": 123456 } }

Vous pouvez créer une règle de modèle d’événement pour filtrer l’événement.

{ "source": [ "aws.redshift-data" ], "detail-type": [ "Redshift Data Statement Status Change" ], "detail": { "state": [ "FINISHED" ] } }