Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengautentikasi dengan integrasi Amazon Redshift untuk Apache Spark
Menggunakan AWS Secrets Manager untuk mengambil kredensyal dan terhubung ke Amazon Redshift
Contoh kode berikut menunjukkan bagaimana Anda dapat menggunakan AWS Secrets Manager untuk mengambil kredensyal untuk terhubung ke cluster Amazon Redshift dengan PySpark antarmuka untuk Apache Spark di 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()
Menggunakan IAM untuk mengambil kredensyal dan terhubung ke Amazon Redshift
Anda dapat menggunakan driver JDBC versi 2 yang disediakan Amazon Redshift untuk terhubung ke Amazon Redshift dengan konektor Spark. Untuk menggunakan AWS Identity and Access Management (IAM), konfigurasikan Anda JDBC URL untuk menggunakan IAM otentikasi. Untuk menyambung ke klaster Redshift dari AmazonEMR, Anda harus memberikan izin IAM peran Anda untuk mengambil kredensi sementara. IAM Tetapkan izin berikut ke IAM peran Anda sehingga dapat mengambil kredensil dan menjalankan operasi Amazon S3.
-
Redshift: GetClusterCredentials (untuk cluster Amazon Redshift yang disediakan)
-
Redshift: DescribeClusters (untuk cluster Amazon Redshift yang disediakan)
-
Redshift: GetWorkgroup (untuk grup kerja Amazon Redshift Tanpa Server)
-
Redshift: GetCredentials (untuk grup kerja Amazon Redshift Tanpa Server)
Untuk informasi selengkapnyaGetClusterCredentials
, lihat Kebijakan sumber daya untuk GetClusterCredentials
.
Anda juga harus memastikan bahwa Amazon Redshift dapat mengambil IAM peran selama COPY
dan UNLOAD
operasi.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Contoh berikut menggunakan IAM otentikasi antara Spark dan 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()