Mit der Amazon-Redshift-Integration für Apache Spark authentifizieren - 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.

Mit der Amazon-Redshift-Integration für Apache Spark authentifizieren

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

Das folgende Codebeispiel zeigt, wie Sie Anmeldeinformationen abrufen können AWS Secrets Manager , um eine Verbindung zu einem Amazon Redshift Redshift-Cluster mit der PySpark Schnittstelle für Apache Spark in Python herzustellen.

from pyspark.sql import SQLContext import boto3 sc = # existing SparkContext sql_context = SQLContext(sc) secretsmanager_client = boto3.client('secretsmanager') 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 # Read data from a table df = sql_context.read \ .format("io.github.spark_redshift_community.spark.redshift") \ .option("url", url) \ .option("dbtable", "my_table") \ .option("tempdir", "s3://path/for/temp/data") \ .load()

Wird verwendetIAM, um Anmeldeinformationen abzurufen und eine Verbindung zu Amazon Redshift herzustellen

Sie können den von Amazon Redshift bereitgestellten JDBC Version 2-Treiber verwenden, um über den Spark-Connector eine Verbindung zu Amazon Redshift herzustellen. Um AWS Identity and Access Management (IAM) zu verwenden, konfigurieren Sie Ihr JDBC URL System so, dass es die Authentifizierung verwendet. IAM Um eine Verbindung zu einem Redshift-Cluster von Amazon herzustellenEMR, müssen Sie Ihrer IAM Rolle die Erlaubnis erteilen, temporäre IAM Anmeldeinformationen abzurufen. Weisen Sie Ihrer IAM Rolle die folgenden Berechtigungen zu, damit sie Anmeldeinformationen abrufen und Amazon S3 S3-Operationen ausführen kann.

Weitere Informationen zu GetClusterCredentials finden Sie unter Ressourcenrichtlinien für GetClusterCredentials.

Sie müssen auch sicherstellen, dass Amazon Redshift die IAM Rolle während des COPY UNLOAD Betriebs übernehmen kann.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Das folgende Beispiel verwendet die IAM Authentifizierung zwischen Spark und Amazon Redshift:

from pyspark.sql import SQLContext import boto3 sc = # existing SparkContext sql_context = SQLContext(sc) url = "jdbc:redshift:iam//redshift-host:redshift-port/db-name" iam_role_arn = "arn:aws:iam::account-id:role/role-name" # Read data from a table df = sql_context.read \ .format("io.github.spark_redshift_community.spark.redshift") \ .option("url", url) \ .option("aws_iam_role", iam_role_arn) \ .option("dbtable", "my_table") \ .option("tempdir", "s3a://path/for/temp/data") \ .mode("error") \ .load()