Amazon Redshift ne prendra plus en charge l'utilisation des UDF Python après le 30 juin 2026. Nous allons commencer à l'appliquer par étapes. Pour plus d'informations sur les détails de la fin de vie de Python et des options de migration, consultez le billet de
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.
Intégration des tables système avec les tables S3
Utilisez l'intégration des tables système à Amazon S3 Tables
Lorsque vous activez cette fonctionnalité via la console, l'interface de ligne de commande Redshift ou le SDK, Redshift commence à écrire de nouvelles lignes à partir des tables système que vous sélectionnez dans les tables S3 peu de temps après, à une fréquence fixe. Vous choisissez les tables système à publier ; S3 Tables applique la durée de conservation que vous configurez.
Cela prend en charge les cas d'utilisation suivants :
-
Répondez aux exigences de conformité et d'audit. Conservez l'historique des requêtes, des connexions et des modifications pendant des mois, voire des années.
-
Surveillez votre flotte depuis un seul endroit. Consolidez les données de surveillance provenant de plusieurs entrepôts de données de votre compte et de votre région et analysez l'activité de votre flotte.
-
Supprimez le besoin de pipelines d'extraction, de transformation et de chargement (ETL) personnalisés. Arrêtez de créer et de gérer des tâches qui exportent les données des tables système vers S3 pour une conservation plus longue.
-
Enquêtez sur les incidents passés. Interrogez les données historiques au-delà de la fenêtre intégrée au cluster de 7 jours pour analyser les causes premières, effectuer un examen post-incident et suivre l'évolution de la charge de travail et les tendances des performances au fil du temps.
Cette fonctionnalité est disponible pour les instances RA3
Comment ça marche
Après avoir activé la fonctionnalité et sélectionné une ou plusieurs tables système prises en charge, Redshift écrit les enregistrements récemment complétés à partir de ces tables système dans les tables S3. Les données sont fournies par lots à une fréquence fixe.
Les tables système se trouvent dans votre AWS compte mais sont gérées par un service : AWS possède et gère la distribution des données et la gestion des tables, y compris les suivantes :
-
Création du compartiment de tables S3, de l'espace de noms et des tables S3 dans votre compte.
-
Définition et évolution des schémas de tables.
-
Écrire des données au Apache Iceberg format dans des tables S3.
-
Compactage des données et gestion des instantanés (gérés automatiquement par S3 Tables).
Il n'y a aucune infrastructure à créer ou à entretenir et aucun impact sur vos charges de travail.
Vous configurez la durée de conservation des données jusqu'à l'expiration des enregistrements S3 Tables. Pour de plus amples informations, veuillez consulter Configuration de la rétention.
Comme les tables sont gérées par AWS, vous ne pouvez ni modifier ni supprimer les lignes fournies par Redshift. Les données fournies sont immuables. Vous contrôlez uniquement l'accès en lecture aux tables. Pour de plus amples informations, veuillez consulter Gouvernance des données.
Seule l'activité terminée est transmise à S3 Tables. Les tables système de votre entrepôt de données peuvent indiquer l'activité en vol, mais seuls les enregistrements ayant atteint leur état final sont copiés. Par exemple, une requête terminée, abandonnée ou annulée est envoyée, mais une requête toujours en cours d'exécution n'est pas remise tant qu'elle n'a pas atteint son état final.
Activation de l'intégration des tables système avec les tables S3
Pour activer l'intégration des tables système avec les tables S3, utilisez les API Redshift existantes avec un nouveau type de destination de s3table journal, à savoir. Lorsque cette option est activée, Redshift crée un compartiment de tables S3 nommé aws-redshift dans votre compte. Vous gérez la fonctionnalité avec les mêmes opérations que vous utilisez pour les autres destinations de journaux : pour les clusters provisionnés, enable-loggingdisable-logging, et describe-logging-status ; pour Redshift Serverless, et. update-namespace get-namespace
Permissions
Le principal qui active, modifie ou désactive la fonctionnalité doit disposer des autorisations suivantes :
-
redshift:EnableLogging(pour les clusters provisionnés) ouredshift-serverless:UpdateNamespace(pour Redshift Serverless). -
Autorisation de créer et de configurer le compartiment de tables S3. Le principal d'activation a besoin des autorisations S3 Tables suivantes :
-
s3tables:CreateTableBucket -
s3tables:PutTableBucketEncryption -
s3tables:PutTableBucketPolicy
Lorsque vous activez la fonctionnalité, Redshift crée et configure le bucket de tables S3 en utilisant l'identité du principal qui déclenche l'opération.
-
Une fois le compartiment créé, Redshift crée des espaces de noms et des tables dans celui-ci en utilisant une relation de confiance de service entre Redshift et S3 Tables. Le principal d'activation n'a pas besoin d'autorisations pour créer des espaces de noms ou des tables.
Options de déploiement
Vous pouvez configurer la diffusion selon l'un des deux modèles suivants. Un entrepôt de données donné utilise un modèle à la fois.
| Option de déploiement | Description |
|---|---|
| Per-warehouse | Redshift écrit les données des tables système de chaque entrepôt de données dans son propre ensemble de tables S3. Chaque ligne d'un tableau provient d'un seul entrepôt de données. Utilisez-le pour l'isolation physique entre les entrepôts. |
| Consolidé | Redshift écrit les données des tables système provenant de plusieurs entrepôts de données au sein du même compte et de la même région dans un ensemble partagé de tables S3. Les lignes provenant de différents entrepôts sont distinguées par les warehouse_name colonnes warehouse_namespace_arn et. Utilisez-le pour une analyse centralisée entre entrepôts. |
Le modèle de déploiement détermine la manière dont les données sont organisées dans les tables S3. Dans le modèle par entrepôt, le nom de l'espace de noms S3 Tables contient un identifiant unique pour l'entrepôt de données, de sorte que les données de chaque entrepôt sont physiquement séparées dans son propre espace de noms. Dans le modèle consolidé, le nom de l'espace de noms S3 Tables contient le numéro de AWS compte, et les données de tous les entrepôts de ce compte et de cette région sont stockées ensemble dans le même espace de noms et les mêmes tables.
Les deux options sont prises en charge au sein d'un seul AWS compte et d'une seule AWS région. Pour analyser les données entre les régions ou les comptes, combinez les résultats des tables de chaque région ou compte au moment de la requête. Pour accéder à plusieurs comptes, vous pouvez utiliser le partage du catalogue de AWS Glue données. Pour plus d'informations, consultez la section Octroi d'un accès multicompte dans le Guide du AWS Glue développeur.
Note
Si vous faites passer un entrepôt de données d'un modèle de déploiement à un autre, les données fournies précédemment restent dans leur table existante et sont conservées conformément à leur rétention configurée. Redshift commence à fournir de nouvelles données à la nouvelle cible et ne remplace pas les données historiques.
Utilisation de la console
Pour configurer l'intégration des tables système avec S3 Tables
-
Ouvrez la console Redshift et dans le volet de navigation, sous Amazon Redshift ou Amazon Redshift Serverless, choisissez System table integrations. Vous pouvez également effectuer la configuration à partir de la page détaillée du cluster ou de l'espace de noms en choisissant l'onglet Intégrations ou en choisissant Actions, Intégrations , Configurer l'intégration de la table système.
-
Choisissez Créer une intégration de tables système.
-
Sélectionnez votre cluster provisionné ou votre groupe de travail Redshift Serverless.
-
Choisissez les tables système à publier. Sélectionnez des
SYS_*vues individuelles ou choisissez Sélectionner toutes les tables système prises en charge pour publier toutes les vues prises en charge actuelles et futures. Si vous sélectionnez tout, les nouvelles vues ajoutées ultérieurement sont automatiquement incluses sans qu'il soit nécessaire de modifier la configuration. -
Sélectionnez le modèle de déploiement :
-
Table S3 individuelle par table système et par entrepôt de données pour conserver les données de cet entrepôt dans son propre ensemble de tables.
-
Table S3 partagée par table système entre les entrepôts de données pour consolider les données provenant de plusieurs entrepôts du compte dans un ensemble partagé de tables.
-
-
Vous pouvez éventuellement choisir une clé de chiffrement. Par défaut, les données sont cryptées avec des S3-managed clés Amazon (SSE-S3). Pour utiliser votre propre AWS KMS clé, sélectionnez-la ici. Si vous utilisez votre propre AWS KMS clé, la politique de clé doit autoriser Redshift et S3 Tables à accéder à la clé. Pour de plus amples informations, veuillez consulter Configuration du chiffrement.
-
Enregistrez vos modifications. Redshift commence à publier les tables système sélectionnées dans S3 Tables et continue d'ajouter de nouveaux enregistrements de manière récurrente.
Pour arrêter de publier une table système, revenez aux paramètres et supprimez-la. Les données déjà publiées sont conservées jusqu'à ce que vous configuriez l'expiration via S3 Tables.
Vous pouvez consulter l'état de l'intégration sur la page détaillée du cluster ou de l'espace de nommage. Développez Afficher le mappage des tables S3 pour voir le mappage entre chaque table système et le nom et l'espace de noms de la table S3 correspondants. Vous pouvez également consulter les données publiées depuis la console S3 Tables.
Utilisation de AWS CLI
Les paramètres suivants configurent la publication de tables S3 :
| Paramètre | S’applique à | Description |
|---|---|---|
--log-destination-type |
les deux | Réglez sur s3table pour publier sur S3 Tables. Les autres valeurs sont s3 etcloudwatch. |
--log-exports |
Alloué | Les tables système à publier, sous forme de liste de noms de SYS_* vues, ouall. |
--s3-table-names |
sans serveur | Les tables système à publier, sous forme de liste de noms de SYS_* vues, ouall. |
--s3-table-action |
sans serveur | Enableou la publication de tables Disable S3. |
--s3-table-granularity |
les deux | Portée de la table. Provisionné : cluster (par défaut) ouaccount. Serverless : namespace (par défaut) ouaccount. |
--s3-table-kms-key-id |
les deux | AWS KMS Clé ARN ou ID en option pour le chiffrement. La valeur par défaut est Amazon S3-managed keys (SSE-S3). |
Clusters alloués
Activez la livraison. --log-exportsaccepte all ou une liste séparée par des espaces des tables système prises en charge, et --s3-table-granularity accepte cluster (par entrepôt) ou account (consolidé).
aws redshift enable-logging \ --cluster-identifier my-redshift-cluster \ --log-destination-type s3table \ --log-exports all \ --s3-table-granularity account
Pour activer la diffusion de tables système spécifiques uniquement, procédez comme suit :
aws redshift enable-logging \ --cluster-identifier my-redshift-cluster \ --log-destination-type s3table \ --log-exports sys_query_history sys_query_text sys_userlog \ --s3-table-granularity cluster
Vérifiez l'état de la livraison.
aws redshift describe-logging-status \ --cluster-identifier my-redshift-cluster
Désactivez la diffusion pour toutes les tables du système ou pour des tables spécifiques avec --log-exports :
aws redshift disable-logging \ --cluster-identifier my-redshift-cluster \ --log-destination-type s3table \ --log-exports sys_stream_scan_states
Redshift sans serveur
Dans Redshift Serverless, vous configurez la fonctionnalité par espace de noms avec. update-namespace Les noms des tables système sont transmis --s3-table-names (non--log-exports).
Activez la livraison.
aws redshift-serverless update-namespace \ --namespace-name my-namespace \ --log-destination-type s3table \ --s3-table-action Enable \ --s3-table-names all \ --s3-table-granularity namespace
Désactivez la diffusion pour des tables système spécifiques (ouall) :
aws redshift-serverless update-namespace \ --namespace-name my-namespace \ --log-destination-type s3table \ --s3-table-action Disable \ --s3-table-names sys_stream_scan_states
Vérifiez l'état de la livraison.
aws redshift-serverless get-namespace \ --namespace-name my-namespace
Pour reprendre la livraison après la suppression du compartiment de tables S3 ou d'une table, exécutez à nouveau la commande enable.
S'inscrire auprès de AWS Glue Data Catalog
Avant de pouvoir interroger les données conservées avec Redshift, Athena ou d'autres services d'analyse, le compartiment de tables S3 géré par le service doit être intégré à. AWS Glue Data Catalog Il s'agit d'une étape unique par compte et par région. Si vous avez déjà intégré S3 Tables à AWS Glue Data Catalog, aucune action supplémentaire n'est requise.
Pour obtenir des instructions d'intégration, consultez la section Intégrer les tables Amazon S3 AWS Glue Data Catalog dans le Guide du AWS Glue développeur.
Configuration du chiffrement
Par défaut, les données transmises à S3 Tables sont chiffrées avec des S3-managed clés Amazon (SSE-S3). Pour utiliser une clé gérée par le AWS KMS client à la place, spécifiez son ARN avec --s3-table-kms-key-id lorsque vous activez la livraison :
aws redshift enable-logging \ --cluster-identifier my-redshift-cluster \ --log-destination-type s3table \ --log-exports all \ --s3-table-granularity account \ --s3-table-kms-key-id arn:aws:kms:us-west-2:111122223333:key/key-id
Si vous utilisez une clé gérée par le client, sa politique de clé doit permettre au principal du service d'intégration des tables système Redshift de générer des clés de données lorsqu'il écrit vos tables système, et au principal du service de maintenance des tables S3 d'utiliser la clé lors de la maintenance des tables (comme le compactage). Ajoutez les déclarations suivantes à la politique clé, en les remplaçant par REGIONACCOUNT, et KEY_ID par vos propres valeurs.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableRedshiftSystemTableKeyUsage", "Effect": "Allow", "Principal": { "Service": "systemtables.redshift.amazonaws.com" }, "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:REGION:ACCOUNT:key/KEY_ID", "Condition": { "StringEquals": { "aws:SourceAccount": "ACCOUNT" } } }, { "Sid": "EnableS3TableMaintenanceKeyUsage", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:REGION:ACCOUNT:key/KEY_ID", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3tables:REGION:ACCOUNT:bucket/aws-redshift/*" } } } ] }
Si la politique clé n'accorde pas ces autorisations, Redshift ne peut pas écrire dans les tables S3 chiffrées et la livraison échoue.
Tables système prises en charge
Vous pouvez sélectionner l'une des vues de SYS_* surveillance suivantes à intégrer à S3 Tables. Pour obtenir une description des colonnes de chaque vue, choisissez le nom de la vue.
-
SYS_DATASHARE_WRITE_HISTORY
Note
Les vues suivantes nécessitent le correctif P203 ou une version ultérieure : SYS_CHILD_QUERY_TEXT, SYS_COPY_REPLACEMENTS, SYS_EXTERNAL_QUERY_ERROR, SYS_PROCEDURE_MESSAGES, SYS_QUERY_DETAIL, SYS_QUERY_EXPLAIN, SYS_SPATIAL_SIMPLIFY et SYS_UNLOAD_DETAIL. Si vous activez ces vues sur un entrepôt de données exécutant un correctif antérieur à P203, les tables sont créées avec le schéma correct mais ne contiennent aucune donnée tant que l'entrepôt de données n'est pas mis à jour vers la version P203 ou ultérieure.
Colonnes de métadonnées ajoutées à chaque tableau
Chaque table S3 contient toutes les colonnes de la SYS_* vue source, ainsi que les cinq colonnes de métadonnées suivantes que Redshift ajoute pour identifier la source de chaque ligne et la date de livraison.
| Colonne | Type | Description |
|---|---|---|
warehouse_account_id |
chaîne | Le AWS compte propriétaire de l'entrepôt de données source. |
warehouse_region_name |
chaîne | AWS Région dans laquelle fonctionne l'entrepôt de données source. |
warehouse_namespace_arn |
chaîne | L'ARN de l'espace de noms de l'entrepôt de données source. Il s'agit d'un identifiant unique et stable qui est immuable lors des renommages et des loisirs. |
warehouse_name |
chaîne | Le nom lisible par l'homme de l'entrepôt de données source (nom du cluster ou nom du groupe de travail). |
s3_tables_ingestion_time |
horodatage (6), UTC | Heure à laquelle Redshift a validé la ligne dans S3 Tables. Il s'agit du délai de livraison, et non de l'heure à laquelle l'événement sous-jacent s'est produit. |
Configuration de la rétention
Redshift ne définit pas de politique de rétention pour les données qu'il fournit aux tables S3. Vous configurez la durée de conservation des données en définissant une politique d'expiration des enregistrements via S3 Tables. Vous spécifiez le nombre de jours (par exemple, 5 jours, 100 jours ou 365 jours) et S3 Tables supprime automatiquement les données qui dépassent la durée configurée.
Si vous ne configurez pas de politique d'expiration, les données sont conservées indéfiniment.
Lorsque vous désactivez l'intégration ou supprimez une table système, Redshift arrête d'écrire de nouvelles données, mais les données précédemment fournies restent dans les tables S3 et continuent d'être soumises à la politique d'expiration que vous avez configurée.
Pour plus d'informations, consultez la section Configuration de l'expiration des enregistrements pour les compartiments de tables S3 dans le guide de l'utilisateur Amazon S3.
Gouvernance des données
Vous régissez l'accès aux données des tables système conservées ; Redshift n'applique pas d'autorisations de lecture en votre nom et ne masque pas les données.
-
Contrôle d'accès. Après avoir intégré le bucket de tables S3 à AWS Glue Data Catalog, vous pouvez gérer l'accès en lecture à l'aide de Gestion des identités et des accès AWS
(IAM) ou AWS Lake Formation . Dans un déploiement consolidé, vous pouvez définir l'accès en lecture par entrepôt. -
Catalogage et découverte. L' AWS Glue Data Catalog intégration fournit un emplacement central pour découvrir les tables conservées et appliquer des autorisations précises (par exemple, accès au niveau des tables, des colonnes ou des lignes avec Lake Formation).
Comportement de livraison et de cycle de
-
Fréquence de livraison. Les données sont fournies par lots à une fréquence fixe.
-
Exactly-once livraison. Chaque enregistrement est livré une seule fois ; le fait de réactiver ou de rajouter une table système ne crée pas de doublons.
-
Activez, désactivez, réactivez. Lorsque la fonctionnalité (ou une table système spécifique) est désactivée, aucune donnée n'est capturée pendant cette période. La désactivation arrête les écritures mais ne supprime pas les tables S3 ni les données fournies précédemment. Re-enabling reprend la livraison à l'avenir et ne comble pas l'écart.
-
Suppression d'une table système de votre sélection. Redshift cesse de fournir de nouvelles données pour cette table système. Les données fournies précédemment restent dans les tables S3 et sont soumises à toute politique d'expiration des enregistrements que vous avez configurée. Re-adding la table système reprend la livraison sans dupliquer les données.
-
Suppression de l'entrepôt de données contenant des données en vol. Si vous supprimez un entrepôt de données alors que la livraison est en cours et que la clé de chiffrement de l'entrepôt de données diffère de celle utilisée pour les tables S3, Redshift peut continuer à utiliser l' AWS KMS autorisation associée à la clé de l'entrepôt de données pendant une courte période après la suppression afin de terminer la livraison des données restantes.
Vérification de l'état de livraison
Vous pouvez consulter la configuration actuelle et le délai de livraison le plus récent par tableau système à tout moment :
-
Clusters provisionnés.
describe-logging-status(oudescribe-cluster) renvoie les tables système actives, l'espace de noms S3 Tables, la granularité et l'heure de dernière ingestion pour chaque table système. -
Redshift sans serveur.
get-namespacerenvoie les mêmes informations dans l'état de publication des tables S3 de l'espace de noms.
Redshift sans serveur
La livraison n'empêche pas un groupe de travail de rester éveillé et ne consomme pas votre ordinateur. Avant que le groupe de travail ne fasse une pause, Redshift s'assure que tout lot en attente est livré.
Bonnes pratiques
-
Évaluez la sensibilité de vos données. Déterminez quel type de données est stocké dans votre entrepôt de données et si les tables système contiennent des informations sensibles. Certaines tables système (telles que SYS_QUERY_TEXT et SYS_PROCEDURE_MESSAGES) peuvent capturer des valeurs littérales à partir de vos requêtes et de vos procédures stockées.
-
Choisissez un modèle de déploiement. Si votre entrepôt de données stocke des informations sensibles, envisagez d'utiliser le modèle de déploiement par entrepôt pour isoler physiquement les données de la table système de chaque entrepôt de données. Si vos données ne sont pas sensibles et que vous souhaitez exécuter des requêtes entre entrepôts sans combiner les résultats de plusieurs tables, utilisez le modèle de déploiement consolidé.
-
Sélectionnez les tables système dont vous avez besoin. Consultez la liste des tables système prises en charge et choisissez celles qui correspondent à vos exigences de conformité, d'audit ou d'observabilité. Il n'est pas nécessaire d'activer toutes les tables système.
-
Configurez le chiffrement avant d'activer la fonctionnalité. Si vous souhaitez utiliser une AWS KMS clé gérée par le client, spécifiez-la lors de la première activation de la fonctionnalité. Vous ne pouvez pas modifier la clé une fois que les tables S3 ont été créées. Pour modifier la clé, désactivez la fonctionnalité, supprimez les tables S3 à l'aide de l'API S3 Tables (cela supprime définitivement les données conservées), puis réactivez la fonctionnalité avec la nouvelle clé.
-
Définissez la rétention en fonction des besoins de l'entreprise. Configurez la politique d'expiration des enregistrements directement dans S3 Tables au niveau de la table, en fonction de vos besoins de conformité, d'audit ou opérationnels. Les différentes tables peuvent avoir des durées de conservation différentes. Si vous ne configurez pas de politique d'expiration, les données sont conservées indéfiniment. Pour surveiller l'utilisation du stockage pour les tables de votre système, consultez les CloudWatch statistiques d'Amazon S3 Tables dans le guide de l'utilisateur Amazon S3.
Facturation
L'écriture des données des tables système dans S3 Tables est gratuite. Le stockage et la maintenance standard des tables S3 pour les données conservées, ainsi que le moteur de requête que vous utilisez pour lire les données, vous sont facturés conformément à la tarification de ce moteur. Pour plus d'informations, consultez la rubrique Tarification d'Amazon S3 Tables
Considérations et restrictions
-
Pris en charge au sein d'un seul AWS compte et d'une seule AWS région. Pour analyser les données de différents comptes ou régions, combinez les résultats au moment de la requête.
-
Un entrepôt de données utilise un modèle de déploiement (par entrepôt ou consolidé) à la fois.
-
Le fait de changer de modèle de déploiement, de désactiver et de réactiver, ou de supprimer et de rajouter une table système ne permet pas de remplir les données historiques.
-
Les données fournies sont immuables. Vous ne pouvez pas modifier ou supprimer des lignes individuelles via Redshift.
-
Vous pouvez supprimer les tables S3 créées par cette fonctionnalité, mais cela supprime définitivement toutes les données conservées dans ces tables et arrête la livraison. Redshift ne recrée pas automatiquement les tables supprimées. Pour reprendre la diffusion, vous devez réactiver la fonctionnalité, qui crée de nouvelles tables et commence à fournir de nouvelles données à l'avenir. Les données fournies précédemment ne sont pas restaurées. Pour plus d'informations, consultez la section Supprimer des tables S3 dans le guide de l'utilisateur Amazon S3.
-
La livraison se fait par lots (les données sont écrites à une fréquence fixe).
-
Les requêtes depuis Redshift nécessitent l'intégration du bucket de tables S3. AWS Glue Data Catalog