Wie greife ich von meinem lokalen Computer aus auf einen privaten Amazon Redshift-Cluster zu?

Lesedauer: 5 Minute
0

Ich möchte meinen lokalen Computer verwenden, um auf einen Amazon Redshift-Cluster zuzugreifen, der sich in einem privaten Subnetz von Amazon Virtual Private Cloud (Amazon VPC) befindet.

Kurzbeschreibung

Verwenden einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance und SQL Workbench/J, um einen SSH-Tunnel zu erstellen. Der Tunnel leitet den gesamten eingehenden Verkehr vom lokalen Computer zum privaten Amazon Redshift-Cluster weiter.

Behebung

Amazon VPC, EC2-Instance und Amazon Redshift-Cluster erstellen

Führen Sie die folgenden Schritte aus, um die Amazon VPC, die EC2-Instance und den Amazon Redshift-Cluster zu erstellen:

  1. Erstellen Sie eine Amazon VPC mit öffentlichen und privaten Subnetzen.

  2. Starten Sie eine EC2-Instance von einem Amazon Linux 2 Amazon Machine Image (AMI) im öffentlichen Subnetz der Amazon VPC. Wenn Sie die Instance erstellen, wählen Sie die folgenden Optionen:
    Wählen Sie unter Öffentliche IP automatisch zuweisen die Option Aktivieren aus. Oder weisen Sie der Instance eine Elastic IP-Adresse zu.
    Erstellen Sie eine neue Sicherheitsgruppe mit einer SSH-Regel.
    Wählen Sie für Quelle die Option Benutzerdefiniert aus, und geben Sie dann Ihren CIDR-Block ein. Oder wählen Sie Meine IP aus.

  3. Erstellen Sie auf der Amazon Redshift-Konsole ein Cluster-Subnetz. Geben Sie folgende Informationen ein:
    Wählen Sie für VPC-ID die ID Ihrer Amazon VPC aus.
    Wählen Sie für Subnetz-ID die ID des privaten Subnetzes aus.

  4. Erstellen Sie eine neue Sicherheitsgruppe.

  5. Fügen Sie der Sicherheitsgruppe eine Regel hinzu, die eingehenden Datenverkehr von der Sicherheitsgruppe der Instance zulässt. Geben Sie folgende Informationen ein:
    Wählen Sie für Typ die Option Benutzerdefiniertes TCP aus.
    Geben Sie für Anschlussbereich den Standard-Anschluss für Amazon Redshift ein, 5439.
    Wählen Sie unter Quelle die Option Benutzerdefiniert aus, und geben Sie dann den Namen Ihrer Sicherheitsgruppe ein.

  6. Starten Sie einen neuen Amazon Redshift-Cluster oder stellen Sie einen Cluster aus einem Snapshot wieder her. Wählen Sie auf der Seite Zusätzliche Konfiguration die folgenden Optionen aus:
    Wählen Sie für VPC auswählen Ihre Amazon VPC aus.
    Wählen Sie für Cluster-Subnetzgruppe Ihre Subnetzgruppe aus.
    Wählen Sie für Öffentlich zugänglich Nein aus.
    Wählen Sie für VPC-Sicherheitsgruppen Ihre Sicherheitsgruppe aus. Warten Sie, bis sich der Cluster im Status Verfügbar befindet.

  7. Führen Sie den folgenden Befehl aus, um von Ihrem lokalen Computer aus eine Verbindung zur EC2-Instance herzustellen:

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

    **Hinweis:**Ersetzen Sie your\ _key.pem und your\ _EC2\ _endpoint durch Ihre Werte. Weitere Informationen finden Sie unter Herstellen einer Verbindung zu Ihrer Linux-Instance von Linux oder macOS aus mithilfe von SSH.

  8. Führen Sie den folgenden Befehl aus, um telnet zu installieren:

    sudo yum install telnet
  9. Um telnet zum Testen der Verbindung zu Ihrem Amazon Redshift-Cluster zu verwenden, führen Sie den folgenden Befehl aus:

    telnet cluster-endpoint cluster-port

    Hinweis: Ersetzen Sie cluster-endpoint und cluster-port durch Ihre Werte.
    Oder führen Sie den folgenden Befehl aus, um mit dig zu bestätigen, dass Ihr lokaler Computer die private IP-Adresse des Amazon Redshift-Clusters erreichen kann:

    dig cluster-endpoint

    **Hinweis:**Ersetzen Sie cluster-endpoint durch Ihren Cluster-Endpunkt.

