Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Mengakses data S3 di AWS akun lain dari EMR Tanpa Server - Amazon EMR

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

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

Mengakses data S3 di AWS akun lain dari EMR Tanpa Server

Anda dapat menjalankan pekerjaan Amazon EMR Tanpa Server dari satu AWS akun dan mengonfigurasinya untuk mengakses data di bucket Amazon S3 milik akun lain. AWS Halaman ini menjelaskan cara mengonfigurasi akses lintas akun ke S3 dari EMR Tanpa Server.

Pekerjaan yang berjalan di EMR Tanpa Server dapat menggunakan kebijakan bucket S3 atau peran yang diasumsikan untuk mengakses data di Amazon S3 dari akun lain. AWS

Prasyarat

Untuk mengatur akses lintas akun untuk Amazon EMR Tanpa Server, Anda harus menyelesaikan tugas saat masuk ke dua akun: AWS

  • AccountA— Ini adalah AWS akun tempat Anda membuat aplikasi Amazon EMR Tanpa Server. Sebelum Anda mengatur akses lintas akun, Anda harus memiliki yang berikut ini siap di akun ini:

    • Aplikasi Amazon EMR Tanpa Server tempat Anda ingin menjalankan pekerjaan.

    • Peran eksekusi pekerjaan yang memiliki izin yang diperlukan untuk menjalankan pekerjaan dalam aplikasi. Untuk informasi selengkapnya, lihat Peran runtime Job untuk Amazon EMR Tanpa Server.

  • AccountB— Ini adalah AWS akun yang berisi ember S3 yang Anda inginkan untuk diakses oleh pekerjaan Amazon EMR Tanpa Server Anda.

Menggunakan kebijakan bucket S3 untuk mengakses data S3 lintas akun

Untuk mengakses bucket S3 di account B From account A, lampirkan kebijakan berikut ke bucket S3 di account B.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions 1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA:root" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::bucket_name_in_AccountB" ] }, { "Sid": "Example permissions 2", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA:root" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::bucket_name_in_AccountB/*" ] } ] }

Untuk informasi selengkapnya tentang akses lintas akun S3 dengan kebijakan bucket S3, lihat Contoh 2: Pemilik bucket yang memberikan izin bucket lintas akun di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Gunakan peran yang diasumsikan untuk mengakses data S3 lintas akun

Cara lain untuk mengatur akses lintas akun untuk Amazon EMR Tanpa Server adalah dengan tindakan AssumeRole dari (). AWS Security Token Service AWS STS AWS STS adalah layanan web global yang memungkinkan Anda meminta kredenal hak istimewa terbatas sementara untuk pengguna. Anda dapat melakukan panggilan API ke EMR Tanpa Server dan Amazon S3 dengan kredensil keamanan sementara yang Anda buat. AssumeRole

