Chargement des données à partir des hôtes distants - 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.

Chargement des données à partir des hôtes distants

Vous pouvez utiliser la COPY commande pour charger des données en parallèle depuis un ou plusieurs hôtes distants, tels que des EC2 instances Amazon ou d'autres ordinateurs. COPYse connecte aux hôtes distants à l'aide SSH et exécute des commandes sur les hôtes distants pour générer une sortie de texte.

L'hôte distant peut être une instance Amazon EC2 Linux ou un autre ordinateur Unix ou Linux configuré pour accepter les SSH connexions. Ce guide part du principe que votre hôte distant est une EC2 instance Amazon. Lorsque la procédure est différente pour un autre ordinateur, le guide signale la différence.

Amazon Redshift peut se connecter à plusieurs hôtes et ouvrir plusieurs SSH connexions pour chaque hôte. Amazon Redshift envoie une commande unique via chaque connexion pour générer la sortie texte sur la sortie standard de l’hôte, qu’Amazon Redshift lit ensuite comme un fichier texte.

Avant de commencer

Avant de commencer, vous devez avoir les éléments suivants en place :

  • Une ou plusieurs machines hôtes, telles que des EC2 instances Amazon, auxquelles vous pouvez vous connecter à l'aideSSH.

  • Sources de données sur les hôtes.

    Vous devez fournir les commandes que le cluster Amazon Redshift exécutera sur les hôtes pour générer la sortie texte. Une fois le cluster connecté à un hôte, la COPY commande exécute les commandes, lit le texte à partir de la sortie standard des hôtes et charge les données en parallèle dans une table Amazon Redshift. Le texte de sortie doit être sous une forme assimilable par la COPY commande. Pour plus d’informations, consultez Préparation de vos données d’entrée.

  • Accédez aux hôtes à partir de votre ordinateur.

    Pour une EC2 instance Amazon, vous utiliserez une SSH connexion pour accéder à l'hôte. Vous devez accéder à l’hôte pour ajouter la clé publique du cluster Amazon Redshift au fichier de clés autorisées de l’hôte.

  • Un cluster Amazon Redshift en cours d’exécution.

    Pour plus d’informations sur le lancement d’un cluster, consultez Guide de démarrage d’Amazon Redshift.

Processus de chargement de données

Cette section vous guide à travers le processus de chargement de données à partir d’hôtes distants. Les sections suivantes fournissent les informations détaillées dont vous avez besoin pour effectuer chaque étape.

Étape 1 : Récupérer la clé publique de cluster et les adresses IP de nœud de cluster

Vous allez utiliser l’adresse IP de chaque nœud de cluster pour configurer les groupes de sécurité hôte et permettre l’accès à partir de votre cluster Amazon Redshift à l’aide de ces adresses IP.

Pour récupérer la clé publique de cluster et les adresses IP de nœud de cluster pour votre cluster à l’aide de la console
  1. Accédez à la console de gestion Amazon Redshift.

  2. Choisissez le lien Clusters dans le volet de navigation.

  3. Sélectionnez votre cluster dans la liste.

  4. Localisez le groupe de paramètres d'SSHingestion.

    Notez la Clé publique du cluster et les Adresses IP du nœud. Vous allez les utiliser dans les étapes ultérieures.

    Capture d'écran du groupe Paramètres d'SSHingestion montrant la clé publique du cluster et les adresses IP du nœud.

    Vous allez utiliser les adresses IP privées de l’étape 3 pour configurer l’hôte et accepter la connexion à partir d’Amazon Redshift. Selon le type d'hôte auquel vous vous connectez et s'il se trouve dans unVPC, vous utiliserez soit les adresses IP publiques, soit les adresses IP privées.

Pour récupérer la clé publique du cluster et les adresses IP des nœuds de cluster de votre cluster à l'aide d'Amazon RedshiftCLI, exécutez la commande describe-clusters.

Par exemple :

aws redshift describe-clusters --cluster-identifier <cluster-identifier>

La réponse inclura ClusterPublicKey la liste des adresses IP privées et publiques, comme suit :

