全部产品
Search
文档中心

E-MapReduce:Peran Eksekusi

更新时间:Oct 30, 2025

Ketika tugas dalam ruang kerja EMR Serverless Spark memanggil layanan Alibaba Cloud lainnya seperti Object Storage Service (OSS) dan Data Lake Formation (DLF), peran eksekusi digunakan untuk otentikasi izin. Saat membuat ruang kerja, Anda dapat menggunakan peran eksekusi default atau peran kustom.

Skenario

Selama eksekusi tugas, peran eksekusi mengasumsikan identitas tertentu untuk memanggil berbagai sumber daya atau layanan. Identitas ini digunakan untuk otentikasi dan Audit ActionTrail. Berikut adalah skenario yang didukung:

  • Mengakses File OSS

    Selama eksekusi tugas, peran eksekusi mengakses dan mengelola file yang disimpan di Alibaba Cloud OSS.

  • Membaca dan menulis metadata DLF

    Jika kontrol akses diaktifkan untuk DLF, peran eksekusi mengasumsikan identitas yang berbeda berdasarkan jenis tugas:

    • Pengembangan data: Peran eksekusi mengasumsikan identitas Akun Alibaba Cloud atau Pengguna RAM yang mengirimkan tugas.

    • Livy Gateway: Peran eksekusi mengasumsikan identitas pembuat token.

  • Membaca dan menulis data MaxCompute

    Untuk membaca dan menulis data MaxCompute, peran eksekusi mengasumsikan identitas Akun Alibaba Cloud atau Pengguna RAM yang mengirimkan tugas. Identitas ini digunakan untuk otentikasi dan Audit ActionTrail.

Perhatian

Setelah ruang kerja dibuat, peran eksekusi tidak dapat diubah.

Menggunakan peran eksekusi default

Saat membuat ruang kerja, sistem menggunakan peran eksekusi default AliyunEMRSparkJobRunDefaultRole jika Anda tidak memodifikasi item konfigurasi Execution Role.

Peran eksekusi default memiliki properti berikut:

  • Nama peran: AliyunEMRSparkJobRunDefaultRole.

  • Kebijakan terkait: Peran ini disambungkan ke kebijakan sistem AliyunEMRSparkJobRunDefaultRolePolicy, yang memberikan izin akses ke OSS, DLF, dan MaxCompute.

  • Pemeliharaan: Kebijakan ini dibuat dan dipelihara oleh Alibaba Cloud serta diperbarui secara otomatis untuk memenuhi persyaratan layanan.

Penting

Jangan mengedit atau menghapus peran eksekusi default AliyunEMRSparkJobRunDefaultRole. Jika tidak, pembuatan ruang kerja atau eksekusi tugas mungkin gagal.

Menggunakan peran eksekusi kustom

Untuk mengontrol izin untuk peran eksekusi, Anda dapat memilih peran kustom untuk parameter Execution Role saat membuat ruang kerja. Ikuti langkah-langkah berikut untuk mengonfigurasi peran eksekusi kustom guna mengakses sumber daya lain tanpa kata sandi dalam akun yang sama.

Catatan

Kebijakan akses berikut adalah contoh untuk mengonfigurasi peran kustom. Perhatikan bahwa kebijakan akses untuk peran eksekusi kustom bersifat statis dan tidak diperbarui secara otomatis oleh Alibaba Cloud. Untuk memastikan tugas Anda berjalan dengan benar, kami sarankan Anda secara berkala memeriksa dan memperbarui kebijakan akses. Anda dapat merujuk ke kebijakan akses AliyunEMRSparkJobRunDefaultRolePolicy dari peran eksekusi default AliyunEMRSparkJobRunDefaultRole untuk mendapatkan izin terbaru yang diperlukan.

