Autenticação com a integração do Amazon Redshift para Apache Spark - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Autenticação com a integração do Amazon Redshift para Apache Spark

Usando AWS Secrets Manager para recuperar credenciais e conectar-se ao Amazon Redshift

O exemplo de código a seguir mostra como você pode usar AWS Secrets Manager para recuperar credenciais para se conectar a um cluster do Amazon Redshift com a interface PySpark do Apache Spark em 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()

Usando IAM para recuperar credenciais e conectar-se ao Amazon Redshift

Você pode usar o driver da JDBC versão 2 fornecido pelo Amazon Redshift para se conectar ao Amazon Redshift com o conector Spark. Para usar AWS Identity and Access Management (IAM), configure sua IAM autenticação JDBC URL para usar. Para se conectar a um cluster do Redshift da AmazonEMR, você deve dar permissão à sua IAM função para recuperar credenciais temporárias. IAM Atribua as seguintes permissões à sua IAM função para que ela possa recuperar credenciais e executar operações do Amazon S3.

Para obter mais informações sobre GetClusterCredentials, consulte Políticas de recursos para GetClusterCredentials.

Você também deve garantir que o Amazon Redshift possa assumir a IAM função durante COPY as UNLOAD operações.

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

O exemplo a seguir usa IAM autenticação entre o Spark e o 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()