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
Le seguenti sezioni mostrano le opzioni di autenticazione con Amazon Redshift durante l'integrazione con Apache Spark. Le sezioni mostrano come recuperare le credenziali di accesso e anche dettagli sull'utilizzo del driver con autenticazione. JDBC IAM
Utilizzalo AWS Secrets Manager per recuperare le credenziali e connetterti ad Amazon Redshift
Puoi archiviare le credenziali in Secrets Manager per autenticarti in modo sicuro su Amazon Redshift. Puoi fare in modo che il tuo job Spark chiami GetSecretValue
API per recuperare le credenziali:
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
Usa l'autenticazione IAM basata EMR su Amazon sul ruolo EKS di esecuzione del lavoro
A partire da EMR Amazon nella EKS versione 6.9.0, il driver Amazon JDBC Redshift versione 2.1 o successiva viene integrato nell'ambiente. Con JDBC il driver 2.1 e versioni successive, puoi specificare JDBC URL e non includere il nome utente e la password non elaborati. È invece possibile specificare uno schema jdbc:redshift:iam://
. Questo ordina al JDBC driver di utilizzare il tuo ruolo Amazon EMR on EKS Job Execution per recuperare automaticamente le credenziali.
Per ulteriori informazioni, consulta Configurare una ODBC connessione JDBC or per utilizzare IAM le credenziali nella Amazon Redshift Management Guide.
L'esempio seguente URL utilizza uno jdbc:redshift:iam://
schema.
jdbc:redshift:iam://
examplecluster.abc123xyz789
.us-west-2
.redshift.amazonaws.com:5439/dev
Le autorizzazioni seguenti sono necessarie per il ruolo di esecuzione di processo quando soddisfa le condizioni richieste.
Autorizzazione | Condizioni richieste per il ruolo di esecuzione di processo |
---|---|
redshift:GetClusterCredentials
|
Richiesto al JDBC conducente per recuperare le credenziali da Amazon Redshift |
redshift:DescribeCluster
|
Obbligatorio se si specifica il cluster Amazon Redshift e JDBC URL al Regione AWS posto dell'endpoint |
redshift-serverless:GetCredentials
|
Richiesto al JDBC driver per recuperare le credenziali da Amazon Redshift Serverless |
redshift-serverless:GetWorkgroup
|
Obbligatorio se utilizzi Amazon Redshift Serverless e specifichi il nome del gruppo URL di lavoro e la regione |
La policy relativa al ruolo di esecuzione di processo dovrebbe disporre delle seguenti autorizzazioni.
{ "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
" ] }
Effettua l'autenticazione su Amazon Redshift con un driver JDBC
Imposta nome utente e password all'interno di JDBC URL
Per autenticare un job Spark in un cluster Amazon Redshift, puoi specificare il nome e la password del database Amazon Redshift nel. JDBC URL
Nota
Se trasmetti le credenziali del database inURL, chiunque abbia accesso al database URL può accedere anche alle credenziali. Questo metodo non è generalmente consigliato perché non è un'opzione sicura.
Se la sicurezza non è un problema per la vostra applicazione, potete utilizzare il seguente formato per impostare il nome utente e la password in: JDBC URL
jdbc:redshift://redshifthost:5439/database?user=
username
&password=password