Prosedur

  1. Buat kebijakan akses.

    1. Pergi ke halaman Buat Kebijakan Kustom.

      1. Masuk ke Konsol RAM sebagai administrator RAM.

      2. Di panel navigasi di sebelah kiri, pilih Permissions > Policies.

      3. Di halaman Policies, klik Create Policy.

        image

    2. Di halaman Create Policy, klik tab Script.

    3. Masukkan isi kebijakan dan klik OK.

      {
        "Version": "1",
        "Statement": [
          {
            "Action": [
              "oss:ListBuckets",
              "oss:PutObject",
              "oss:ListObjectsV2",
              "oss:ListObjects",
              "oss:GetObject",
              "oss:CopyObject",
              "oss:DeleteObject",
              "oss:DeleteObjects",
              "oss:RestoreObject",
              "oss:CompleteMultipartUpload",
              "oss:ListMultipartUploads",
              "oss:AbortMultipartUpload",
              "oss:UploadPartCopy",
              "oss:UploadPart",
              "oss:GetBucketInfo",
              "oss:PostDataLakeStorageFileOperation",
              "oss:PostDataLakeStorageAdminOperation",
              "oss:GetBucketVersions",
              "oss:ListObjectVersions",
              "oss:DeleteObjectVersion"
            ],
            "Resource": [
              "acs:oss:*:*:serverless-spark-test-resources/*",
              "acs:oss:*:*:serverless-spark-test-resources"
            ],
            "Effect": "Allow"
          },
          {
            "Action": [
              "dlf:AlterDatabase",
              "dlf:AlterTable",
              "dlf:ListCatalogs",
              "dlf:ListDatabases",
              "dlf:ListFunctions",
              "dlf:ListFunctionNames",
              "dlf:ListTables",
              "dlf:ListTableNames",
              "dlf:ListIcebergNamespaceDetails",
              "dlf:ListIcebergTableDetails",
              "dlf:ListIcebergSnapshots",
              "dlf:CreateDatabase",
              "dlf:Get*",
              "dlf:DeleteDatabase",
              "dlf:DropDatabase",
              "dlf:DropTable",
              "dlf:CreateTable",
              "dlf:CommitTable",
              "dlf:UpdateTable",
              "dlf:DeleteTable",
              "dlf:ListPartitions",
              "dlf:ListPartitionNames",
              "dlf:CreatePartition",
              "dlf:BatchCreatePartitions",
              "dlf:UpdateTableColumnStatistics",
              "dlf:DeleteTableColumnStatistics",
              "dlf:UpdatePartitionColumnStatistics",
              "dlf:DeletePartitionColumnStatistics",
              "dlf:UpdateDatabase",
              "dlf:BatchCreateTables",
              "dlf:BatchDeleteTables",
              "dlf:BatchUpdateTables",
              "dlf:BatchGetTables",
              "dlf:BatchUpdatePartitions",
              "dlf:BatchDeletePartitions",
              "dlf:BatchGetPartitions",
              "dlf:DeletePartition",
              "dlf:CreateFunction",
              "dlf:DeleteFunction",
              "dlf:UpdateFunction",
              "dlf:ListPartitionsByFilter",
              "dlf:DeltaGetPermissions",
              "dlf:UpdateCatalogSettings",
              "dlf:CreateLock",
              "dlf:UnLock",
              "dlf:AbortLock",
              "dlf:RefreshLock",
              "dlf:ListTableVersions",
              "dlf:CheckPermissions",
              "dlf:RenameTable",
              "dlf:RollbackTable"
            ],
            "Resource": "*",
            "Effect": "Allow"
          },
          {
            "Action": [
              "dlf-dss:CreateDatabase",
              "dlf-dss:CreateFunction",
              "dlf-dss:CreateTable",
              "dlf-dss:DropDatabase",
              "dlf-dss:DropFunction",
              "dlf-dss:DropTable",
              "dlf-dss:DescribeCatalog",
              "dlf-dss:DescribeDatabase",
              "dlf-dss:DescribeFunction",
              "dlf-dss:DescribeTable",
              "dlf-dss:AlterDatabase",
              "dlf-dss:AlterFunction",
              "dlf-dss:AlterTable",
              "dlf-dss:ListCatalogs",
              "dlf-dss:ListDatabases",
              "dlf-dss:ListTables",
              "dlf-dss:ListFunctions",
              "dlf-dss:CheckPermissions"
            ],
            "Resource": "*",
            "Effect": "Allow"
          },
          {
            "Effect": "Allow",
            "Action": "dlf-auth:ActOnBehalfOfAnotherUser",
            "Resource": "*"
          }
        ]
      }
    4. Masukkan Name (misalnya, test-serverless-spark) dan Note untuk kebijakan akses, lalu klik OK.

      Kebijakan mencakup elemen-elemen berikut:

      • Action: Operasi yang dapat dilakukan pada suatu sumber daya. Dalam contoh ini, izin untuk membaca data dari dan menanyakan direktori di OSS dan DLF diberikan.

      • Resource: Objek tempat otorisasi dilakukan. Dalam contoh ini, izin diberikan untuk mengakses semua objek di DLF dan semua konten di Bucket OSS bernama serverless-spark-test-resources. Anda harus mengganti serverless-spark-test-resources dengan nama Bucket OSS Anda.

      Untuk informasi lebih lanjut mengenai elemen dasar kebijakan akses, lihat Elemen Dasar Kebijakan Akses.

  2. Buat peran RAM.

    1. Di panel navigasi, pilih Identity Management > Roles.

    2. Di halaman Roles, klik Create Role.

    3. Buat peran RAM.

      1. Di panel Create Role, konfigurasikan parameter berikut dan klik OK.

        Parameter

        Deskripsi

        Jenis Entitas Tepercaya

        Pilih Alibaba Cloud Service.

        Nama Entitas Tepercaya

        spark.emr-serverless.aliyuncs.com

      2. Masukkan Role Name (misalnya, test-serverless-spark-jobrun) dan klik OK.

  3. Berikan izin kepada peran RAM.

    1. Di halaman Roles, temukan peran yang Anda buat dan klik Add Permissions di kolom Actions.

    2. Di panel Add Permissions, pilih Custom Policy dan tambahkan kebijakan akses yang Anda buat.

    3. Klik OK.

    4. Klik Close.

  4. Buat ruang kerja serta akses sumber daya eksternal.

    1. Masuk ke Konsol E-MapReduce.

    2. Di panel navigasi, pilih EMR Serverless > Spark.

    3. Klik Create Workspace dan konfigurasikan parameter berikut. Untuk informasi lebih lanjut tentang parameter, lihat Buat ruang kerja.

      • Workspace Directory: Pilih jalur OSS yang mana peran RAM yang Anda buat memiliki izin baca dan tulis.

      • Execution Role: Pilih nama peran RAM yang Anda buat (misalnya, test-serverless-spark-jobrun).

    4. Setelah ruang kerja dibuat, jalankan pekerjaan batch untuk memverifikasi izin. Untuk informasi lebih lanjut, lihat Panduan cepat untuk pengembangan JAR.

      • Jika Anda mengunggah file ke Bucket OSS yang telah diberi izin, tugas akan berjalan sesuai harapan.

      • Jika Anda mengunggah file ke Bucket OSS yang tidak diberi izin, tugas akan gagal dan pesan kesalahan menunjukkan bahwa Anda tidak memiliki izin untuk mengakses jalur OSS.

Contoh kebijakan lainnya

Akses data MaxCompute

Tambahkan kebijakan akses berikut ke peran eksekusi:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "odps:ActOnBehalfOfAnotherUser",
      "Resource": [
        "acs:odps:*:*:users/default/aliyun/*",
        "acs:odps:*:*:users/default/ramuser/*",
        "acs:odps:*:*:users/default/ramrole/*"
      ]
    }
  ]
}

Akses Bucket OSS yang memiliki KMS diaktifkan

Tambahkan kebijakan akses berikut ke peran eksekusi:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:List*",
        "kms:DescribeKey",
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*"
    }
  ]
}

Referensi