Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Authentification avec l'intégration Amazon Redshift pour Apache Spark
AWS Secrets Manager À utiliser pour récupérer les informations d'identification et se connecter à Amazon Redshift
Vous pouvez vous authentifier auprès d'Amazon Redshift en toute sécurité en stockant les informations d'identification dans Secrets Manager et en demandant à la tâche Spark d'appeler GetSecretValue
l'API pour les récupérer :
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
Authentification dans Amazon Redshift à l'aide d'un pilote JDBC
Définition du nom d'utilisateur et du mot de passe dans l'URL JDBC
Vous pouvez authentifier une tâche Spark auprès d'un cluster Amazon Redshift en spécifiant le nom et le mot de passe de la base de données Amazon Redshift dans l'URL JDBC.
Note
Si vous transmettez les informations d'identification de la base de données dans l'URL, toute personne ayant accès à l'URL peut également accéder aux informations d'identification. Cette méthode n'est généralement pas recommandée, car elle n'est pas une option sécurisée.
Si la sécurité n'est pas une préoccupation pour votre application, vous pouvez utiliser le format suivant pour définir le nom d'utilisateur et le mot de passe dans l'URL JDBC :
jdbc:redshift://redshifthost:5439/database?user=
username
&password=password
Utiliser l'authentification basée sur IAM avec le rôle d'exécution de tâches sans serveur Amazon EMR
À partir de la version 6.9.0 d'Amazon EMR Serverless, le pilote Amazon Redshift JDBC 2.1 ou supérieur est intégré à l'environnement. Avec le pilote JDBC en version 2.1 et supérieure, vous pouvez spécifier l'URL JDBC et ne pas inclure le nom d'utilisateur et le mot de passe bruts.
Au lieu de cela, vous pouvez indiquer un schéma jdbc:redshift:iam://
. Cela commande au pilote JDBC d'utiliser votre rôle d'exécution de tâche EMR Serverless pour récupérer automatiquement les informations d'identification. Pour plus d'informations, consultez la rubrique Configuration d'une connexion JDBC ou ODBC pour utiliser les informations d'identification IAM dans le Guide de gestion Amazon Redshift. Voici un exemple de cette URL :
jdbc:redshift:iam://
examplecluster.abc123xyz789
.us-west-2
.redshift.amazonaws.com:5439/dev
Les autorisations suivantes sont requises pour votre rôle d'exécution de tâches lorsque les conditions fournies sont remplies :
Autorisations | Conditions requises pour le rôle d'exécution des tâches |
---|---|
redshift:GetClusterCredentials
|
Requis pour que le pilote JDBC récupère les informations d'identification à partir d'Amazon Redshift |
redshift:DescribeCluster
|
Requis si vous indiquez le cluster Amazon Redshift et la Région AWS dans l'URL JDBC au lieu du point de terminaison |
redshift-serverless:GetCredentials
|
Requis pour que le pilote JDBC récupère les informations d'identification à partir d'Amazon Redshift sans serveur |
redshift-serverless:GetWorkgroup
|
Obligatoire si vous utilisez Amazon Redshift Serverless et que vous spécifiez l'URL en termes de nom du groupe de travail et de région |
Connexion à Amazon Redshift au sein d'un autre VPC
Lorsque vous configurez un cluster Amazon Redshift provisionné ou un groupe de travail Amazon Redshift Serverless dans le cadre d'un VPC, vous devez configurer la connectivité VPC pour que votre application Amazon EMR Serverless puisse accéder aux ressources. Pour plus d'informations sur la configuration de la connectivité VPC sur une application EMR sans serveur, consultez. Configuration de l'accès VPC pour que les applications EMR sans serveur se connectent aux données
-
Si votre cluster Amazon Redshift ou votre groupe de travail Amazon Redshift Serverless provisionné est accessible au public, vous pouvez spécifier un ou plusieurs sous-réseaux privés auxquels est attachée une passerelle NAT lorsque vous créez des applications EMR Serverless.
-
Si votre cluster Amazon Redshift ou votre groupe de travail Amazon Redshift Serverless provisionné n'est pas accessible au public, vous devez créer un point de terminaison VPC géré par Amazon Redshift pour votre cluster Amazon Redshift, comme décrit dans. Configuration de l'accès VPC pour que les applications EMR sans serveur se connectent aux données Vous pouvez également créer votre groupe de travail Amazon Redshift Serverless comme décrit dans la section Connexion à Amazon Redshift Serverless du guide de gestion Amazon Redshift. Vous devez associer votre cluster ou votre sous-groupe aux sous-réseaux privés que vous spécifiez lorsque vous créez votre application EMR Serverless.
Note
Si vous utilisez l'authentification basée sur IAM et qu'aucune passerelle NAT n'est attachée à vos sous-réseaux privés pour l'application EMR Serverless, vous devez également créer un point de terminaison VPC sur ces sous-réseaux pour Amazon Redshift ou Amazon Redshift Serverless. De cette façon, le pilote JDBC peut récupérer les informations d'identification.