Autenticación con la integración de Amazon Redshift para Apache Spark - Amazon EMR

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()

IAMUtilización para recuperar credenciales y conectarse a Amazon Redshift

Puede utilizar el controlador de la JDBC versión 2 proporcionado por Amazon Redshift para conectarse a Amazon Redshift con el conector Spark. Para usar AWS Identity and Access Management (IAM), configure la autenticación para usar. JDBC URL IAM Para conectarte a un clúster de Redshift desde AmazonEMR, debes dar permiso a tu IAM rol para recuperar las credenciales temporalesIAM. Asigne los siguientes permisos a su IAM función para que pueda recuperar las credenciales y ejecutar las operaciones de Amazon S3.

Para obtener más información sobre GetClusterCredentials, consulte Políticas de recursos de GetClusterCredentials.

También debe asegurarse de que Amazon Redshift pueda asumir esa IAM función durante COPY las UNLOAD operaciones.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

En el siguiente ejemplo, se utiliza la IAM autenticación 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()