Mengonfigurasi peran IAM runtime untuk akses EMR klaster Amazon di Studio - Amazon SageMaker AI

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengonfigurasi peran IAM runtime untuk akses EMR klaster Amazon di Studio

Saat tersambung ke EMR klaster Amazon dari notebook Studio atau Studio Classic, Anda dapat menelusuri daftar peran secara visual, yang dikenal sebagai IAM peran runtime, dan memilihnya dengan cepat. Selanjutnya, semua pekerjaan Apache Spark, Apache Hive, atau Presto yang dibuat dari buku catatan Anda hanya mengakses data dan sumber daya yang diizinkan oleh kebijakan yang dilampirkan pada peran runtime. Selain itu, saat data diakses dari data lake yang dikelola AWS Lake Formation, Anda dapat menerapkan akses tingkat tabel dan tingkat kolom menggunakan kebijakan yang dilampirkan pada peran runtime.

Dengan kemampuan ini, Anda dan rekan tim Anda dapat terhubung ke cluster yang sama, masing-masing menggunakan peran runtime yang dicakup dengan izin yang sesuai dengan tingkat akses individual Anda ke data. Sesi Anda juga terisolasi satu sama lain di cluster bersama.

Untuk mencoba fitur ini menggunakan Studio Classic, lihat Menerapkan kontrol akses data berbutir halus dengan dan AWS Lake Formation Amazon dari EMR Amazon SageMaker Studio Classic. Posting blog ini membantu Anda mengatur lingkungan demo tempat Anda dapat mencoba menggunakan peran runtime yang telah dikonfigurasi sebelumnya untuk terhubung ke cluster AmazonEMR.

Prasyarat

Sebelum Anda memulai, pastikan Anda memenuhi prasyarat berikut:

Skenario koneksi lintas akun

Autentikasi peran runtime mendukung berbagai skenario koneksi lintas akun saat data Anda berada di luar akun Studio Anda. Gambar berikut menunjukkan tiga cara berbeda untuk menetapkan EMR klaster Amazon, data, dan bahkan peran eksekusi EMR runtime Amazon antara Studio dan akun data:

Skenario lintas akun didukung oleh otentikasi IAM peran runtime.

Di opsi 1, EMR klaster Amazon dan peran eksekusi EMR runtime Amazon Anda berada di akun data terpisah dari akun Studio. Anda menentukan kebijakan izin peran EMR akses Amazon terpisah (juga disebut sebagaiAssumable role) yang memberikan izin ke peran eksekusi Studio atau Studio Classic untuk mengambil peran EMR akses Amazon. Peran EMR akses Amazon kemudian memanggil Amazon EMR API GetClusterSessionCredentials atas nama peran eksekusi Studio atau Studio Classic Anda, memberi Anda akses ke klaster.

Di opsi 2, EMR klaster Amazon dan peran eksekusi EMR runtime Amazon ada di akun Studio Anda. Peran eksekusi Studio Anda memiliki izin untuk menggunakan Amazon EMR API GetClusterSessionCredentials untuk mendapatkan akses ke klaster Anda. Untuk mengakses bucket Amazon S3, berikan izin akses bucket Amazon S3 lintas akun peran eksekusi EMR runtime Amazon S3 lintas akun — Anda memberikan izin ini dalam kebijakan bucket Amazon S3 Anda.

Di opsi 3, EMR klaster Amazon Anda ada di akun Studio Anda, dan peran eksekusi EMR runtime Amazon ada di akun data. Peran eksekusi Studio atau Studio Classic Anda memiliki izin untuk menggunakan Amazon EMR API GetClusterSessionCredentials untuk mendapatkan akses ke klaster Anda. Tambahkan peran eksekusi EMR runtime Amazon ke dalam konfigurasi JSON peran eksekusi. Kemudian Anda dapat memilih peran di UI saat memilih klaster. Untuk detail tentang cara mengatur JSON file konfigurasi peran eksekusi, lihatMemuat peran eksekusi Anda ke Studio atau Studio Classic.

Siapkan Studio untuk menggunakan peran runtime IAM

Untuk membuat otentikasi peran runtime untuk EMR kluster Amazon Anda, konfigurasikan IAM kebijakan, jaringan, dan penyempurnaan kegunaan yang diperlukan. Penyiapan Anda bergantung pada apakah Anda menangani pengaturan lintas akun jika EMR klaster Amazon, peran eksekusi EMR runtime Amazon, atau keduanya, berada di luar akun Studio Anda. Bagian berikut memandu Anda melalui kebijakan untuk menginstal, cara mengonfigurasi jaringan untuk mengizinkan lalu lintas antar akun, dan file konfigurasi lokal yang akan disiapkan untuk mengotomatiskan koneksi Amazon EMR Anda.

Konfigurasikan autentikasi peran runtime saat EMR klaster Amazon dan Studio berada di akun yang sama

