Gestion du partage de données avec AWS CloudFormation - 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.

Gestion du partage de données avec AWS CloudFormation

Vous pouvez automatiser la configuration du partage de données en utilisant une AWS CloudFormation pile qui fournit des AWS ressources. La CloudFormation pile configure le partage de données entre deux clusters Amazon Redshift d'un même AWS compte. Ainsi, vous pouvez commencer à partager des données sans exécuter d'SQLinstructions pour approvisionner 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 AWS compte en exécutant SQL des instructions pour configurer un partage de données et octroyer des autorisations, sans les utiliser CloudFormation, consultez. Partage de l'accès en lecture aux données au sein d'un Compte AWS

Avant d'exécuter la CloudFormation pile de partage de données, vous devez être connecté avec un utilisateur autorisé à créer un IAM rôle 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 RA3 des nœuds. Pour des prérequis supplémentaires, consultez Éléments à prendre en compte lors de l’utilisation du partage de données dans Amazon Redshift.

Pour plus d'informations sur la mise en place d'un cluster Amazon Redshift, consultez Commencer avec les entrepôts de données provisionnés Amazon Redshift. Pour plus d'informations sur l'automatisation de la configuration avec CloudFormation, voir Qu'est-ce que c'est ? AWS CloudFormation

Important

Avant de lancer votre CloudFormation stack, assurez-vous que vous disposez de deux clusters Amazon Redshift dans le même compte et que les clusters utilisent RA3 des nœuds. 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 CloudFormation stack pour le partage de données Amazon Redshift, procédez comme suit :
  1. Cliquez sur Launch CFN stack, qui vous amène au CloudFormation service dans le AWS Management Console.

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

    Le processus de création de la pile démarre en faisant référence à un fichier CloudFormation modèle, qui est stocké dans Amazon S3. Un CloudFormation modèle est un fichier texte au JSON format qui déclare AWS les ressources qui constituent une pile. Pour plus d'informations sur les CloudFormation modèles, voir Apprendre les bases 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 reconnais que cela AWS CloudFormation pourrait créer IAM des ressources.

  6. Sélectionnez Créer la pile.

CloudFormation il faut environ 10 minutes pour créer la pile Amazon Redshift à l'aide du modèle, en créant un partage de données appelé. 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 RA3 des nœuds.

  • Assurez-vous que vous êtes connecté avec un utilisateur autorisé à créer un IAM rôle et une fonction Lambda. Pour plus d'informations sur la création de IAM rôles, consultez la section Création de IAM rôles. 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 de producteurs sur la base de données saisie lors de la création de votre CloudFormation stack, à 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'TICKITexemple de base de données, consultezExemple 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 de plus amples informations, veuillez consulter Exemples de requêtes entre bases de données. Les requêtes suivantes renvoient les données relatives aux ventes et aux vendeurs à partir de la SALES table de l'TICKITexemple de base de données. Pour de plus amples informations, veuillez consulter 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 relatives aux ventes et aux vendeurs à partir des TICKIT données d'échantillon.

    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.