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 JDBC con l'autenticazione 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 processo Spark chiami l'API GetSecretValue
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
Utilizzo dell'autenticazione basata su IAM con il ruolo di esecuzione di processo Amazon EMR su EKS
A partire da Amazon EMR su EKS rilascio 6.9.0, il driver Amazon Redshift JDBC versione 2.1 o superiore è integrato nell'ambiente. Con il driver JDBC 2.1 e versioni successive, è possibile specificare l'URL di JDBC evitando di includere il nome utente e la password non elaborati. È invece possibile specificare uno schema jdbc:redshift:iam://
. Ciò istruisce il driver JDBC di utilizzare il tuo ruolo di esecuzione di processo Amazon EMR su EKS per il recupero automatico delle credenziali.
Per ulteriori informazioni, consulta la sezione Configure a JDBC or ODBC connection to use IAM credentials (Configurazione di una connessione JDBC oppure ODBC per l'utilizzo delle credenziali IAM) nella Guida alla gestione di Amazon Redshift.
L'URL di esempio seguente utilizza uno schema jdbc:redshift:iam://
.
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
|
Obbligatoria affinché il driver JDBC recuperi le credenziali da Amazon Redshift |
redshift:DescribeCluster
|
Obbligatoria se specifichi il cluster Amazon Redshift e Regione AWS nell'URL di JDBC anziché nell'endpoint |
redshift-serverless:GetCredentials
|
Obbligatoria affinché il driver JDBC recuperi le credenziali da Amazon Redshift Serverless |
redshift-serverless:GetWorkgroup
|
Obbligatoria se utilizzi Amazon Redshift Serverless e specifichi l'URL in termini di nome del gruppo di lavoro e 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
" ] }
Autenticazione su Amazon Redshift con un driver JDBC
Impostazione di nome utente e password all'interno dell'URL di JDBC
Per autenticare un processo Spark su un cluster Amazon Redshift, è possibile specificare il nome e la password del database Amazon Redshift nell'URL di JDBC.
Nota
Se passi le credenziali del database nell'URL, anche chiunque abbia accesso all'URL può accedere alle credenziali. Questo metodo non è generalmente consigliato perché non è un'opzione sicura.
Se la sicurezza non è un problema per la tua applicazione, puoi utilizzare il formato seguente per impostare il nome utente e la password nell'URL di JDBC:
jdbc:redshift://redshifthost:5439/database?user=
username
&password=password