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()
Usar o IAM para recuperar credenciais e conectar-se ao Amazon Redshift
Você pode usar a versão 2 do driver JDBC fornecido pelo Amazon Redshift para se conectar ao Amazon Redshift com o conector do Spark. Para usar AWS Identity and Access Management (IAM), configure seu URL do JDBC para usar a autenticação do IAM. Para se conectar a um cluster do Redshift pelo Amazon EMR, você deve dar ao perfil do IAM as permissões para recuperar credenciais temporárias do IAM. Atribua as permissões ao perfil do IAM para que ele possa recuperar credenciais e executar operações do Amazon S3.
-
Redshift: GetClusterCredentials (para clusters provisionados do Amazon Redshift)
-
Redshift: DescribeClusters (para clusters provisionados do Amazon Redshift)
-
Redshift: GetWorkgroup (para grupos de trabalho sem servidor do Amazon Redshift)
-
Redshift: GetCredentials (para grupos de trabalho sem servidor do Amazon Redshift)
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 o perfil do IAM durante as operações COPY
e UNLOAD
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
O exemplo a seguir usa a autenticação do IAM 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()