Langkah-langkah berikut menggambarkan cara menggunakan peran yang diasumsikan untuk mengakses data S3 lintas akun dari EMR Tanpa Server:

  1. Buat bucket Amazon S3, cross-account-bucket, di AccountB. Untuk informasi selengkapnya, lihat Membuat bucket di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon. Jika Anda ingin memiliki akses lintas-akun ke DynamoDB, Anda juga dapat membuat tabel DynamoDB di AccountB. Untuk informasi selengkapnya, lihat Membuat tabel DynamoDB di Panduan Pengembang Amazon DynamoDB.

  2. Buat IAM role Cross-Account-Role-B dalam AccountB yang dapat mengakses cross-account-bucket.

    1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

    2. Pilih Peran dan buat peran baru: Cross-Account-Role-B. Untuk informasi selengkapnya tentang cara membuat IAM role, lihat Membuat IAM role dalam Panduan Pengguna IAM.

    3. Buat kebijakan IAM yang menentukan izin untuk Cross-Account-Role-B untuk mengakses S3 bucket cross-account-bucket, seperti yang ditunjukkan pernyataan kebijakan berikut. Kemudian lampirkan kebijakan IAM ke Cross-Account-Role-B. Untuk informasi selengkapnya, lihat Membuat kebijakan IAM dalam Panduan Pengguna IAM.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::cross-account-bucket", "arn:aws:s3:::cross-account-bucket/*" ] } ] }

    Jika Anda memerlukan akses DynamoDB, buat kebijakan IAM yang menentukan izin untuk mengakses tabel DynamoDB lintas akun. Kemudian lampirkan kebijakan IAM ke Cross-Account-Role-B. Untuk informasi selengkapnya, lihat Amazon DynamoDB: Mengizinkan akses ke tabel tertentu di Panduan Pengguna IAM.

    Berikut ini adalah kebijakan untuk mengizinkan akses ke tabel DynamoDB. CrossAccountTable

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:MyRegion:AccountB:table/CrossAccountTable" } ] }
  3. Cara mengedit hubungan kepercayaan untuk peran Cross-Account-Role-B.

    1. Untuk mengonfigurasi hubungan kepercayaan untuk peran tersebut, pilih tab Trust Relationships di konsol IAM untuk peran Cross-Account-Role-B yang Anda buat di Langkah 2.

    2. Pilih Edit Hubungan Kepercayaan.

    3. Tambahkan dokumen kebijakan berikut. Hal ini memungkinkan Job-Execution-Role-A AccountA untuk mengambil Cross-Account-Role-B peran.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA:role/Job-Execution-Role-A" }, "Action": "sts:AssumeRole" } ] }
  4. Berikan Job-Execution-Role-A AWS STS AssumeRole izin AccountA untuk berasumsiCross-Account-Role-B.

    1. Di konsol IAM untuk AWS akunAccountA, pilihJob-Execution-Role-A.

    2. Tambahkan pernyataan kebijakan berikut pada Job-Execution-Role-A untuk mengizinkan tindakan AssumeRole di peran Cross-Account-Role-B.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::AccountB:role/Cross-Account-Role-B" } ] }

Contoh peran yang diasumsikan

Anda dapat menggunakan satu peran yang diasumsikan untuk mengakses semua sumber daya S3 di akun, atau dengan Amazon EMR 6.11 dan yang lebih tinggi, Anda dapat mengonfigurasi beberapa peran IAM untuk diasumsikan saat mengakses bucket S3 lintas akun yang berbeda.

Akses sumber daya S3 dengan satu peran yang diasumsikan

catatan

Saat Anda mengonfigurasi pekerjaan untuk menggunakan satu peran yang diasumsikan, semua sumber daya S3 di seluruh pekerjaan menggunakan peran tersebut, termasuk entryPoint skrip.

Jika Anda ingin menggunakan satu peran yang diasumsikan untuk mengakses semua sumber daya S3 di akun B, tentukan konfigurasi berikut:

  1. Tentukan konfigurasi fs.s3.customAWSCredentialsProvider EMRFS ke. spark.hadoop.fs.s3.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider

  2. Untuk Spark, gunakan spark.emr-serverless.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN dan spark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN tentukan variabel lingkungan pada driver dan pelaksana.

  3. Untuk Hive, gunakanhive.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN,tez.am.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN, dan tez.task.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN untuk menentukan variabel lingkungan pada driver Hive, master aplikasi Tez, dan wadah tugas Tez.

Contoh berikut menunjukkan cara menggunakan peran yang diasumsikan untuk memulai pekerjaan EMR Tanpa Server dengan akses lintas akun.

Spark

Contoh berikut menunjukkan cara menggunakan peran yang diasumsikan untuk memulai pekerjaan EMR Serverless Spark yang dijalankan dengan akses lintas akun ke S3.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "entrypoint_location", "entryPointArguments": [":argument_1:", ":argument_2:"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "spark-defaults", "properties": { "spark.hadoop.fs.s3.customAWSCredentialsProvider": "spark.hadoop.fs.s3.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider", "spark.emr-serverless.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B", "spark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B" } }] }'
Hive

Contoh berikut menunjukkan cara menggunakan peran yang diasumsikan untuk memulai pekerjaan EMR Serverless Hive yang dijalankan dengan akses lintas akun ke S3.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "query_location", "parameters": "hive_parameters" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "fs.s3.customAWSCredentialsProvider": "com.amazonaws.emr.serverless.credentialsprovider.AssumeRoleAWSCredentialsProvider", "hive.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B", "tez.am.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B", "tez.task.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B" } }] }'

Contoh berikut menunjukkan cara menggunakan peran yang diasumsikan untuk memulai pekerjaan EMR Serverless Spark yang dijalankan dengan akses lintas akun ke S3.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "entrypoint_location", "entryPointArguments": [":argument_1:", ":argument_2:"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "spark-defaults", "properties": { "spark.hadoop.fs.s3.customAWSCredentialsProvider": "spark.hadoop.fs.s3.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider", "spark.emr-serverless.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B", "spark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN": "arn:aws:iam::AccountB:role/Cross-Account-Role-B" } }] }'

Akses sumber daya S3 dengan beberapa peran yang diasumsikan

Dengan rilis EMR Tanpa Server 6.11.0 dan yang lebih tinggi, Anda dapat mengonfigurasi beberapa peran IAM untuk diasumsikan saat mengakses bucket lintas akun yang berbeda. Jika Anda ingin mengakses sumber daya S3 yang berbeda dengan peran yang diasumsikan berbeda di akun B, gunakan konfigurasi berikut saat Anda memulai pekerjaan:

  1. Tentukan konfigurasi fs.s3.customAWSCredentialsProvider EMRFS ke. com.amazonaws.emr.serverless.credentialsprovider.BucketLevelAssumeRoleCredentialsProvider

  2. Tentukan konfigurasi EMRFS fs.s3.bucketLevelAssumeRoleMapping untuk menentukan pemetaan dari nama bucket S3 ke peran IAM di akun B untuk diasumsikan. Nilai harus dalam formatbucket1->role1;bucket2->role2.

Misalnya, Anda dapat menggunakan arn:aws:iam::AccountB:role/Cross-Account-Role-B-1 untuk mengakses bucketbucket1, dan menggunakannya arn:aws:iam::AccountB:role/Cross-Account-Role-B-2 untuk mengakses bucketbucket2. Contoh berikut menunjukkan cara memulai pekerjaan EMR Tanpa Server dengan akses lintas akun melalui beberapa peran yang diasumsikan.

Spark

Contoh berikut menunjukkan cara menggunakan beberapa peran yang diasumsikan untuk membuat EMR Serverless Spark job run.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "entrypoint_location", "entryPointArguments": [":argument_1:", ":argument_2:"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "spark-defaults", "properties": { "spark.hadoop.fs.s3.customAWSCredentialsProvider": "com.amazonaws.emr.serverless.credentialsprovider.BucketLevelAssumeRoleCredentialsProvider", "spark.hadoop.fs.s3.bucketLevelAssumeRoleMapping": "bucket1->arn:aws:iam::AccountB:role/Cross-Account-Role-B-1;bucket2->arn:aws:iam::AccountB:role/Cross-Account-Role-B-2" } }] }'
Hive

Contoh berikut menunjukkan cara menggunakan beberapa peran yang diasumsikan untuk membuat pekerjaan EMR Serverless Hive berjalan.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "query_location", "parameters": "hive_parameters" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "fs.s3.customAWSCredentialsProvider": "com.amazonaws.emr.serverless.credentialsprovider.AssumeRoleAWSCredentialsProvider", "fs.s3.bucketLevelAssumeRoleMapping": "bucket1->arn:aws:iam::AccountB:role/Cross-Account-Role-B-1;bucket2->arn:aws:iam::AccountB:role/Cross-Account-Role-B-2" } }] }'

Contoh berikut menunjukkan cara menggunakan beberapa peran yang diasumsikan untuk membuat EMR Serverless Spark job run.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "entrypoint_location", "entryPointArguments": [":argument_1:", ":argument_2:"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "spark-defaults", "properties": { "spark.hadoop.fs.s3.customAWSCredentialsProvider": "com.amazonaws.emr.serverless.credentialsprovider.BucketLevelAssumeRoleCredentialsProvider", "spark.hadoop.fs.s3.bucketLevelAssumeRoleMapping": "bucket1->arn:aws:iam::AccountB:role/Cross-Account-Role-B-1;bucket2->arn:aws:iam::AccountB:role/Cross-Account-Role-B-2" } }] }'
PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.