Comment puis-je accéder à un cluster Amazon Redshift privé à partir de ma machine locale ?

Dernière mise à jour : 09/07/2021

Je souhaite utiliser mon ordinateur local pour accéder à un cluster Amazon Redshift qui se trouve dans un sous-réseau privé d'un Amazon Virtual Private Cloud (Amazon VPC). Comment faire ?

Brève description

Utilisez une instance Amazon Elastic Compute Cloud (Amazon EC2) et SQL Workbench/J pour créer un tunnel SSH. Le tunnel achemine alors tout le trafic entrant depuis l'ordinateur local vers le cluster Amazon Redshift privé.

Solution

Créer le l'Amazon VPC, l'instance EC2 et le cluster Amazon Redshift

1.    Créez un Amazon VPC avec des sous-réseaux publics et privés.

2.    Lancez une instance EC2 à partir d'une Amazon Machine Image (AMI) Amazon Linux 2 dans le sous-réseau public de l'Amazon VPC que vous avez créé à l'étape 1. Choisissez les options suivantes lors de la création de l'instance :
À l'étape 3, pour Attribuer automatiquement une adresse IP publique, sélectionnez Activer. Vous pouvez également attribuer une adresse IP élastique à l'instance.
À l'étape 6, créez un groupe de sécurité avec une règle SSH. Pour Source, choisissez Custom (Personnalisé), puis saisissez votre bloc d'adresse IP CIDR ou choisissez My IP (Mon IP).

3.    Dans la console Amazon Redshift, créez un groupe de sous-réseaux de cluster.
Pour VPC ID (ID de VPC), choisissez l'ID de l'Amazon VPC que vous avez créé à l'étape 1.
Pour Subnet ID (ID de sous-réseau), choisissez l'ID de sous-réseau privé.

4.    Créez un nouveau groupe de sécurité.

5.    Ajoutez une règle au groupe de sécurité nouvellement créé pour autoriser le trafic entrant à partir du groupe de sécurité de l'instance :
Pour Type, choisissez « Custom TCP » (TCP personnalisé).
Pour « Port Range » (Plage de ports), saisissez 5439 (qui est le port par défaut pour Amazon Redshift).
Pour Source, choisissez Custom (Personnalisé), puis saisissez le nom du groupe de sécurité que vous avez créé à l'étape 2.

6.    Lancez un nouveau cluster Amazon Redshift ou restaurez un cluster à partir d'un instantané. Sur la page Additional Configuration (Configuration supplémentaire), choisissez les options suivantes :
Pour Choose a VPC (Choisir un VPC), choisissez l'Amazon VPC que vous avez créé à l'étape 1.
Pour Cluster subnet group (Groupe de sous-réseaux du cluster), choisissez le groupe que vous avez créé à l'étape 3.
Pour Accessible publiquement (Accessible publiquement), choisissez No (Non).
Pour VPC security groups (Groupes de sécurité du VPC), choisissez le groupe de sécurité que vous avez créé à l'étape 4.

Attendez que le cluster atteigne l'état available (disponible)avant de continuer.

7.    Exécutez la commande suivante pour vous connecter à l'instance EC2 à partir de votre ordinateur local. Remplacez your_key.pem et your_EC2_endpoint par vos valeurs. Pour plus d'informations, rendez-vous sur la page Connexion à votre instance Linux à l'aide de SSH.

ssh -i "your_key.pem" ec2-user@your_EC2_endpoint

8.    Exécutez la commande suivante pour installer telnet :

sudo yum install telnet

9.    Utilisez telnet pour tester la connexion à votre cluster Amazon Redshift. Dans la commande suivante, remplacez cluster-endpoint et cluster-port par vos valeurs.

telnet cluster-endpoint cluster-port

Vous pouvez également utiliser « dig » pour confirmer que votre ordinateur local peut atteindre l'adresse IP privée du cluster Amazon Redshift. Dans la commande suivante, remplacez cluster-endpoint par votre point de terminaison de cluster.

