Tous les produits
Search
Centre de documentation

E-MapReduce:Rôles d'exécution

Dernière mise à jour :Sep 21, 2026

Les jobs d'un espace de travail EMR Serverless Spark utilisent un rôle d'exécution pour s'authentifier et accéder à d'autres services Alibaba Cloud, tels que Object Storage Service (OSS) et Data Lake Formation (DLF). Lors de la création d'un espace de travail, vous pouvez utiliser le rôle d'exécution par défaut ou un rôle personnalisé.

Cas d'utilisation

Pendant l'exécution des jobs, le rôle d'exécution appelle différentes ressources ou services et endosse une identité spécifiée pour authentifier et auditer ses actions. Voici les principaux cas d'utilisation :

  • Accès aux fichiers OSS

    Lors de l'exécution du job, le rôle d'exécution accède aux fichiers stockés dans Object Storage Service (OSS) et effectue des opérations sur ceux-ci.

  • Lecture et écriture des métadonnées DLF

    Si la gestion des autorisations est activée pour Data Lake Formation (DLF), le rôle d'exécution endosse différentes identités selon le type de job :

    • Développement de données : endosse l'identité du compte Alibaba Cloud ou de l'utilisateur RAM (sous-compte) qui soumet le job.

    • Passerelle Livy : endosse l'identité du créateur du jeton.

  • Lecture et écriture des données MaxCompute

    Lors de la lecture et de l'écriture des données MaxCompute, le rôle d'exécution endosse l'identité du compte Alibaba Cloud ou de l'utilisateur RAM (sous-compte) ayant soumis le job afin d'authentifier et d'auditer ses actions.

Notes d'utilisation

Il est impossible de modifier le rôle d'exécution après la création de l'espace de travail.

Rôle d'exécution par défaut

Lorsque vous créez un espace de travail, si vous ne modifiez pas le paramètre Execution Role, le système utilise automatiquement le rôle d'exécution par défaut AliyunEMRSparkJobRunDefaultRole.

Le rôle d'exécution par défaut présente les caractéristiques suivantes :

  • Nom du rôle : AliyunEMRSparkJobRunDefaultRole.

  • Politique associée : ce rôle inclut la politique d'accès système AliyunEMRSparkJobRunDefaultRolePolicy, qui accorde l'accès à Object Storage Service (OSS), Data Lake Formation (DLF) et MaxCompute.

  • Maintenance : Alibaba Cloud crée et maintient cette politique, en la mettant à jour automatiquement pour refléter les évolutions des exigences des services.

Important

Ne modifiez ni ne supprimez le rôle d'exécution par défaut AliyunEMRSparkJobRunDefaultRole. Cela pourrait entraîner l'échec de la création des ressources de l'espace de travail ou de l'exécution des jobs.

Rôle d'exécution personnalisé

Pour personnaliser les autorisations du rôle d'exécution, sélectionnez un rôle personnalisé dans le paramètre Execution Role lors de la création d'un espace de travail. Les étapes suivantes expliquent comment configurer un rôle personnalisé pour un accès sans mot de passe à d'autres ressources, telles que OSS et DLF, au sein du même compte Alibaba Cloud.

Remarque

La politique d'accès suivante illustre la configuration des autorisations pour un rôle personnalisé. Lorsque vous utilisez un rôle d'exécution personnalisé, notez que sa politique d'accès est statique et ne se met pas à jour automatiquement avec les changements des exigences des services Alibaba Cloud. Pour garantir le bon fonctionnement des jobs, nous vous recommandons de revoir et de mettre à jour régulièrement la politique d'accès. Reportez-vous à la politique d'accès (AliyunEMRSparkJobRunDefaultRolePolicy) du rôle d'exécution par défaut AliyunEMRSparkJobRunDefaultRole pour obtenir la liste actualisée des autorisations requises.

Procédure

  1. Créez une politique d'accès.

    1. Accédez à la page de création de politique.

      1. Connectez-vous à la console RAM en tant qu'administrateur RAM.

      2. Dans le volet de navigation de gauche, choisissez Permissions > Policies.

      3. Sur la page Policies, cliquez sur Create Policy.

    2. Sur la page Create Policy, cliquez sur l'onglet Json.

    3. Saisissez le contenu de la politique, puis cliquez sur 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. Saisissez un Name, par exemple test-serverless-spark, ainsi que des Remarks, puis cliquez sur OK.

      Cette politique contient les éléments suivants :

      • Action : spécifie l'opération sur une ressource spécifique. Cet exemple accorde les autorisations de lecture des données et d'interrogation des répertoires dans OSS et DLF.

      • Resource : spécifie les objets autorisés. Cet exemple accorde l'accès à tous les objets DLF et à tout le contenu du bucket OSS nommé serverless-spark-test-resources. Vous devez remplacer serverless-spark-test-resources par le nom de votre bucket OSS.

      Pour plus d'informations sur les éléments de base d'une politique d'accès, consultez la rubrique Éléments de base d'une politique d'accès.

  2. Créez un rôle RAM.

    1. Dans le volet de navigation de gauche, choisissez Identities > Role.

    2. Sur la page Role, cliquez sur Create Role.

    3. Créez le rôle RAM.

      1. Dans le panneau Create Role, configurez les paramètres suivants et cliquez sur OK.

        Parameter

        Description

        Select Trusted Entity

        Sélectionnez Alibaba Cloud Service.

        Trusted Service

        spark.emr-serverless.aliyuncs.com

      2. Saisissez un Role Name, par exemple test-serverless-spark-jobrun, puis cliquez sur OK.

  3. Accordez des autorisations au rôle RAM.

    1. Sur la page Role, cliquez sur Add Authorization dans la colonne Actions pour le rôle que vous avez créé.

    2. Dans le panneau Add Authorization, sélectionnez Custom policy et ajoutez la politique d'accès que vous avez créée à l'étape précédente.

    3. Cliquez sur OK.

    4. Cliquez sur Close.

  4. Créez un espace de travail et accédez aux ressources externes.

    1. Connectez-vous à la console E-MapReduce.

    2. Dans le volet de navigation de gauche, choisissez EMR Serverless > Spark.

    3. Cliquez sur Create Workspace et configurez les paramètres suivants. Pour plus d'informations sur les autres paramètres, consultez la rubrique Créer un espace de travail.

      • Workspace Directory : sélectionnez un chemin OSS pour lequel le rôle RAM que vous avez créé dispose des autorisations de lecture et d'écriture.

      • Execution Role : sélectionnez le rôle RAM que vous avez créé, par exemple test-serverless-spark-jobrun.

    4. Une fois l'espace de travail créé, exécutez un job par lot comme décrit dans la rubrique Démarrage rapide pour le développement JAR afin de vérifier les autorisations.

      • Si vous téléchargez un fichier dans le bucket OSS autorisé, le job s'exécute comme prévu.

      • Si vous téléchargez un fichier dans un bucket OSS non autorisé, le job échoue avec une erreur d'accès refusé pour le chemin OSS.

Autres exemples de politiques

Accès aux données MaxCompute

Ajoutez la politique d'accès suivante au rôle d'exécution.

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

Accès à OSS chiffré par KMS

Ajoutez la politique d'accès suivante au rôle d'exécution.

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

Documentation connexe