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
Utiliser AWS Secrets Manager 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
API le 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
Authentifiez-vous auprès d'Amazon Redshift avec un chauffeur JDBC
Définissez le nom d'utilisateur et le mot de passe dans JDBC URL
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 le. JDBC URL
Note
Si vous transmettez les informations d'identification de la base de données dans leURL, toute personne ayant accès au 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 un problème pour votre application, vous pouvez utiliser le format suivant pour définir le nom d'utilisateur et le mot de passe dans JDBC URL :
jdbc:redshift://redshifthost:5439/database?user=
username
&password=password
Utiliser l'authentification IAM basée sur le rôle d'exécution des tâches Amazon EMR Serverless
À partir de la version 6.9.0 d'Amazon EMR Serverless, le pilote Amazon JDBC Redshift 2.1 ou supérieur est intégré à l'environnement. Avec JDBC le pilote 2.1 ou supérieur, vous pouvez spécifier le nom d'utilisateur JDBC URL et le mot de passe bruts 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 JDBC pilote d'utiliser votre rôle d'exécution de tâches EMR sans serveur pour récupérer automatiquement les informations d'identification. Consultez Configurer une ODBC connexion JDBC ou pour utiliser les IAM informations d'identification dans le guide de gestion Amazon Redshift pour plus d'informations. Voici un exemple de URL ceci :
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 :
Autorisation | Conditions requises pour le rôle d'exécution des tâches |
---|---|
redshift:GetClusterCredentials
|
Obligatoire pour que JDBC le chauffeur récupère les informations d'identification auprès d'Amazon Redshift |
redshift:DescribeCluster
|
Obligatoire si vous spécifiez le cluster Amazon Redshift et Région AWS au JDBC URL lieu du point de terminaison |
redshift-serverless:GetCredentials
|
Obligatoire pour que JDBC le conducteur récupère les informations d'identification depuis Amazon Redshift Serverless |
redshift-serverless:GetWorkgroup
|
Obligatoire si vous utilisez Amazon Redshift Serverless et que vous spécifiez le nom du groupe URL de travail et la région |
Connexion à Amazon Redshift dans un autre VPC
Lorsque vous configurez un cluster Amazon Redshift provisionné ou un groupe de travail Amazon Redshift Serverless dans le cadre d'VPCun, vous devez configurer la VPC connectivité pour que votre application EMR Amazon Serverless puisse accéder aux ressources. Pour plus d'informations sur la configuration de VPC la connectivité sur une application EMR sans serveur, consultezConfiguration de VPC l'accès.
-
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 une passerelle est attachée lorsque vous NAT créez des applications sans serveur. EMR
-
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 VPC terminaison géré par Amazon Redshift pour votre cluster Amazon Redshift, comme décrit dans. Configuration de VPC l'accès 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 IAM basée et qu'aucune NAT passerelle n'est attachée à vos sous-réseaux privés pour l'application EMR Serverless, vous devez également créer un VPC point de terminaison sur ces sous-réseaux pour Amazon Redshift ou Amazon Redshift Serverless. De cette façon, le JDBC pilote peut récupérer les informations d'identification.