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
Créer une intégration d’événements S3 pour copier automatiquement des fichiers à partir de compartiments Amazon S3
Note
La version préliminaire pour la copie automatique est terminée. Par conséquent, la version préliminaire des clusters sera automatiquement supprimée 30 jours après la fin de la période de prévisualisation. Si vous envisagez de continuer à utiliser la copie automatique, nous vous recommandons de recréer vos tâches de copie automatique existantes sur un autre cluster Amazon Redshift. La mise à niveau d’un cluster préliminaire vers la dernière version d’Amazon Redshift n’est pas prise en charge.
Vous pouvez utiliser un auto-copy job pour charger des données dans vos tables Amazon Redshift à partir de fichiers stockés dans Amazon S3. Amazon Redshift détecte lorsque de nouveaux fichiers Amazon S3 sont ajoutés au chemin spécifié dans votre commande COPY. Une commande COPY est ensuite automatiquement exécutée sans que vous ayez à créer un pipeline d’ingestion de données externe. Amazon Redshift suit les fichiers qui ont été chargés. Amazon Redshift détermine le nombre de fichiers regroupés par commande COPY. Vous pouvez voir les commandes COPY qui en résultent dans les vues système.
La première étape pour créer un COPY JOB automatique consiste à créer une intégration d’événements S3. Lorsqu’un nouveau fichier apparaît dans le compartiment source Amazon S3, Amazon Redshift gère ensuite le chargement des fichiers dans votre base de données à l’aide de la commande COPY.
Conditions préalables à la création d’une intégration d’événements S3
Pour configurer l’intégration de votre événement s3, vérifiez que les prérequis suivants sont remplis.
Votre compartiment Amazon S3 doit avoir une stratégie de compartiment qui accorde plusieurs autorisations Amazon S3. Par exemple, l’exemple de stratégie suivant autorise des autorisations pour le compartiment de ressources
amzn-s3-demo-buckethébergé dansus-east-1. Le compartiment Amazon S3 et l’intégration se trouvent dans la même Région AWS.Votre cluster alloué Amazon Redshift cible ou votre espace de noms Redshift sans serveur cible doit avoir l’autorisation d’accéder au compartiment. Vérifiez qu’un rôle IAM associé à votre cluster ou à votre espace de noms sans serveur dispose d’une politique IAM qui accorde les autorisations appropriées. La politique doit autoriser
s3:GetObjectà la fois pour une ressource de compartiment telle queetamzn-s3-demo-buckets3:ListBucketune ressource de compartiment et son contenu tel que.amzn-s3-demo-bucket/*Ajoutez votre politique à un rôle IAM doté d’une relation de confiance pour le rôle comme suit.
Si votre entrepôt de données cible est un cluster alloué, vous pouvez associer un rôle IAM à votre cluster alloué à l’aide de la console Amazon Redshift, onglet Autorisations de cluster dans les détails de votre cluster. Pour plus d’informations sur la façon d’associer un rôle à votre cluster alloué, consultez la section Associer des rôles IAM à des clusters dans le Guide de gestion Amazon Redshift.
Si votre entrepôt de données cible est Redshift sans serveur, vous pouvez associer un rôle IAM à votre espace de noms sans serveur à l’aide de la console Redshift sans serveur, onglet Sécurité et chiffrement dans les détails de votre espace de noms. Pour plus d’informations sur la façon d’associer un rôle à votre espace de noms sans serveur, consultez Octroi d’autorisations à Amazon Redshift sans serveur dans le Guide de gestion Amazon Redshift.
Votre entrepôt de données Amazon Redshift doit également disposer d’une politique de ressources autorisant le compartiment Amazon S3. Si vous utilisez la console Amazon Redshift, lorsque vous créez l’intégration d’événements s3, Amazon Redshift propose Effectuez les corrections pour moi permettant d’ajouter cette politique à votre entrepôt de données Amazon Redshift. Pour mettre à jour une politique de ressources vous-même, vous pouvez utiliser la commande AWS CLI put-resource-policy. Par exemple, pour associer une politique de ressources à votre cluster alloué Amazon Redshift afin d’intégrer un événement S3 à un compartiment Amazon S3, exécutez une commande AWS CLI similaire à la suivante. L’exemple suivant montre une politique pour un espace de noms de cluster alloué dans le répertoire
us-east-1pour le compte utilisateur123456789012. Le compartiment est nomméamzn-s3-demo-bucket.aws redshift put-resource-policy \ --policy file://rs-rp.json \ --resource-arn "arn:aws:redshift:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433"Où
rs-rp.jsoncontient :Pour associer une politique de ressources à votre espace de noms Redshift sans serveur pour l’intégration d’un événement S3 à un compartiment Amazon S3, exécutez une commande AWS CLI similaire à la suivante. L’exemple suivant montre une politique pour un espace de noms sans serveur dans le répertoire
us-east-1pour le compte utilisateur123456789012. Le compartiment est nomméamzn-s3-demo-bucket.aws redshift put-resource-policy \ --policy file://rs-rp.json \ --resource-arn "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/namespace-1"Où
rs-rp.jsoncontient :
Création d’une intégration d’événements S3
Pour configurer votre copy job, vous devez d’abord définir une intégration d’événements S3.
Amazon Redshift crée ensuite une intégration d’événements S3 avec la source et la cible associées, le statut et les informations relatives au statut d’une tâche de copie automatique associée. Vous pouvez consulter les informations relatives à une intégration d’événements S3 sur la console Amazon Redshift en choisissant Intégrations d’événements S3 et en choisissant l’intégration pour en afficher les détails. Les intégrations sont séparées par celles créées Dans mon compte et celles D’autres comptes. La liste Dans mon compte indique les intégrations où la source et la cible se trouvent dans le même compte. La liste D’autres comptes indique les intégrations dans lesquelles la source appartient à un autre compte.
Si vous supprimez une intégration d’événements S3, le statut COPY JOB correspondant passe de 1 (actif) à 0 (inactif/en attente). Cependant, le COPY JOB correspondant n’est pas automatiquement supprimé. Si vous essayez ultérieurement de créer un COPY JOB portant le même nom, il se peut qu’il y ait un conflit.
Création et suivi d’un COPY JOB
Une fois l’intégration créée, sur la page Détails de l’intégration d’événements S3 correspondant à l’intégration que vous avez créée, choisissez Créer une tâche de copie automatique pour accéder à Amazon Redshift Query Editor V2 où vous pouvez créer la tâche de copie automatique pour l’intégration. Amazon Redshift fait correspondre le compartiment de la clause FROM de l’instruction COPY JOB CREATE au compartiment utilisé pour l’intégration d’événements S3. Pour plus d’informations sur l’utilisation d’Amazon Redshift Query Editor V2, consultez Interrogation d’une base de données à l’aide d’Amazon Redshift Query Editor V2 dans le Guide de gestion Amazon Redshift. Par exemple, exécutez la commande COPY suivante dans l’éditeur de requêtes v2 pour créer un COPY JOB automatique qui associe le compartiment Amazon S3 s3://amzn-s3-demo-bucket/staging-folder à une intégration d’événements Amazon S3.
COPY public.target_table FROM 's3://amzn-s3-demo-bucket/staging-folder' IAM_ROLE 'arn:aws:iam::123456789012:role/MyLoadRoleName' JOB CREATE my_copy_job_name AUTO ON;
Vous définissez une COPY JOB une seule fois. Les mêmes paramètres sont utilisés pour les future exécutions.
Pour définir et gérer un COPY JOB, vous devez disposer d’une autorisation. Pour plus d’informations sur l’octroi et la révocation d’une autorisation sur un COPY JOB, consultez GRANT et REVOKE. Pour plus d’informations sur l’octroi et la révocation d’autorisations étendues pour un COPY JOB, consultez Octroi d’autorisations étendues et Révocation d’autorisations étendues.
Vous gérez les opérations de chargement à l’aide des options CREATE, LIST, SHOW, DROP, ALTER et RUN des tâches. Pour plus d’informations, consultez COPY JOB.
Vous pouvez interroger les vues du système pour voir le statut et la progression de COPY JOB. Les vues sont fournies comme suit :
SYS_COPY_JOB – contient une ligne pour chaque COPY JOB actuellement définie.
SYS_COPY_JOB_DETAIL : contient des informations sur les fichiers en attente, en erreur et ingérés pour chaque COPY JOB.
SYS_COPY_JOB_INFO : contient les messages enregistrés à propos d’un COPY JOB.
SYS_LOAD_HISTORY – contient des informations détaillées sur les commandes COPY.
SYS_LOAD_ERROR_DETAIL – contient des informations détaillées sur les erreurs de commande COPY.
SVV_COPY_JOB_INTEGRATIONS : contient des informations détaillées sur les intégrations d’événements S3.
STL_LOAD_ERRORS – contient des erreurs provenant des commandes COPY.
STL_LOAD_COMMITS – contient des informations permettant de résoudre les problèmes liés au chargement des données d’une commande COPY.
Pour plus d’informations sur la résolution des erreurs d’intégration d’événements S3, consultez Résolution des problèmes liés à l’intégration des événements S3 et aux erreurs COPY JOB.
Pour obtenir la liste des fichiers chargés par une COPY JOB, exécutez la commande SQL suivante, mais remplacez d’abord <job_id> :
SELECT job_id, job_name, data_source, copy_query, filename, status, curtime FROM sys_copy_job copyjob JOIN stl_load_commits loadcommit ON copyjob.job_id = loadcommit.copy_job_id WHERE job_id =<job_id>;
Considérations relatives à la création d’une intégration d’événements S3 pour la copie automatique
Tenez compte des éléments suivants lorsque vous utilisez la copie automatique.
Vous pouvez créer un maximum de 200 COPY JOBS pour chaque cluster ou groupe de travail d’un Compte AWS.
Vous pouvez créer 50 intégrations d’événements S3 pour chaque cible Amazon Redshift.
Vous ne pouvez pas créer d’intégration d’événements S3 avec un compartiment Amazon S3 source dont le nom du compartiment comporte un point (.).
Vous ne pouvez créer qu’une seule intégration d’événements S3 entre la même source et la même cible. En d’autres termes, il ne peut y avoir qu’une seule intégration d’événements S3 entre un compartiment Amazon S3 et un entrepôt de données Amazon Redshift à la fois.
Vous ne pouvez pas avoir de notifications d’événement existantes pour le type d’événement
S3_OBJECT_CREATEDdéfini dans le compartiment Amazon S3 source. Cependant, une fois l’intégration d’un événement S3 créée, vous pouvez mettre à jour la notification d’événement du compartiment Amazon S3 avec un préfixe/suffixe de portée plus étroite. De cette façon, vous pouvez également configurer un autre préfixe/suffixeS3_OBJECT_CREATEDpour d’autres cibles et éviter tout conflit avec l’intégration d’événements S3. Si vous rencontrez des problèmes liés au fait que la copie automatique ne s’exécute pas comme prévu, préparez le journal AWS CloudTrail de l’actions3:PutBucketNotificationConfigurationsur votre compartiment S3 pour la période en question lorsque vous contactez AWS Support.
Régions prises en charge
Voici les régions AWS disponibles pour la copie automatique.
| Région | Copie automatique |
|---|---|
| Afrique (Le Cap) | Disponible |
| Asie-Pacifique (Hong Kong) | Disponible |
| Asie-Pacifique (Taipei) | Disponible |
| Asia Pacific (Tokyo) | Disponible |
| Asie-Pacifique (Séoul) | Disponible |
| Asie-Pacifique (Osaka) | Disponible |
| Asie-Pacifique (Mumbai) | Disponible |
| Asie-Pacifique (Hyderabad) | Disponible |
| Asie-Pacifique (Singapour) | Disponible |
| Asie-Pacifique (Sydney) | Disponible |
| Asie-Pacifique (Jakarta) | Disponible |
| Asie-Pacifique (Melbourne) | Disponible |
| Asie-Pacifique (Malaisie) | Disponible |
| Asie-Pacifique (Nouvelle-Zélande) | Non disponible |
| Asie-Pacifique (Thaïlande) | Disponible |
| Canada (Centre) | Disponible |
| Canada-Ouest (Calgary) | Disponible |
| Chine (Beijing) | Disponible |
| Chine (Ningxia) | Disponible |
| Europe (Francfort) | Disponible |
| Europe (Zurich) | Disponible |
| Europe (Stockholm) | Disponible |
| Europe (Milan) | Disponible |
| Europe (Espagne) | Disponible |
| Europe (Irlande) | Disponible |
| Europe (Londres) | Disponible |
| Europe (Paris) | Disponible |
| Israël (Tel Aviv) | Disponible |
| Moyen-Orient (EAU) | Disponible |
| Moyen-Orient (Bahreïn) | Disponible |
| Mexique (Centre) | Disponible |
| Amérique du Sud (São Paulo) | Disponible |
| USA Est (Virginie du Nord) | Disponible |
| USA Est (Ohio) | Disponible |
| USA Ouest (Californie du Nord) | Disponible |
| USA Ouest (Oregon) | Disponible |
| AWS GovCloud (US, côte est) | Disponible |
| AWS GovCloud (US, côte ouest) | Disponible |