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-Job den aufrufen lassen GetSecretValue
API, 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 auf der EKS Jobausführungsrolle
Ab EKS Version 6.9.0 von EMR Amazon ist der Amazon Redshift JDBC Redshift-Treiber Version 2.1 oder höher in der Umgebung enthalten. Bei JDBC Treiber 2.1 und höher können Sie den unformatierten Benutzernamen JDBC URL und das Passwort angeben und nicht angeben. Stattdessen können Sie ein jdbc:redshift:iam://
-Schema angeben. Dadurch wird der JDBC Treiber angewiesen, Ihre Amazon EMR on EKS Job Execution-Rolle zu verwenden, um die Anmeldeinformationen automatisch abzurufen.
Weitere Informationen finden Sie unter Konfiguration einer JDBC ODBC OR-Verbindung für die Verwendung von IAM Anmeldeinformationen im Amazon Redshift Management Guide.
Das 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 Redshift-Cluster und AWS-Region im Endpunkt „JDBCURLinstead of“ 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 den Namen URL der Arbeitsgruppe und die 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
" ] }
Authentifizieren Sie sich mit einem Treiber bei Amazon Redshift JDBC
Geben Sie den Benutzernamen und das Passwort im JDBC URL
Um einen Spark-Job bei einem Amazon Redshift-Cluster zu authentifizieren, können Sie den Namen und das Passwort der Amazon Redshift Redshift-Datenbank in der angeben. JDBC URL
Anmerkung
Wenn Sie die Datenbankanmeldedaten in übergeben, URL kann jederURL, der Zugriff auf die hat, auch auf die Anmeldeinformationen zugreifen. Diese Methode wird im Allgemeinen nicht empfohlen, da sie keine sichere Option ist.
Wenn die Sicherheit Ihrer Anwendung kein Problem darstellt, können Sie das folgende Format verwenden, um den Benutzernamen und das Passwort in der Datei festzulegen JDBCURL:
jdbc:redshift://redshifthost:5439/database?user=
username
&password=password