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 tugas Spark memanggil untuk mengambilnya GetSecretValue
API:
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 JDBC URL
Anda dapat mengautentikasi pekerjaan Spark ke cluster Amazon Redshift dengan menentukan nama database Amazon Redshift dan kata sandi di file. JDBC URL
catatan
Jika Anda meneruskan kredensi database diURL, siapa pun yang memiliki akses ke juga URL 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 JDBCURL:
jdbc:redshift://redshifthost:5439/database?user=
username
&password=password
Menggunakan otentikasi IAM berbasis dengan peran eksekusi EMR pekerjaan Amazon Tanpa Server
Dimulai dengan rilis Amazon EMR Tanpa Server 6.9.0, JDBC driver Amazon Redshift 2.1 atau yang lebih tinggi dikemas ke lingkungan. Dengan JDBC driver 2.1 dan yang lebih tinggi, Anda dapat menentukan JDBC URL dan tidak menyertakan nama pengguna dan kata sandi mentah.
Sebagai gantinya, Anda dapat menentukan jdbc:redshift:iam://
skema. Ini memerintahkan JDBC driver untuk menggunakan peran eksekusi pekerjaan EMR Tanpa Server Anda untuk mengambil kredensi secara otomatis. Lihat Mengonfigurasi JDBC atau ODBC koneksi untuk menggunakan IAM kredensil di Panduan Manajemen Amazon Redshift untuk informasi selengkapnya. Contoh dari ini URL 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 bagi JDBC pengemudi untuk mengambil kredensil dari Amazon Redshift |
redshift:DescribeCluster
|
Diperlukan jika Anda menentukan cluster Amazon Redshift dan Wilayah AWS di JDBC URL alih-alih titik akhir |
redshift-serverless:GetCredentials
|
Diperlukan bagi JDBC driver untuk mengambil kredensil dari Amazon Redshift Tanpa Server |
redshift-serverless:GetWorkgroup
|
Diperlukan jika Anda menggunakan Amazon Redshift Serverless dan Anda menentukan URL dalam hal nama workgroup dan Wilayah |
Menghubungkan ke Amazon Redshift dalam yang berbeda VPC
Saat menyiapkan klaster Amazon Redshift atau grup kerja Amazon Redshift Serverless yang disediakan di bawah aVPC, Anda harus mengonfigurasi VPC konektivitas untuk aplikasi Amazon EMR Tanpa Server untuk mengakses sumber daya. Untuk informasi selengkapnya tentang cara mengonfigurasi VPC konektivitas pada aplikasi EMR Tanpa Server, lihat. Mengkonfigurasi akses VPC
-
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 terpasang saat membuat aplikasi Tanpa Server. NAT EMR
-
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 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 Tanpa EMR Server.
catatan
Jika Anda menggunakan otentikasi IAM berbasis, dan subnet pribadi Anda untuk aplikasi EMR Tanpa Server tidak memiliki NAT gateway yang terpasang, maka Anda juga harus membuat VPC titik akhir pada subnet tersebut untuk Amazon Redshift atau Amazon Redshift Tanpa Server. Dengan cara ini, JDBC pengemudi dapat mengambil kredensialnya.