Jika EMR klaster Amazon Anda berada di akun Studio Anda, selesaikan langkah-langkah berikut untuk menambahkan izin yang diperlukan ke kebijakan eksekusi Studio Anda:

  1. Tambahkan IAM kebijakan yang diperlukan untuk menyambung ke EMR kluster Amazon. Untuk detailnya, lihat Konfigurasikan daftar EMR klaster Amazon.

  2. Berikan izin untuk memanggil Amazon EMR API GetClusterSessionCredentials saat Anda melewati satu atau beberapa peran eksekusi EMR runtime Amazon yang diizinkan yang ditentukan dalam kebijakan.

  3. (Opsional) Berikan izin untuk meneruskan IAM peran yang mengikuti konvensi penamaan yang ditentukan pengguna.

  4. (Opsional) Berikan izin untuk mengakses EMR kluster Amazon yang ditandai dengan string yang ditentukan pengguna tertentu.

  5. Memuat IAM peran Anda terlebih dahulu sehingga Anda dapat memilih peran yang akan digunakan saat Anda terhubung ke EMR klaster Amazon. Untuk detail tentang cara melakukan pramuat IAM peran Anda, lihatMemuat peran eksekusi Anda ke Studio atau Studio Classic.

Contoh kebijakan berikut memungkinkan peran eksekusi EMR runtime Amazon milik grup pemodelan dan pelatihan untuk dipanggil. GetClusterSessionCredentials Selain itu, pemegang polis dapat mengakses EMR kluster Amazon yang ditandai dengan string atau. modeling training

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "*", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::123456780910:role/emr-execution-role-ml-modeling*", "arn:aws:iam::123456780910:role/emr-execution-role-ml-training*" ], "elasticmapreduce:ResourceTag/group": [ "*modeling*", "*training*" ] } } } ] }

Konfigurasikan autentikasi peran runtime saat klaster dan Studio Anda berada di akun yang berbeda

Jika EMR klaster Amazon Anda tidak ada di akun Studio Anda, izinkan peran eksekusi SageMaker AI Anda untuk mengambil peran EMR akses Amazon lintas akun sehingga Anda dapat terhubung ke cluster. Selesaikan langkah-langkah berikut untuk menyiapkan konfigurasi lintas akun Anda:

  1. Buat kebijakan izin peran eksekusi SageMaker AI Anda sehingga peran eksekusi dapat mengambil peran EMR akses Amazon. Kebijakan berikut adalah contoh:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeCrossAccountEMRAccessRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::emr_account_id:role/emr-access-role-name" } ] }
  2. Buat kebijakan kepercayaan untuk menentukan akun Studio mana IDs yang dipercaya untuk mengambil peran EMR akses Amazon. Kebijakan berikut adalah contoh:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio_account_id:role/studio_execution_role" }, "Action": "sts:AssumeRole" } }
  3. Buat kebijakan izin peran EMR akses Amazon, yang memberi peran eksekusi EMR runtime Amazon izin yang diperlukan untuk menjalankan tugas yang diinginkan di klaster. Konfigurasikan peran EMR akses Amazon untuk memanggil API GetClusterSessionCredentials dengan peran eksekusi EMR runtime Amazon yang ditentukan dalam kebijakan izin peran akses. Kebijakan berikut adalah contoh:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::emr_account_id:role/emr-execution-role-name" ] } } } ] }
  4. Siapkan jaringan lintas akun sehingga lalu lintas dapat bergerak bolak-balik antar akun Anda. Untuk instruksi terpandu, lihat Konfigurasikan akses jaringan untuk EMR klaster Amazon AndaMengatur. Langkah-langkah di bagian ini membantu Anda menyelesaikan tugas-tugas berikut:

    1. VPC-peer akun Studio Anda dan EMR akun Amazon Anda untuk membuat koneksi.

    2. Tambahkan rute secara manual ke tabel rute subnet pribadi di kedua akun. Ini memungkinkan pembuatan dan koneksi EMR cluster Amazon dari akun Studio ke subnet pribadi akun jarak jauh.

    3. Siapkan grup keamanan yang dilampirkan ke domain Studio Anda untuk mengizinkan lalu lintas keluar dan grup keamanan node EMR utama Amazon untuk mengizinkan TCP lalu lintas masuk dari grup keamanan instans Studio.

  5. Memuat peran IAM runtime terlebih dahulu sehingga Anda dapat memilih peran yang akan digunakan saat tersambung ke klaster AmazonEMR. Untuk detail tentang cara melakukan pramuat IAM peran Anda, lihatMemuat peran eksekusi Anda ke Studio atau Studio Classic.

Konfigurasikan akses Lake Formation

Saat mengakses data dari data lake yang dikelola oleh AWS Lake Formation, Anda dapat menerapkan akses tingkat tabel dan tingkat kolom menggunakan kebijakan yang dilampirkan pada peran runtime Anda. Untuk mengonfigurasi izin akses Lake Formation, lihat Mengintegrasikan Amazon EMR dengan AWS Lake Formation.