Erstellen Sie den Tunnel

Gehen Sie wie folgt vor, um einen Tunnel zu erstellen:

  1. Installieren Sie SQL Workbench/J auf Ihrem lokalen Computer.
  2. Laden Sie den neuesten Amazon Redshift JDBC-Treiber herunter.
  3. Verwenden Sie in SQL Workbench/J den JDBC-Treiber, um ein Verbindungsprofil zu erstellen.
  4. Um die SSH-Verbindung in SQL Workbench/J zu konfigurieren, wählen Sie SSH und geben Sie dann die folgenden Informationen ein:
    Geben Sie für den SSH-Hostnamen die öffentliche IP-Adresse oder den DNS der EC2-Instance ein.
    Geben Sie für den SSH-Anschluss 22 ein.
    Geben Sie für den Benutzernamen, EC2-Benutzer ein.
    Geben Sie für Private Key-Datei die PEM-Datei ein, die Sie beim Erstellen der EC2-Instance heruntergeladen haben.
    Lassen Sie das Feld für Passwort leer.
    Geben Sie für Lokaler Anschluss einen beliebigen freien lokalen Anschluss ein. Ihr Amazon Redshift-Cluster verwendet standardmäßig Anschluss 5439.
    Geben Sie für DB-Hostname den Cluster-Endpunkt ein. Der Endpunkt darf weder die Anschlussnummer noch den Datenbanknamen enthalten.
    Geben Sie für DB-Anschluss 5439 ein.
    Wählen Sie die Option JDBC-URL neu schreiben.
  5. Wählen Sie OK aus.
  6. Stellen Sie sicher, dass Sie die JDBC-URL, den Superuser-Namen und das Passwort korrekt eingegeben haben.
  7. Um zu bestätigen, dass die Verbindung funktioniert, wählen Sie Test aus. Weitere Informationen finden Sie unter Herstellung einer Verbindung über einen SSH-Tunnel auf der SQL Workbench/J-Website.

(Optional) Ändern Sie die Verbindung für einen AWS Identity and Access Management (IAM)-Benutzer

Um als IAM-Benutzer eine Verbindung zum Amazon Redshift-Cluster herzustellen, führen Sie die folgenden Schritte aus, um das Verbindungsprofil zu ändern:

  1. Überprüfen Sie die IAM-Benutzerrichtlinie. Die IAM-Benutzerrichtlinie muss die Amazon Redshift-Aktionen GetClusterCredentials, JoinGroup und CreateClusterUser für die Ressourcen dbgroup, dbuser und dbname zulassen. Im Folgenden finden Sie ein Beispiel für eine IAM-Benutzerrichtlinie:
    {
        "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"
                ]
            }
        ]
    }
    **Hinweis:Ersetzen Sie us-west-2 durch die AWS-Region, in der sich Ihr Cluster befindet, 012345678912 durch Ihre AWS-Konto-ID und user\ _name durch den Namen des Amazon Redshift-Benutzers. Sie können auch „\ ***“ anstelle eines bestimmten Benutzernamens verwenden.
  2. Ändern Sie in SQL Workbench/J den ersten Teil der JDBC-URL des Verbindungsprofils in jdbc:redshift:iam. Ändern Sie beispielsweise die JDBC-URL in jdbc:redshift:iam://127.0.0.1:5439/example.
  3. Wählen Sie Erweiterte Eigenschaften, und geben Sie dann die folgenden Informationen ein:
    Geben Sie für AccessKeyID die Zugriffsschlüssel-ID des IAM-Benutzers ein.
    Geben Sie für SecretAccessKey den geheimen Zugriffsschlüssel des IAM-Benutzers ein.
    (Optional) Wählen Sie für DbGroups diese Option, um den IAM-Benutzer zu zwingen, einer vorhandenen Gruppe beizutreten.
    Geben Sie für DbUser den Namen des IAM-Benutzers ein.
    Setzen Sie die Option für AutoCreate auf true.
    Geben Sie für ClusterID den Namen des Amazon Redshift-Clusters ein.
    Geben Sie für Region die Region ein, in der sich der Cluster befindet, z. B. us-east-1.
  4. Wählen Sie auf der Seite mit dem Cluster-Verbindungsprofil die Option Test aus.

Ähnliche Informationen

Warum kann ich keine Verbindung mit meinem Amazon Redshift-Cluster herstellen?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 4 Monaten