Planification des opérations de l’API de données Amazon Redshift avec Amazon EventBridge - Amazon Redshift

Amazon Redshift ne prendra plus en charge la création de nouvelles fonctions Python définies par l’utilisateur à compter du 1er novembre 2025. Si vous souhaitez utiliser des fonctions Python définies par l’utilisateur, créez-les avant cette date. Les fonctions Python définies par l’utilisateur existantes continueront de fonctionner normalement. Pour plus d’informations, consultez le billet de blog .

Planification des opérations de l’API de données Amazon Redshift avec Amazon EventBridge

Vous pouvez créer des règles qui correspondent à des événements sélectionnés et les acheminent vers des cibles pour qu’elles prennent des mesures. Vous pouvez également utiliser des règles pour effectuer des actions sur une planification prédéterminée. Pour plus d’informations, consultez le Guide de l’utilisateur Amazon EventBridge.

Pour planifier des opérations d’API de données avec EventBridge, le rôle IAM associé doit approuver le principal pour CloudWatch Events (events.amazonaws.com). Ce rôle doit être assorti de l’équivalent de la politique gérée AmazonEventBridgeFullAccess. Il doit également disposer des autorisations de la politique AmazonRedshiftDataFullAccess qui sont gérées par l’API de données. Vous pouvez créer un rôle IAM avec ces autorisations sur la console IAM. Lorsque vous créez un rôle sur la console IAM, choisissez l’entité de confiance du service AWS pour les CloudWatch Events. Spécifiez le rôle IAM dans la valeur JSON RoleArn de la cible EventBridge. Pour plus d’informations sur la création d’un rôle IAM, consultez Création d’un rôle pour un service AWS (Console) dans le Guide de l’utilisateur IAM.

Le name de la règle que vous créez dans Amazon EventBridge doit correspondre au StatementName dans les RedshiftDataParameters.

Les exemples suivants présentent des variantes de création de règles EventBridge avec une seule ou plusieurs instructions SQL et avec un cluster Amazon Redshift ou un groupe de travail Amazon Redshift sans serveur comme entrepôt des données.

L’exemple suivant utilise l’interface AWS CLI pour créer une règle EventBridge utilisée pour exécuter une instruction SQL sur un cluster Amazon Redshift.

aws events put-rule --name test-redshift-cluster-data --schedule-expression "rate(1 minute)"

Ensuite, une cible EventBridge est créée pour s’exécuter selon la planification spécifiée dans la règle.

aws events put-targets --cli-input-json file://data.json

Le fichier d’entrée data.json se présente comme suit. La clé JSON Sql indique qu’il y a une seule instruction SQL. La valeur JSON Arn contient un identifiant de cluster. La valeur JSON RoleArn contient le rôle IAM utilisé pour exécuter le SQL comme décrit précédemment.

{ "Rule": "test-redshift-cluster-data", "EventBusName": "default", "Targets": [ { "Id": "2", "Arn": "arn:aws:redshift:us-east-1:123456789012:cluster:mycluster", "RoleArn": "arn:aws:iam::123456789012:role/Administrator", "RedshiftDataParameters": { "Database": "dev", "DbUser": "root", "Sql": "select 1;", "StatementName": "test-redshift-cluster-data", "WithEvent": true } } ] }

L’exemple suivant utilise la AWS CLI pour créer une règle EventBridge utilisée pour exécuter une instruction SQL sur un groupe de travail Amazon Redshift sans serveur.

aws events put-rule --name test-redshift-serverless-workgroup-data --schedule-expression "rate(1 minute)"

Ensuite, une cible EventBridge est créée pour s’exécuter selon la planification spécifiée dans la règle.

aws events put-targets --cli-input-json file://data.json

Le fichier d’entrée data.json se présente comme suit. La clé JSON Sql indique qu’il y a une seule instruction SQL. La valeur JSON Arn contient un nom de groupe de travail. La valeur JSON RoleArn contient le rôle IAM utilisé pour exécuter le SQL comme décrit précédemment.

{ "Rule": "test-redshift-serverless-workgroup-data", "EventBusName": "default", "Targets": [ { "Id": "2", "Arn": "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "RoleArn": "arn:aws:iam::123456789012:role/Administrator", "RedshiftDataParameters": { "Database": "dev", "Sql": "select 1;", "StatementName": "test-redshift-serverless-workgroup-data", "WithEvent": true } } ] }

L’exemple suivant utilise la AWS CLI pour créer une règle EventBridge utilisée pour exécuter plusieurs instructions SQL sur un cluster Amazon Redshift.

aws events put-rule --name test-redshift-cluster-data --schedule-expression "rate(1 minute)"

Ensuite, une cible EventBridge est créée pour s’exécuter selon la planification spécifiée dans la règle.

aws events put-targets --cli-input-json file://data.json

Le fichier d’entrée data.json se présente comme suit. La clé JSON Sqls indique qu’il existe plusieurs instructions SQL. La valeur JSON Arn contient un identifiant de cluster. La valeur JSON RoleArn contient le rôle IAM utilisé pour exécuter le SQL comme décrit précédemment.

{ "Rule": "test-redshift-cluster-data", "EventBusName": "default", "Targets": [ { "Id": "2", "Arn": "arn:aws:redshift:us-east-1:123456789012:cluster:mycluster", "RoleArn": "arn:aws:iam::123456789012:role/Administrator", "RedshiftDataParameters": { "Database": "dev", "Sqls": ["select 1;", "select 2;", "select 3;"], "StatementName": "test-redshift-cluster-data", "WithEvent": true } } ] }

L’exemple suivant utilise la AWS CLI pour créer une règle EventBridge utilisée pour exécuter plusieurs instructions SQL sur un groupe de travail Amazon Redshift sans serveur.

aws events put-rule --name test-redshift-serverless-workgroup-data --schedule-expression "rate(1 minute)"

Ensuite, une cible EventBridge est créée pour s’exécuter selon la planification spécifiée dans la règle.

aws events put-targets --cli-input-json file://data.json

Le fichier d’entrée data.json se présente comme suit. La clé JSON Sqls indique qu’il existe plusieurs instructions SQL. La valeur JSON Arn contient un nom de groupe de travail. La valeur JSON RoleArn contient le rôle IAM utilisé pour exécuter le SQL comme décrit précédemment.

{ "Rule": "test-redshift-serverless-workgroup-data", "EventBusName": "default", "Targets": [ { "Id": "2", "Arn": "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "RoleArn": "arn:aws:iam::123456789012:role/Administrator", "RedshiftDataParameters": { "Database": "dev", "Sqls": ["select 1;", "select 2;", "select 3;"], "StatementName": "test-redshift-serverless-workgroup-data", "WithEvent": true } } ] }