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
In den folgenden Abschnitten werden Authentifizierungsoptionen mit Amazon Redshift bei der Integration mit Apache Spark beschrieben. In den Abschnitten wird gezeigt, wie Sie Anmeldeinformationen abrufen können, sowie Einzelheiten zur Verwendung des JDBC-Treibers mit IAM-Authentifizierung.
Wird verwendet AWS Secrets Manager , um Anmeldeinformationen abzurufen und eine Verbindung zu Amazon Redshift herzustellen
Sie können Anmeldeinformationen in Secrets Manager speichern, um sich sicher bei Amazon Redshift zu authentifizieren. Sie können Ihren Spark-Auftrag die GetSecretValue
-API aufrufen lassen, um die Anmeldeinformationen 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
Verwenden Sie die IAM-basierte Authentifizierung mit Amazon EMR in der EKS-Auftragsausführungsrolle
Ab Amazon EMR in EKS-Version 6.9.0 ist der Amazon-Redshift-JDBC-Treiber Version 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 Amazon EMR in EKS-Auftragsausführungsrolle 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.
Die folgende Beispiel-URL verwendet ein jdbc:redshift:iam://
-Schema.
jdbc:redshift:iam://
examplecluster.abc123xyz789
.us-west-2
.redshift.amazonaws.com:5439/dev
Die folgenden Berechtigungen sind für Ihre Auftragsausführungsrolle erforderlich, wenn sie die angegebenen Bedingungen erfüllt.
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 |
Ihre Auftragsausführungsrollenrichtlinie sollte über die folgenden Berechtigungen verfügen.
{ "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials", "redshift:DescribeCluster", "redshift-serverless:GetCredentials", "redshift-serverless:GetWorkgroup" ], "Resource": [ "arn:aws:redshift:
AWS_REGION
:ACCOUNT_ID
:dbname:CLUSTER_NAME
/DATABASE_NAME
", "arn:aws:redshift:AWS_REGION
:ACCOUNT_ID
:dbuser:DATABASE_NAME
/USER_NAME
" ] }
Authentifizierung bei Amazon Redshift mit einem JDBC-Treiber
Geben Sie den Benutzernamen und das Passwort in der JDBC-URL ein
Um einen Spark-Auftrag bei einem Amazon-Redshift-Cluster zu authentifizieren, können Sie den Namen und das Passwort der Amazon-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