dig cluster-endpoint

Créer le tunnel

1.    Installez SQL Workbench/J sur votre machine locale.

2.    Téléchargez le dernier pilote JDBC pour Amazon Redshift.

3.    Dans SQL Workbench/J, créez un profil de connexion à l'aide du pilote JDBC que vous avez téléchargé à l'étape 2.

4.    Pour configurer la connexion SSH dans SQL Workbench/J, choisissez SSH, puis saisissez ce qui suit :
Nom de l'hôte SSH : l'adresse IP publique ou le DNS de l'instance EC2
Port SSH : 22
Nom d'utilisateur : ec2-user
Fichier de clé privée : le fichier .pem que vous avez téléchargé lors de la création de l'instance EC2
Mot de passe : gardez ce champ vide
Port local : n'importe quel port local libre (votre cluster Amazon Redshift utilise le port 5439 par défaut)
Nom d'hôte de la base de données : point de terminaison du cluster (ne doit pas inclure le numéro de port ni le nom de la base de données)
Port de base de données : 5439
Réécrire l'URL JDBC : sélectionnez cette option

5.    Choisissez « OK » pour enregistrer les paramètres SSH.

6.    Assurez-vous que l'URL JDBC, le nom du super-utilisateur et le mot de passe sont correctement saisis.

7.    Choisissez Test pour vérifier que la connexion fonctionne. Pour plus d'informations, consultez Connecting through an SSH tunnel dans la documentation SQL Workbench/J.

(Facultatif) Modifiez la connexion d'un utilisateur AWS Identity and Access Management (IAM)

Pour vous connecter au cluster Amazon Redshift en tant qu'utilisateur IAM, modifiez le profil de connexion que vous avez créé à l'étape précédente :

1.    Vérifiez que l'utilisateur IAM dispose d'une stratégie qui autorise les actions GetClusterCredentials, JoinGroup et CreateClusterUser Amazon Redshift pour les ressources dbgroup, dbuser et dbname. Remplacez ces valeurs dans l'exemple suivant :
us-west-2 : la région dans laquelle se trouve votre cluster
012345678912 : l'ID de votre compte AWS
clustername : le nom de votre cluster
group_name : le nom du groupe de base de données
user_name : le nom de l'utilisateur Amazon Redshift (vous pouvez utiliser « * » si vous ne souhaitez pas spécifier un utilisateur spécifique)
database_name : le nom de la base de données

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials",
                "redshift:CreateClusterUser",
                "redshift:JoinGroup"
            ],
            "Resource": [
                "arn:aws:redshift:eu-west-2:012345678912:dbgroup:clustername/group_name",
                "arn:aws:redshift:eu-west-2:012345678912:dbuser:clustername/user_name or * ",
                "arn:aws:redshift:eu-west-2:012345678912:dbname:clustername/database_name"
            ]
        }
    ]
}

2.    Dans SQL Workbench/J, remplacez la première partie de l'URL JDBC du profil de connexion par jdbc:redshift:iam. (Par exemple, vous pouvez modifier l'URL JDBC en « jdbc:redshift:iam://127.0.0.1:5439/example ».)

3.    Choisissez Propriétés étendues, puis créez les propriétés suivantes :
AccessKeyID
 : identifiant de la clé d'accès de l'utilisateur IAM
SecretAccessKey : la clé d'accès secrète de l'utilisateur IAM
DbGroups : force l'utilisateur IAM à rejoindre un groupe existant
DbUser : le nom de l'utilisateur IAM
AutoCreate : défini sur true (vrai)
ClusterID :
le nom du cluster Amazon Redshift (pas le nom de la base de données)
Région : la région AWS dans laquelle se trouve le cluster, telle que us-east-1

4.    Sur la page de profil de connexion du cluster, choisissez Test.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?