Mise en route du partage de données avec AWS CloudFormation dans Amazon Redshift - 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 .

Mise en route du partage de données avec AWS CloudFormation dans Amazon Redshift

Vous pouvez automatiser la configuration du partage de données à l’aide d’une pile AWS CloudFormation, qui alloue les ressources AWS. La pile CloudFormation configure le partage de données entre deux clusters Amazon Redshift dans le même compte AWS. Ainsi, vous pouvez commencer à partager des données sans exécuter d’instructions SQL pour mettre en service vos ressources.

La pile crée une unité de partage des données sur le cluster que vous désignez. L’unité de partage des données inclut une table et des exemples de données en lecture seule. Ces données peuvent être lues par votre autre cluster Amazon Redshift.

Si vous souhaitez commencer à partager des données dans un compte AWS en exécutant des instructions SQL pour configurer une unité de partage des données et accorder des autorisations, sans utiliser CloudFormation, consultez Partage de l’accès en lecture aux données au sein d’un Compte AWS.

Avant d’exécuter la pile CloudFormation de partage de données, vous devez être connecté avec un utilisateur autorisé à créer un rôle IAM et une fonction Lambda. Vous avez également besoin de deux clusters Amazon Redshift dans le même compte. Vous en utilisez un, le producteur, pour partager les exemples de données, et l’autre, le consommateur, pour les lire. La principale exigence pour ces clusters est que chacun utilise des nœuds RA3. Pour des prérequis supplémentaires, consultez Considérations relatives à l’unité de partage des données dans Amazon Redshift.

Pour plus d’informations sur le démarrage de la configuration d’un cluster Amazon Redshift, consultez Commencer avec les entrepôts de données alloués Amazon Redshift. Pour plus d’informations sur l’automatisation de la configuration avec CloudFormation, consultez Qu’est-ce qu’AWS CloudFormation ?

Important

Avant de lancer votre pile CloudFormation, assurez-vous de disposer de deux clusters Amazon Redshift dans le même compte et que ces clusters utilisent des nœuds RA3. Assurez-vous que chaque cluster possède une base de données et un super-utilisateur. Pour plus d’informations, consultez CREATE DATABASE et superuser.

Pour lancer votre pile CloudFormation pour le partage de données Amazon Redshift, procédez comme suit :
  1. Cliquez sur Launch CFN stack (Lancer la pile CFN), qui vous amène au service CloudFormation dans la AWS Management Console.

    Si vous y êtes invité, connectez-vous.

    Le processus de création de pile démarre et fait référence à un fichier de modèle CloudFormation, stocké dans Amazon S3. Un modèle CloudFormation est un fichier texte au format JSON qui déclare les ressources AWS qui constituent une pile. Pour plus d’informations sur les modèles CloudFormation, consultez Concepts de base des modèles.

  2. Choisissez Next (Suivant) pour saisir les détails de la pile.

  3. Sous Parameters (Paramètres), pour chaque cluster, saisissez les éléments suivants :

    • Le nom de votre cluster Amazon Redshift, par exemple ra3-consumer-cluster

    • Le nom de votre base de données, par exemple dev

    • Le nom de l’utilisateur de votre base de données, par exemple consumeruser

    Nous vous recommandons d’utiliser des clusters de test, car la pile crée plusieurs objets de base de données.

    Choisissez Suivant.

  4. Les options de pile apparaissent.

    Choisissez Next (Suivant) pour accepter les paramètres par défaut.

  5. Sous Capacités, choisissez Je comprends que AWS CloudFormation peut créer des ressources IAM.

  6. Sélectionnez Créer la pile.

CloudFormation prend environ 10 minutes pour créer la pile Amazon Redshift à l’aide du modèle, créant ainsi une unité de partage des données appelée myproducer_share. La pile crée l’unité de partage des données dans la base de données spécifiée dans les détails de la pile. Seuls les objets de cette base de données peuvent être partagés.

Si une erreur se produit pendant la création de la pile, procédez comme suit :

  • Assurez-vous d’avoir saisi le nom de cluster Amazon Redshift, le nom de base de données et le nom d’utilisateur de la base de données corrects pour chaque cluster Redshift.

  • Assurez-vous que votre cluster possède des nœuds RA3.

  • Assurez-vous d’être connecté avec un utilisateur qui a l’autorisation de créer un rôle IAM et une fonction Lambda.. Pour plus d’informations sur la création de rôles IAM, consultez Création de rôles IAM. Pour plus d’informations sur les politiques de création de fonctions Λ, consultez Développement des fonctions.

Interrogation de l’unité de partage des données que vous avez créée

Pour utiliser la procédure suivante, vérifiez que vous disposez des autorisations requises pour exécuter des requêtes sur chaque cluster décrit.

