Mengautentikasi dengan integrasi Amazon Redshift untuk Apache Spark - Amazon EMR

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

Gunakan AWS Secrets Manager untuk mengambil kredensil dan terhubung ke Amazon Redshift

Anda dapat melakukan autentikasi dengan aman ke Amazon Redshift dengan menyimpan kredensialnya di Secrets Manager dan meminta GetSecretValue pekerjaan Spark memanggil API untuk mengambilnya:

from pyspark.sql import SQLContextimport boto3 sc = # existing SparkContext sql_context = SQLContext(sc) secretsmanager_client = boto3.client('secretsmanager', region_name=os.getenv('AWS_REGION')) 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 # Access to Redshift cluster using Spark

Otentikasi ke Amazon Redshift dengan driver JDBC

Tetapkan nama pengguna dan kata sandi di dalam URL JDBC

Anda dapat mengautentikasi pekerjaan Spark ke cluster Amazon Redshift dengan menentukan nama database Amazon Redshift dan kata sandi di URL JDBC.

catatan

Jika Anda meneruskan kredensi database di URL, siapa pun yang memiliki akses ke URL juga dapat mengakses kredensialnya. Metode ini umumnya tidak disarankan karena ini bukan opsi yang aman.

Jika keamanan tidak menjadi perhatian untuk aplikasi Anda, Anda dapat menggunakan format berikut untuk mengatur nama pengguna dan kata sandi di URL JDBC:

jdbc:redshift://redshifthost:5439/database?user=username&password=password

Gunakan otentikasi berbasis IAM dengan peran eksekusi pekerjaan Amazon EMR Tanpa Server

Dimulai dengan rilis Amazon EMR Tanpa Server 6.9.0, driver Amazon Redshift JDBC 2.1 atau yang lebih tinggi dikemas ke lingkungan. Dengan driver JDBC 2.1 dan yang lebih tinggi, Anda dapat menentukan URL JDBC dan tidak menyertakan nama pengguna dan kata sandi mentah.

Sebagai gantinya, Anda dapat menentukan jdbc:redshift:iam:// skema. Ini memerintahkan driver JDBC untuk menggunakan peran eksekusi pekerjaan EMR Tanpa Server Anda untuk mengambil kredensil secara otomatis. Lihat Mengonfigurasi koneksi JDBC atau ODBC untuk menggunakan kredenal IAM di Panduan Manajemen Amazon Redshift untuk informasi selengkapnya. Contoh URL ini adalah:

jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev

Izin berikut diperlukan untuk peran pelaksanaan pekerjaan Anda ketika kondisi yang disediakan terpenuhi:

Izin Kondisi bila diperlukan untuk peran pelaksanaan pekerjaan
redshift:GetClusterCredentials Diperlukan untuk driver JDBC untuk mengambil kredensil dari Amazon Redshift
redshift:DescribeCluster Diperlukan jika Anda menentukan cluster Amazon Redshift dan Wilayah AWS di URL JDBC, bukan titik akhir
redshift-serverless:GetCredentials Diperlukan untuk driver JDBC untuk mengambil kredensional dari Amazon Redshift Serverless
redshift-serverless:GetWorkgroup Diperlukan jika Anda menggunakan Amazon Redshift Tanpa Server dan Anda menentukan URL dalam hal nama grup kerja dan Wilayah

Menghubungkan ke Amazon Redshift dalam VPC yang berbeda

Saat menyiapkan klaster Amazon Redshift yang disediakan atau workgroup Amazon Redshift Tanpa Server di bawah VPC, Anda harus mengonfigurasi konektivitas VPC untuk aplikasi Amazon EMR Tanpa Server untuk mengakses sumber daya. Untuk informasi selengkapnya tentang cara mengonfigurasi konektivitas VPC pada aplikasi EMR Tanpa Server, lihat. Mengkonfigurasi akses VPC untuk aplikasi EMR Tanpa Server untuk terhubung ke data

  • Jika klaster Amazon Redshift atau grup kerja Amazon Redshift Tanpa Server yang disediakan dapat diakses publik, Anda dapat menentukan satu atau beberapa subnet pribadi yang memiliki gateway NAT terpasang saat membuat aplikasi EMR Tanpa Server.

  • Jika klaster Amazon Redshift atau grup kerja Tanpa Server Amazon Redshift yang disediakan tidak dapat diakses publik, Anda harus membuat titik akhir VPC terkelola Amazon Redshift untuk klaster Amazon Redshift seperti yang dijelaskan dalam. Mengkonfigurasi akses VPC untuk aplikasi EMR Tanpa Server untuk terhubung ke data Atau, Anda dapat membuat grup kerja Amazon Redshift Tanpa Server seperti yang dijelaskan dalam Menghubungkan ke Amazon Redshift Tanpa Server di Panduan Manajemen Pergeseran Merah Amazon. Anda harus mengaitkan klaster atau subgrup Anda ke subnet pribadi yang Anda tentukan saat membuat aplikasi EMR Tanpa Server.

catatan

Jika Anda menggunakan otentikasi berbasis IAM, dan subnet pribadi Anda untuk aplikasi EMR Tanpa Server tidak memiliki gateway NAT yang terpasang, maka Anda juga harus membuat titik akhir VPC pada subnet tersebut untuk Amazon Redshift atau Amazon Redshift Tanpa Server. Dengan cara ini, driver JDBC dapat mengambil kredensialnya.