Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Autenticazione con l'integrazione di Amazon Redshift per Apache Spark
Utilizzo AWS Secrets Manager per recuperare le credenziali e connettersi ad Amazon Redshift
Il seguente esempio di codice mostra come recuperare le credenziali AWS Secrets Manager per la connessione a un cluster Amazon Redshift con PySpark l'interfaccia per Apache Spark in Python.
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()
Utilizzo di IAM per recuperare le credenziali ed effettuare la connessione ad Amazon Redshift
È possibile utilizzare il driver JDBC versione 2 fornito da Amazon Redshift per connettersi all'endpoint Amazon Redshift con il connettore Spark. Per utilizzare AWS Identity and Access Management (IAM), configura l'URL JDBC per utilizzare l'autenticazione IAM. Per connetterti a un cluster Redshift da Amazon EMR, devi autorizzare il tuo ruolo IAM a recuperare credenziali IAM temporanee. Assegna le seguenti autorizzazioni al tuo ruolo IAM in modo che possa recuperare le credenziali ed eseguire operazioni Amazon S3.
-
Redshift: GetClusterCredentials (per i cluster Amazon Redshift forniti)
-
Redshift: DescribeClusters (per i cluster Amazon Redshift forniti)
-
Redshift: GetWorkgroup (per gruppi di lavoro Serverless Amazon Redshift)
-
Redshift: GetCredentials (per gruppi di lavoro Serverless Amazon Redshift)
Per ulteriori informazioni su GetClusterCredentials, consulta Policy delle risorse per GetClusterCredentials.
Inoltre, devi assicurarti che Amazon Redshift possa assumere il ruolo IAM durante le operazioni COPY e UNLOAD.
L'esempio seguente utilizza l'autenticazione IAM tra Spark e 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()