Pour interroger votre unité de partage des données :
  1. Connectez-vous au cluster producteur de la base de données entré lors de la création de votre pile CloudFormation, à l’aide d’un outil client tel que l’Éditeur de requêtes Amazon Redshift v2.

  2. Requête pour les unités de partage des données.

    SHOW DATASHARES; +------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+ | share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace | +------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+ | myproducer_share | 100 | sample_data_dev | myconsumer_db | INBOUND | NULL | true | NULL | producer-acct | your-producer-namespace | +------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+

    La commande précédente renvoie le nom de l’unité de partage des données créée par la pile, appelée myproducer_share. Elle renvoie également le nom de base de données associé à l’unité de partage des données myconsumer_db.

    Copiez l’identifiant de l’espace de noms du producteur à utiliser lors d’une étape ultérieure.

  3. Décrivez les objets dans l’unité de partage des données.

    DESC DATASHARE myproducer_share; +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ | producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ | producer-acct | your-producer-namespace | OUTBOUND | myproducer_share | schema | myproducer_schema | true | | producer-acct | your-producer-namespace | OUTBOUND | myproducer_share | table | myproducer_schema.tickit_sales | NULL | | producer-acct | your-producer-namespace | OUTBOUND | myproducer_share | view | myproducer_schema.ticket_sales_view | NULL | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+

    Lorsque vous décrivez l’unité de partage des données, il renvoie les propriétés des tables et des vues. La pile ajoute des tables et des vues contenant des exemples de données à la base de données producteur, par exemple tickit_sales et tickit_sales_view. Pour plus d’informations sur l’exemple de base de données TICKIT, consultez Exemple de base de données.

    Il n’est pas nécessaire de déléguer des autorisations sur l’unité de partage des données pour exécuter des requêtes. La pile accorde les autorisations nécessaires.

  4. Connectez-vous au cluster consommateur à l’aide de votre outil client. Décrivez l’unité de partage des données, en spécifiant l’espace de noms du producteur.

    DESC DATASHARE myproducer_share OF NAMESPACE '<namespace id>'; --specify the unique identifier for the producer namespace +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ | producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ | producer-acct | your-producer-namespace | INBOUND | myproducer_share | schema | myproducer_schema | NULL | | producer-acct | your-producer-namespace | INBOUND | myproducer_share | table | myproducer_schema.tickit_sales | NULL | | producer-acct | your-producer-namespace | INBOUND | myproducer_share | view | myproducer_schema.ticket_sales_view | NULL | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+
  5. Vous pouvez interroger des tables dans l’unité de partage des données en spécifiant la base de données et le schéma du partage de données. Pour plus d’informations, consultez Exemple de requête entre bases de données. Les requêtes suivantes renvoient les données de vente et de vendeurs à partir de la table SALES de l’exemple de base de données TICKIT. Pour plus d’informations, consultez Exemple de base de données.

    SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales_view; +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | 1 | 1 | 36861 | 21191 | 7872 | 1875 | 4 | 728 | 109.2 | 2008-02-18 02:36:48 | | 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76 | 11.4 | 2008-06-06 05:00:16 | | 3 | 5 | 1616 | 17433 | 8647 | 1983 | 2 | 350 | 52.5 | 2008-06-06 08:26:17 | | 4 | 5 | 1616 | 19715 | 8647 | 1986 | 1 | 175 | 26.25 | 2008-06-09 08:38:52 | | 5 | 6 | 47402 | 14115 | 8240 | 2069 | 2 | 154 | 23.1 | 2008-08-31 09:17:02 | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+
    Note

    La requête s’exécute sur la vue dans le schéma partagé. Vous ne pouvez pas vous connecter directement aux bases de données créées à partir d’unités de partage des données. Elles sont en lecture seule.

  6. Pour exécuter une requête incluant des agrégations, utilisez l’exemple suivant.

    SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales ORDER BY 1,2 LIMIT 5; +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | 1 | 1 | 36861 | 21191 | 7872 | 1875 | 4 | 728 | 109.2 | 2008-02-18 02:36:48 | | 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76 | 11.4 | 2008-06-06 05:00:16 | | 3 | 5 | 1616 | 17433 | 8647 | 1983 | 2 | 350 | 52.5 | 2008-06-06 08:26:17 | | 4 | 5 | 1616 | 19715 | 8647 | 1986 | 1 | 175 | 26.25 | 2008-06-09 08:38:52 | | 5 | 6 | 47402 | 14115 | 8240 | 2069 | 2 | 154 | 23.1 | 2008-08-31 09:17:02 | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+

    La requête renvoie les données de vente et de vendeurs à partir des exemples de données TICKIT.

    Pour obtenir des exemples de requêtes d’unités de partage des données supplémentaires, consultez Partage de l’accès en lecture aux données au sein d’un Compte AWS.