Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Otentikasi dengan konektor Spark
Diagram berikut menjelaskan otentikasi antara Amazon S3, Amazon Redshift, driver Spark, dan pelaksana Spark.

Otentikasi antara Redshift dan Spark
Anda dapat menggunakan driver driver JDBC versi 2 yang disediakan Amazon Redshift untuk terhubung ke Amazon Redshift dengan konektor Spark dengan menentukan kredenal masuk. Untuk menggunakan IAM, konfigurasikan url JDBC Anda untuk menggunakan otentikasi IAM. Untuk menyambung ke kluster Redshift dari Amazon EMR atau AWS Glue, pastikan bahwa peran IAM Anda memiliki izin yang diperlukan untuk mengambil kredenal IAM sementara. Daftar berikut menjelaskan semua izin yang diperlukan peran IAM Anda untuk mengambil kredensil dan menjalankan operasi Amazon S3.
-
Redshift: GetClusterCredentials (untuk cluster Redshift yang disediakan)
-
Redshift: DescribeClusters (untuk cluster Redshift yang disediakan)
-
Redshift: GetWorkgroup (untuk grup kerja Amazon Redshift Tanpa Server)
-
Redshift: GetCredentials (untuk grup kerja Amazon Redshift Tanpa Server)
Untuk informasi selengkapnya GetClusterCredentials, lihat Kebijakan sumber daya untuk GetClusterCredentials.
Anda juga harus memastikan bahwa Amazon Redshift dapat mengambil peran IAM selama COPY
dan operasi. UNLOAD
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Jika Anda menggunakan driver JDBC terbaru, driver akan secara otomatis mengelola transisi dari sertifikat yang ditandatangani sendiri Amazon Redshift ke sertifikat ACM. Namun, Anda harus menentukan opsi SSL ke url JDBC.
Berikut ini adalah contoh cara menentukan URL driver JDBC dan terhubung aws_iam_role
ke Amazon Redshift.
df.write \ .format("io.github.spark_redshift_community.spark.redshift ") \ .option("url", "jdbc:redshift:iam://<the-rest-of-the-connection-string>") \ .option("dbtable", "<your-table-name>") \ .option("tempdir", "s3a://<your-bucket>/<your-directory-path>") \ .option("aws_iam_role", "<your-aws-role-arn>") \ .mode("error") \ .save()
Otentikasi antara Amazon S3 dan Spark
Jika Anda menggunakan peran IAM untuk mengautentikasi antara Spark dan Amazon S3, gunakan salah satu metode berikut:
-
AWS SDK for Java akan secara otomatis mencoba AWS menemukan kredensil dengan menggunakan rantai penyedia kredensi default yang diimplementasikan oleh kelas Default. AWSCredentials ProviderChain Untuk informasi selengkapnya, lihat Menggunakan Rantai Penyedia Kredenal Default.
-
Anda dapat menentukan AWS kunci melalui properti konfigurasi Hadoop
. Misalnya, jika tempdir
konfigurasi Anda menunjuk kes3n://
sistem file, setelfs.s3n.awsAccessKeyId
danfs.s3n.awsSecretAccessKey
properti dalam file konfigurasi XMLHadoop atau panggilsc.hadoopConfiguration.set()
untuk mengubah konfigurasi Hadoop global Spark.
Misalnya, jika Anda menggunakan sistem file s3n, tambahkan:
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID") sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "YOUR_SECRET_ACCESS_KEY")
Untuk sistem file s3a, tambahkan:
sc.hadoopConfiguration.set("fs.s3a.access.key", "YOUR_KEY_ID") sc.hadoopConfiguration.set("fs.s3a.secret.key", "YOUR_SECRET_ACCESS_KEY")
Jika Anda menggunakan Python, gunakan operasi berikut:
sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID") sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", "YOUR_SECRET_ACCESS_KEY")
-
Encode kunci otentikasi di URL.
tempdir
Misalnya, URIs3n://ACCESSKEY:SECRETKEY@bucket/path/to/temp/dir
mengkodekan key pair (ACCESSKEY
,SECRETKEY
).
Otentikasi antara Redshift dan Amazon S3
Jika Anda menggunakan perintah COPY dan UNLOAD dalam kueri, Anda juga harus memberikan Amazon S3 akses ke Amazon Redshift untuk menjalankan kueri atas nama Anda. Untuk melakukannya, pertama-tama otorisasi Amazon Redshift untuk mengakses layanan AWS lain, lalu otorisasi operasi COPY dan UNLOAD menggunakan peran IAM.
Sebagai praktik terbaik, kami menyarankan untuk melampirkan kebijakan izin ke peran IAM dan kemudian menetapkannya ke pengguna dan grup sesuai kebutuhan. Untuk informasi selengkapnya, lihat Identitas dan manajemen akses di Amazon Redshift.
Integrasi dengan AWS Secrets Manager
Anda dapat mengambil nama pengguna Redshift dan kredenal kata sandi Anda dari rahasia yang tersimpan di. AWS Secrets Manager Untuk secara otomatis memasok kredenal Redshift, gunakan parameter. secret.id
Untuk informasi selengkapnya tentang cara membuat rahasia kredensil Redshift, lihat Membuat rahasia database. AWS Secrets Manager
GroupID | ArtifactID | Revisi yang Didukung | Deskripsi |
---|---|---|---|
com.amazonaws.secretsmanager | aws-secretsmanager-jdbc | 1.0.12 | Perpustakaan Koneksi AWS Secrets Manager SQL untuk Java memungkinkan Pengembang Java untuk dengan mudah terhubung ke database SQL menggunakan rahasia yang disimpan di dalamnya. AWS Secrets Manager |
catatan
Pengakuan: Dokumentasi ini berisi kode contoh dan bahasa yang dikembangkan oleh Apache Software Foundation