All Products
Search
Document Center

E-MapReduce:Execution roles

Last Updated:Aug 22, 2026

Pekerjaan di ruang kerja EMR Serverless Spark menggunakan execution role untuk melakukan autentikasi dan mengakses layanan Alibaba Cloud lainnya, seperti Object Storage Service (OSS) dan Data Lake Formation (DLF). Saat membuat ruang kerja, Anda dapat menggunakan execution role default atau role kustom.

Use cases

Selama eksekusi pekerjaan, execution role memanggil berbagai resource atau layanan serta mengasumsikan identitas tertentu untuk mengautentikasi dan mengaudit aksinya. Use case utamanya adalah sebagai berikut:

  • Akses file OSS

    Selama eksekusi pekerjaan, execution role mengakses dan mengoperasikan file yang disimpan di Object Storage Service (OSS).

  • Baca dan tulis metadata DLF

    Jika pengelolaan izin diaktifkan untuk Data Lake Formation (DLF), execution role mengasumsikan identitas berbeda berdasarkan jenis pekerjaan:

    • Pengembangan data: Mengasumsikan identitas Akun Alibaba Cloud atau RAM user (sub-account) yang mengirimkan pekerjaan.

    • Livy Gateway: Mengasumsikan identitas pembuat token.

  • Baca dan tulis data MaxCompute

    Saat membaca dan menulis data MaxCompute, execution role mengasumsikan identitas Akun Alibaba Cloud atau RAM user (sub-account) yang mengirimkan pekerjaan untuk mengautentikasi dan mengaudit aksinya.

Usage notes

Execution role tidak dapat diubah setelah ruang kerja dibuat.

Default execution role

Saat membuat ruang kerja, jika Anda tidak mengubah pengaturan Execution Role, sistem secara otomatis menggunakan execution role default AliyunEMRSparkJobRunDefaultRole.

Execution role default memiliki properti berikut:

  • Nama role: AliyunEMRSparkJobRunDefaultRole.

  • Kebijakan terkait: Role ini mencakup kebijakan akses sistem AliyunEMRSparkJobRunDefaultRolePolicy, yang memberikan akses ke Object Storage Service (OSS), Data Lake Formation (DLF), dan MaxCompute.

  • Pemeliharaan: Alibaba Cloud membuat dan memelihara kebijakan ini, serta memperbaruinya secara otomatis untuk mencerminkan perubahan pada persyaratan layanan.

Penting

Jangan mengedit atau menghapus execution role default AliyunEMRSparkJobRunDefaultRole. Tindakan tersebut dapat menyebabkan kegagalan dalam pembuatan resource ruang kerja atau eksekusi pekerjaan.

Custom execution role

Untuk menyesuaikan izin execution role, pilih role kustom pada pengaturan Execution Role saat membuat ruang kerja. Langkah-langkah berikut menunjukkan cara mengonfigurasi role kustom untuk akses tanpa password ke resource lain, seperti OSS dan DLF, dalam satu Akun Alibaba Cloud yang sama.

Catatan

Kebijakan akses berikut merupakan contoh cara mengonfigurasi izin untuk role kustom. Saat menggunakan custom execution role, perhatikan bahwa kebijakan aksesnya bersifat statis dan tidak diperbarui secara otomatis seiring perubahan persyaratan layanan Alibaba Cloud. Untuk memastikan pekerjaan berjalan dengan benar, kami menyarankan agar Anda secara berkala meninjau dan memperbarui kebijakan akses tersebut. Rujuk kebijakan akses (AliyunEMRSparkJobRunDefaultRolePolicy) dari execution role default AliyunEMRSparkJobRunDefaultRole untuk daftar terbaru izin yang diperlukan.

Procedure

  1. Buat kebijakan akses.

    1. Buka halaman pembuatan kebijakan.

      1. Masuk ke Konsol RAM sebagai administrator RAM.

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

      3. Di halaman Policies, klik Create Policy.

    2. Di halaman Create Policy, klik tab Json.

    3. Masukkan konten kebijakan, lalu 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 Remarks, lalu klik OK.

      Kebijakan ini berisi elemen-elemen berikut:

      • Action: Menentukan operasi pada resource tertentu. Contoh ini memberikan izin untuk membaca data dan menjalankan kueri pada direktori di OSS dan DLF.

      • Resource: Menentukan objek yang diizinkan. Contoh ini memberikan akses ke semua objek DLF dan seluruh konten di bucket OSS bernama serverless-spark-test-resources. Anda harus mengganti serverless-spark-test-resources dengan nama bucket OSS Anda sendiri.

      Untuk informasi lebih lanjut tentang elemen dasar kebijakan akses, lihat Basic elements of an access policy.

  2. Buat role RAM.

    1. Di panel navigasi sebelah kiri, pilih Identities > Role.

    2. Di halaman Role, klik Create Role.

    3. Buat role RAM.

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

        Parameter

        Description

        Select Trusted Entity

        Pilih Alibaba Cloud Service.

        Trusted Service

        spark.emr-serverless.aliyuncs.com

      2. Masukkan Role Name, misalnya test-serverless-spark-jobrun, lalu klik OK.

  3. Berikan izin kepada role RAM.

    1. Di halaman Role, klik Add Authorization di kolom Actions untuk role yang telah Anda buat.

    2. Di panel Add Authorization, pilih Custom policy dan tambahkan kebijakan akses yang telah Anda buat pada langkah sebelumnya.

    3. Klik OK.

    4. Klik Close.

  4. Buat ruang kerja dan akses resource eksternal.

    1. Masuk ke Konsol E-MapReduce.

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

    3. Klik Create Workspace dan konfigurasikan parameter berikut. Untuk informasi lebih lanjut tentang parameter lainnya, lihat Create a workspace.

      • Workspace Directory: Pilih path OSS yang memiliki izin baca dan tulis untuk role RAM yang telah Anda buat.

      • Execution Role: Pilih role RAM yang telah Anda buat, misalnya test-serverless-spark-jobrun.

    4. Setelah ruang kerja dibuat, jalankan pekerjaan batch seperti yang dijelaskan dalam Quick start for JAR development untuk memverifikasi izin tersebut.

      • Jika Anda mengunggah file ke bucket OSS yang telah diizinkan, pekerjaan akan berjalan sesuai harapan.

      • Jika Anda mengunggah file ke bucket OSS yang tidak diizinkan, pekerjaan akan gagal dengan error akses ditolak untuk path OSS tersebut.

Other policy examples

MaxCompute data access

Tambahkan kebijakan akses berikut ke execution role.

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

KMS-encrypted OSS access

Tambahkan kebijakan akses berikut ke execution role.

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

Related documentation