Memuat peran eksekusi Anda ke Studio atau Studio Classic

Anda dapat memuat peran IAM runtime terlebih dahulu sehingga Anda dapat memilih peran yang akan digunakan saat tersambung ke klaster AmazonEMR. Pengguna JupyterLab di Studio dapat menggunakan konsol SageMaker AI atau skrip yang disediakan.

Preload runtime roles in JupyterLab using the SageMaker AI console

Untuk mengaitkan peran runtime Anda dengan profil pengguna atau domain Anda menggunakan konsol SageMaker AI:

  1. Arahkan ke konsol SageMaker AI di https://console.aws.amazon.com/sagemaker/.

  2. Di panel navigasi kiri, pilih domain, lalu pilih domain menggunakan peran eksekusi SageMaker AI yang izinnya Anda perbarui.

    • Untuk menambahkan runtime (dan mengakses peran untuk kasus penggunaan lintas akun) ke domain Anda: Di tab Konfigurasi Aplikasi pada halaman detail Domain, buka bagian tersebut. JupyterLab

    • Untuk menambahkan runtime Anda (dan mengakses peran untuk kasus penggunaan lintas akun) ke profil pengguna Anda: Pada halaman Detail domain, pilih tab Profil pengguna, pilih profil pengguna menggunakan peran eksekusi SageMaker AI yang izinnya Anda perbarui. Di tab Konfigurasi Aplikasi, arahkan ke JupyterLabbagian tersebut.

  3. Pilih Edit dan tambahkan peran akses Anda (peran yang dapat diasumsikan) dan peran eksekusi runtime EMR Tanpa Server. ARNs

  4. Pilih Kirim.

Saat Anda selanjutnya terhubung ke EMR server Amazon, peran runtime akan muncul di menu tarik-turun untuk dipilih.

Preload runtime roles in JupyterLab using a Python script

Dalam JupyterLab aplikasi yang dimulai dari ruang menggunakan peran eksekusi SageMaker AI yang izinnya Anda perbarui, jalankan perintah berikut di terminal. GantidomainID,user-profile-name,emr-accountID, dan EMRServiceRole dengan nilai-nilai yang tepat. Cuplikan kode ini memperbarui pengaturan profil pengguna (client.update_user_profile) dalam domain SageMaker AI dalam kasus penggunaan lintas akun. Secara khusus, ini menetapkan peran layanan untuk AmazonEMR. Ini juga memungkinkan JupyterLab aplikasi untuk mengambil IAM peran tertentu (AssumableRoleatauAccessRole) untuk menjalankan Amazon EMR dalam EMR akun Amazon.

Atau, gunakan client.update_domain untuk memperbarui pengaturan domain jika ruang Anda menggunakan peran eksekusi yang ditetapkan di tingkat domain.

import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_user_profile( DomainId="domainID", UserProfileName="user-profile-name", UserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"], 'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", "arn:aws:iam::emr-accountID:role/AnotherServiceRole"] } } }) resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))
Preload runtime roles in Studio Classic

Berikan ARN of the AccessRole (AssumableRole) ke peran eksekusi SageMaker AI Anda. ARNItu dimuat oleh server Jupyter saat peluncuran. Peran eksekusi yang digunakan oleh Studio mengasumsikan peran lintas akun tersebut untuk menemukan dan terhubung ke EMR klaster Amazon di akun kepercayaan.

Anda dapat menentukan informasi ini dengan menggunakan skrip Lifecycle Configuration (LCC). Anda dapat melampirkan LCC ke domain Anda atau profil pengguna tertentu. LCCSkrip yang Anda gunakan harus berupa JupyterServer konfigurasi. Untuk informasi selengkapnya tentang cara membuat LCC skrip, lihat Menggunakan Konfigurasi Siklus Hidup dengan Studio Classic.

Berikut ini adalah contoh LCC script. Untuk memodifikasi skrip, ganti AssumableRole dan emr-account dengan nilainya masing-masing. Jumlah akun silang dibatasi hingga lima.

Cuplikan berikut adalah contoh skrip LCC bash yang dapat Anda terapkan jika aplikasi dan klaster Studio Classic Anda berada di akun yang sama:

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::123456789012:role/emr-execution-role-1", "arn:aws:iam::123456789012:role/emr-execution-role-2" ] } } EOF

Jika aplikasi dan klaster Studio Classic Anda berada di akun yang berbeda, tentukan peran EMR akses Amazon yang dapat menggunakan klaster. Dalam contoh kebijakan berikut, 123456789012 adalah ID akun klaster EMR Amazon, dan 212121212121 dan 434343434343 adalah untuk peran akses Amazon yang diizinkan. ARNs EMR

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::212121212121:role/emr-execution-role-1", "arn:aws:iam::434343434343:role/emr-execution-role-2" ] } } EOF # add your cross-account EMR access role FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE" FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "123456789012": "arn:aws:iam::123456789012:role/cross-account-emr-access-role" } EOF