Authentifizierung mit der Amazon-Redshift-Integration für Apache Spark - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Authentifizierung mit der Amazon-Redshift-Integration für Apache Spark

Wird verwendet AWS Secrets Manager , um Anmeldeinformationen abzurufen und eine Verbindung zu Amazon Redshift herzustellen

Sie können sich sicher bei Amazon Redshift authentifizieren, indem Sie die Anmeldeinformationen in Secrets Manager speichern und den Spark-Job die GetSecretValue API aufrufen lassen, um sie abzurufen:

from pyspark.sql import SQLContextimport boto3 sc = # existing SparkContext sql_context = SQLContext(sc) secretsmanager_client = boto3.client('secretsmanager', region_name=os.getenv('AWS_REGION')) secret_manager_response = secretsmanager_client.get_secret_value( SecretId='string', VersionId='string', VersionStage='string' ) username = # get username from secret_manager_response password = # get password from secret_manager_response url = "jdbc:redshift://redshifthost:5439/database?user=" + username + "&password=" + password # Access to Redshift cluster using Spark

Authentifizierung bei Amazon Redshift mit einem JDBC-Treiber

Geben Sie den Benutzernamen und das Passwort in der JDBC-URL ein

Sie können einen Spark-Job bei einem Amazon Redshift-Cluster authentifizieren, indem Sie den Namen und das Passwort der Amazon Redshift Redshift-Datenbank in der JDBC-URL angeben.

Anmerkung

Wenn Sie die Datenbankanmeldedaten in der URL übergeben, kann jeder, der Zugriff auf die URL hat, auch auf die Anmeldeinformationen zugreifen. Diese Methode wird im Allgemeinen nicht empfohlen, da sie keine sichere Option ist.

Wenn Sicherheit für Ihre Anwendung kein Problem darstellt, können Sie das folgende Format verwenden, um den Benutzernamen und das Passwort in der JDBC-URL festzulegen:

jdbc:redshift://redshifthost:5439/database?user=username&password=password

Verwenden Sie die IAM-basierte Authentifizierung mit der Rolle Amazon EMR Serverless Job Execution

Ab Amazon EMR Serverless Version 6.9.0 ist der Amazon Redshift JDBC-Treiber 2.1 oder höher in der Umgebung enthalten. Mit dem JDBC-Treiber 2.1 und höher können Sie die JDBC-URL angeben, ohne den unformatierten Benutzernamen und das Passwort anzugeben.

Stattdessen können Sie ein jdbc:redshift:iam://-Schema angeben. Dadurch wird der JDBC-Treiber angewiesen, Ihre EMR Serverless Job Execution Rolle zu verwenden, um die Anmeldeinformationen automatisch abzurufen. Weitere Informationen finden Sie unter Konfigurieren Sie eine JDBC- oder ODBC-Verbindung für die Verwendung von IAM-Anmeldeinformationen im Amazon-Redshift-Verwaltungshandbuch. Ein Beispiel für diese URL ist:

jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev

Die folgenden Berechtigungen sind für Ihre Jobausführungsrolle erforderlich, wenn die angegebenen Bedingungen erfüllt sind:

Berechtigung Bedingungen, sofern sie für die Rolle Auftragsausführung erforderlich sind
redshift:GetClusterCredentials Erforderlich, damit der JDBC-Treiber die Anmeldeinformationen von Amazon Redshift abrufen kann
redshift:DescribeCluster Erforderlich, wenn Sie den Amazon-Redshift-Cluster und AWS-Region in der JDBC-URL anstelle des Endpunkts angeben
redshift-serverless:GetCredentials Erforderlich, damit der JDBC-Treiber die Anmeldeinformationen von Amazon Redshift Serverless abrufen kann
redshift-serverless:GetWorkgroup Erforderlich, wenn Sie Amazon Redshift Serverless verwenden und die URL in Form von Arbeitsgruppenname und Region angeben

Verbindung zu Amazon Redshift innerhalb einer anderen VPC herstellen

Wenn Sie einen bereitgestellten Amazon Redshift-Cluster oder eine Amazon Redshift Serverless-Arbeitsgruppe unter einer VPC einrichten, müssen Sie die VPC-Konnektivität für Ihre Amazon EMR Serverless-Anwendung konfigurieren, um auf die Ressourcen zugreifen zu können. Weitere Informationen zur Konfiguration der VPC-Konnektivität in einer serverlosen EMR-Anwendung finden Sie unter. Konfiguration des VPC-Zugriffs für serverlose EMR-Anwendungen zur Verbindung mit Daten

  • Wenn Ihr bereitgestellter Amazon Redshift-Cluster oder Ihre Amazon Redshift Serverless-Arbeitsgruppe öffentlich zugänglich ist, können Sie bei der Erstellung von EMR-Serverless-Anwendungen ein oder mehrere private Subnetze angeben, an die ein NAT-Gateway angeschlossen ist.

  • Wenn Ihr bereitgestellter Amazon Redshift-Cluster oder Ihre Amazon Redshift Serverless-Arbeitsgruppe nicht öffentlich zugänglich ist, müssen Sie einen von Amazon Redshift verwalteten VPC-Endpunkt für Ihren Amazon Redshift Redshift-Cluster erstellen, wie unter beschrieben. Konfiguration des VPC-Zugriffs für serverlose EMR-Anwendungen zur Verbindung mit Daten Alternativ können Sie Ihre Amazon Redshift Serverless-Arbeitsgruppe wie unter Verbinden mit Amazon Redshift Serverless im Amazon Redshift Management Guide beschrieben erstellen. Sie müssen Ihren Cluster oder Ihre Untergruppe den privaten Subnetzen zuordnen, die Sie bei der Erstellung Ihrer EMR Serverless-Anwendung angeben.

Anmerkung

Wenn Sie die IAM-basierte Authentifizierung verwenden und an Ihre privaten Subnetze für die EMR Serverless-Anwendung kein NAT-Gateway angeschlossen ist, müssen Sie in diesen Subnetzen auch einen VPC-Endpunkt für Amazon Redshift oder Amazon Redshift Serverless erstellen. Auf diese Weise kann der JDBC-Treiber die Anmeldeinformationen abrufen.