Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Autenticación con la integración de Amazon Redshift para Apache Spark
AWS Secrets Manager Utilización para recuperar credenciales y conectarse a Amazon Redshift
El siguiente ejemplo de código muestra cómo recuperar credenciales AWS Secrets Manager para conectarse a un clúster de Amazon Redshift con la PySpark interfaz de Apache Spark en 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()
Uso de IAM para recuperar credenciales y conectarse a Amazon Redshift
Puede utilizar el controlador JDBC versión 2 proporcionado por Amazon Redshift para conectarse a Amazon Redshift con el conector de Spark. Para usar AWS Identity and Access Management (IAM), configure la URL de JDBC para usar la autenticación de IAM. Para conectarse a un clúster de Redshift desde Amazon EMR, debe conceder a su rol de IAM permiso para recuperar credenciales de IAM temporales. Asigne los siguientes permisos a su rol de IAM para que pueda recuperar credenciales y ejecutar operaciones de Amazon S3.
-
Redshift: GetClusterCredentials (para clústeres de Amazon Redshift aprovisionados)
-
Redshift: DescribeClusters (para clústeres de Amazon Redshift aprovisionados)
-
Redshift: GetWorkgroup (para grupos de trabajo sin servidor de Amazon Redshift)
-
Redshift: GetCredentials (para grupos de trabajo sin servidor de Amazon Redshift)
Para obtener más información sobre GetClusterCredentials, consulte Políticas de recursos de GetClusterCredentials.
También debe asegurarse de que Amazon Redshift puede asumir el rol de IAM durante las operaciones COPY y UNLOAD.
En el siguiente ejemplo, se utiliza la autenticación de IAM entre Spark y 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()