{ "Clusters": [ { "VpcSecurityGroups": [], "ClusterStatus": "available", "ClusterNodes": [ { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "LEADER", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-0", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-1", "PublicIPAddress": "10.nnn.nnn.nnn" } ], "AutomatedSnapshotRetentionPeriod": 1, "PreferredMaintenanceWindow": "wed:05:30-wed:06:00", "AvailabilityZone": "us-east-1a", "NodeType": "dc2.large", "ClusterPublicKey": "ssh-rsa AAAABexamplepublickey...Y3TAl Amazon-Redshift", ... ... }

Pour récupérer la clé publique du cluster et les adresses IP des nœuds de cluster de votre cluster à l'aide d'Amazon RedshiftAPI, utilisez l' DescribeClusters action. Pour plus d'informations, consultez la section describe-clusters dans le guide Amazon CLI Redshift DescribeClustersou dans le guide Amazon Redshift. API

Étape 2 : Ajouter la clé publique de cluster Amazon Redshift au fichier de clés autorisées de l’hôte

Vous ajoutez la clé publique du cluster au fichier de clés autorisées de chaque hôte afin que celui-ci reconnaisse Amazon Redshift et accepte la SSH connexion.

Pour ajouter la clé publique de cluster Amazon Redshift au fichier de clés autorisées de l’hôte
  1. Accédez à l'hôte à l'aide d'une SSH connexion.

    Pour plus d'informations sur la connexion à une instance à l'aide deSSH, consultez Connect to Your Instance dans le guide de EC2 l'utilisateur Amazon.

  2. Copiez la clé publique Amazon Redshift depuis la console ou depuis le texte de CLI réponse.

  3. Copiez et collez le contenu de la clé publique dans le fichier /home/<ssh_username>/.ssh/authorized_keys de l’hôte distant. <ssh_username> doit correspondre à la valeur du champ « username » du fichier manifeste. Incluez la chaîne complète, y compris le préfixe « ssh-rsa » et le suffixe « Amazon-Redshift ». Par exemple :

    ssh-rsa AAAACTP3isxgGzVWoIWpbVvRCOzYdVifMrh… uA70BnMHCaMiRdmvsDOedZDOedZ Amazon-Redshift

Étape 3 : Configurer l’hôte pour accepter toutes les adresses IP du cluster Amazon Redshift

Si vous travaillez avec une EC2 instance Amazon ou un EMR cluster Amazon, ajoutez des règles de trafic entrant au groupe de sécurité de l'hôte pour autoriser le trafic provenant de chaque nœud de cluster Amazon Redshift. Pour Type, sélectionnez SSH avec TCP protocole sur le port 22. Pour Source, saisissez les adresses IP du nœud de cluster Amazon Redshift que vous avez récupérées dans Étape 1 : Récupérer la clé publique de cluster et les adresses IP de nœud de cluster. Pour plus d'informations sur l'ajout de règles à un groupe EC2 de sécurité Amazon, consultez Autoriser le trafic entrant pour vos instances dans le guide de EC2l'utilisateur Amazon.

Utilisez les adresses IP privées quand :

  • Vous avez un cluster Amazon Redshift qui ne se trouve pas dans un cloud privé virtuel (VPC) et une instance Amazon EC2 -Classic, tous deux situés dans la même région. AWS

  • Vous avez un cluster Amazon Redshift situé dans une VPC instance Amazon et une VPC instance AmazonEC2, tous deux situés dans la même AWS région et dans la même. VPC

Sinon, utilisez les adresses IP publiques.

Pour plus d'informations sur l'utilisation d'Amazon Redshift dans un environnementVPC, consultez la section Gestion des clusters dans un cloud privé virtuel (VPC) dans le guide de gestion Amazon Redshift.

Étape 4 : Obtenir la clé publique de l’hôte

Vous pouvez fournir le cas échéant la clé publique dans le fichier manifeste de telle sorte qu’Amazon Redshift puisse identifier l’hôte. La COPY commande ne nécessite pas la clé publique de l'hôte mais, pour des raisons de sécurité, nous vous recommandons vivement d'utiliser une clé publique pour empêcher les attaques man-in-the-middle « ».

Vous pouvez trouver la clé publique de l’hôte à l’emplacement suivant, où <ssh_host_rsa_key_name> correspond au nom unique de la clé publique de l’hôte :

: /etc/ssh/<ssh_host_rsa_key_name>.pub
Note

Amazon Redshift ne prend en charge que les RSA clés. Nous ne prenons pas en charge DSA les clés.

Lorsque vous créez votre fichier manifeste à l’étape 5, vous collez le texte de la clé publique dans le champ « Public Key » de l’entrée du fichier manifeste.

Étape 5 : Créer un fichier manifeste

La COPY commande peut se connecter à plusieurs hôtes à l'aide SSH de et peut créer plusieurs SSH connexions avec chaque hôte. COPYexécute une commande via chaque connexion hôte, puis charge le résultat des commandes en parallèle dans la table. Le fichier manifeste est un fichier texte au JSON format qu'Amazon Redshift utilise pour se connecter à l'hôte. Le fichier manifeste indique les points de terminaison de l'SSHhôte et les commandes qui sont exécutées sur les hôtes pour renvoyer des données à Amazon Redshift. Le cas échéant, vous pouvez inclure la clé publique de l’hôte, le nom d’utilisateur de connexion et un indicateur obligatoire pour chaque entrée.

Créez le fichier manifeste sur votre ordinateur local. Dans une étape ultérieure, vous téléchargez le fichier vers Amazon S3.

Le fichier manifeste est au format suivant :

{ "entries": [ {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, "publickey": "<public_key>", "username": "<host_user_name>"}, {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, "publickey": "<public_key>", "username": "host_user_name"} ] }

Le fichier manifeste contient une construction « entrées » pour chaque SSH connexion. Chaque entrée représente une SSH connexion unique. Vous pouvez avoir plusieurs connexions à un seul hôte ou plusieurs connexions à plusieurs hôtes. Les guillemets doubles sont obligatoires comme illustré, aussi bien pour les noms de champ que pour les valeurs. La seule valeur qui n’a pas besoin de guillemets doubles est la valeur booléenne true ou false pour le champ obligatoire.

La liste suivante décrit les champs dans le fichier manifeste.

point de terminaison

URLAdresse ou adresse IP de l'hôte. Par exemple, « ec2-111-222-333.compute-1.amazonaws.com » ou « 22.33.44.56 »

command

La commande qui sera exécutée par l’hôte pour générer une sortie texte ou binaire (lzop, gzip ou bzip2). La commande peut être n’importe quelle commande que l’utilisateur « host_user_name » est autorisé à exécuter. La commande peut être aussi simple que l’impression d’un fichier ou peut interroger une base de données ou lancer un script. La sortie (fichier texte, fichier binaire gzip, fichier binaire lzop ou fichier binaire bzip2) doit être sous une forme que la commande Amazon Redshift peut ingérer. COPY Pour de plus amples informations, veuillez consulter Préparation de vos données d’entrée.

publickey

(Facultatif) La clé publique de l’hôte. Si la clé est fournie, Amazon Redshift l’utilise pour identifier l’hôte. Si la clé publique n’est pas fournie, Amazon Redshift n’essaie pas d’identifier l’hôte. Par exemple, si la clé publique de l’hôte distant est ssh-rsa AbcCbaxxx…xxxDHKJ root@amazon.com, saisissez le texte suivant dans le champ de clé publique : AbcCbaxxx…xxxDHKJ.

mandatory

(Facultatif) Indique si la COPY commande doit échouer en cas d'échec de la connexion. L’argument par défaut est false. Si Amazon Redshift ne parvient pas à établir au moins une connexion, la COPY commande échoue.

nom d’utilisateur

(Facultatif) Nom d’utilisateur qui sera utilisé pour vous connecter au système hôte et exécuter la commande à distance. Le nom de connexion d’utilisateur doit être le même que celui de la connexion utilisée pour ajouter la clé publique au fichier de clés autorisées de l’hôte à l’étape 2. Le nom d’utilisateur par défaut est « redshift ».

L’exemple suivant illustre un manifeste complet permettant d’ouvrir quatre connexions vers le même hôte et d’exécuter une commande différente sur chaque connexion :

{ "entries": [ {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata1.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata2.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata3.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata4.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"} ] }

Étape 6 : charger le fichier manifeste sur un compartiment Amazon S3

Chargez le fichier manifeste sur un compartiment Amazon S3. Si le compartiment Amazon S3 ne réside pas dans la même AWS région que votre cluster Amazon Redshift, vous devez utiliser l'REGIONoption pour spécifier la AWS région dans laquelle se trouve le manifeste. Pour plus d’informations sur la création d’un compartiment Amazon S3 et le chargement d’un fichier, consultez le Guide de l’utilisateur Amazon Simple Storage Service.

Étape 7 : Exécutez la COPY commande pour charger les données

Exécutez une commande COPY pour vous connecter à l’hôte et charger les données dans une table Amazon Redshift. Dans la COPY commande, spécifiez le chemin d'objet Amazon S3 explicite pour le fichier manifeste et incluez l'SSHoption. Par exemple,

COPY sales FROM 's3://amzn-s3-demo-bucket/ssh_manifest' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' DELIMITER '|' SSH;
Note

Si vous utilisez la compression automatique, la COPY commande effectue deux lectures de données, ce qui signifie qu'elle exécute deux fois la commande à distance. La première lecture consiste à fournir un échantillon pour l’analyse de la compression, puis la deuxième lecture charge réellement les données. Si la double exécution de la commande distante cause un problème en raison des effets secondaires potentiels, vous devez désactiver la compression automatique. Pour désactiver la compression automatique, exécutez la COPY commande avec l'COMPUPDATEoption définie surOFF. Pour de plus amples informations, veuillez consulter Chargement des tables avec compression automatique.