Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Rôles d'exécution pour Amazon EMR Steps
Un rôle d'exécution est un rôle AWS Identity and Access Management (IAM) que vous pouvez spécifier lorsque vous soumettez une tâche ou une requête à un EMR cluster Amazon. La tâche ou la requête que vous soumettez à votre EMR cluster Amazon utilise le rôle d'exécution pour accéder à AWS des ressources, telles que des objets dans Amazon S3. Vous pouvez spécifier des rôles d'exécution avec Amazon EMR pour les tâches Spark et Hive.
Vous pouvez également spécifier des rôles d'exécution lorsque vous vous connectez à des EMR clusters Amazon dans Amazon SageMaker AI et lorsque vous attachez un espace de travail Amazon EMR Studio à un EMR cluster. Pour plus d'informations, consultez Connect to an Amazon EMR cluster from SageMaker AI Studio etExécuter un espace de travail de EMR studio avec un rôle d'exécution.
Auparavant, les EMR clusters Amazon exécutaient EMR des tâches ou des requêtes Amazon avec des autorisations basées sur la IAM politique attachée au profil d'instance que vous utilisiez pour lancer le cluster. Cela signifiait que les politiques devaient contenir l'union de toutes les autorisations pour toutes les tâches et requêtes exécutées sur un EMR cluster Amazon. Avec les rôles d'exécution, vous pouvez désormais gérer le contrôle d'accès pour chaque tâche ou requête individuellement, au lieu de partager le profil d'EMRinstance Amazon du cluster.
Sur les EMR clusters Amazon dotés de rôles d'exécution, vous pouvez également appliquer un contrôle d'accès AWS Lake Formation basé aux tâches et requêtes Spark, Hive et Presto concernant vos lacs de données. Pour en savoir plus sur la façon de procéder à l'intégration à AWS Lake Formation, voirIntégrez Amazon EMR avec AWS Lake Formation.
Note
Lorsque vous spécifiez un rôle d'exécution pour une EMR étape Amazon, les tâches ou requêtes que vous soumettez ne peuvent accéder qu'aux AWS ressources autorisées par les politiques associées au rôle d'exécution. Ces tâches et requêtes ne peuvent pas accéder au service de métadonnées d'instance sur les EC2 instances du cluster ni utiliser le profil d'EC2instance du cluster pour accéder aux AWS ressources.
Conditions préalables au lancement d'un EMR cluster Amazon avec un rôle d'exécution
Rubriques
Étape 1 : configurer les configurations de sécurité dans Amazon EMR
Utilisez la JSON structure suivante pour créer une configuration de sécurité sur le AWS Command Line Interface (AWS CLI), et définissez EnableApplicationScopedIAMRole
surtrue
. Pour plus d'informations sur les configurations de sécurité, consultez Utiliser les configurations de sécurité pour configurer la sécurité EMR du cluster Amazon.
{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true } } }
Nous vous recommandons de toujours activer les options de chiffrement en transit dans la configuration de sécurité, afin que les données transférées sur Internet soient chiffrées, plutôt qu'en texte brut. Vous pouvez ignorer ces options si vous ne souhaitez pas vous connecter aux EMR clusters Amazon avec des rôles d'exécution issus de SageMaker Runtime Studio ou EMR Studio. Pour configurer le chiffrement des données, consultez Configuration du chiffrement des données.
Vous pouvez également créer une configuration de sécurité avec des paramètres personnalisés à l'aide de la AWS Management Console
Étape 2 : configurer un profil d'EC2instance pour le EMR cluster Amazon
EMRLes clusters Amazon utilisent le rôle de profil d'EC2instance Amazon pour assumer les rôles d'exécution. Pour utiliser des rôles d'exécution avec Amazon EMR Steps, ajoutez les politiques suivantes au IAM rôle que vous prévoyez d'utiliser comme rôle de profil d'instance. Pour ajouter des politiques à un IAM rôle ou modifier une politique intégrée ou gérée existante, consultez la section Ajouter et supprimer des autorisations IAM d'identité.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowRuntimeRoleUsage", "Effect":"Allow", "Action":[ "sts:AssumeRole", "sts:TagSession" ], "Resource":[
<runtime-role-ARN>
] } ] }
Étape 3 : Configurer une politique d'approbation
Pour chaque IAM rôle que vous prévoyez d'utiliser comme rôle d'exécution, définissez la politique de confiance suivante, en la EMR_EC2_DefaultRole
remplaçant par votre rôle de profil d'instance. Pour modifier la politique de confiance d'un IAM rôle, consultez la section Modification d'une politique de confiance de rôle.
{ "Sid":"AllowAssumeRole", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
<AWS_ACCOUNT_ID>
:role/EMR_EC2_DefaultRole" }, "Action":"sts:AssumeRole" }
Lancez un EMR cluster Amazon avec un contrôle d'accès basé sur les rôles
Après avoir configuré vos configurations, vous pouvez lancer un EMR cluster Amazon avec la configuration de sécurité depuisÉtape 1 : configurer les configurations de sécurité dans Amazon EMR. Pour utiliser des rôles d'exécution avec Amazon EMR Steps, utilisez Release Label emr-6.7.0
ou version ultérieure, et sélectionnez Hive, Spark ou les deux comme application de cluster. Pour vous connecter depuis SageMaker AI Studio, utilisez release emr-6.9.0
ou version ultérieure et sélectionnez Livy, Spark, Hive ou Presto comme application de cluster. Pour savoir comment mettre à jour votre cluster, consultez Spécifier une configuration de sécurité pour un EMR cluster Amazon.
Soumettez des jobs Spark en suivant EMR les étapes d'Amazon
Voici un exemple d'exécution de l' HdfsTest exemple inclus dans Apache Spark. Cet API appel ne réussit que si le rôle EMR d'exécution Amazon fourni peut accéder auS3_LOCATION
.
RUNTIME_ROLE_ARN=
<runtime-role-arn>
S3_LOCATION=<s3-path>
REGION=<aws-region>
CLUSTER_ID=<cluster-id>
aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Spark Example", "ActionOnFailure": "CONTINUE","HadoopJarStep": { "Jar":"command-runner.jar","Args" : ["spark-example","HdfsTest", "$S3_LOCATION"] } }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION
Note
Nous vous recommandons de désactiver l'SSHaccès au EMR cluster Amazon et de n'autoriser Amazon qu'EMRAddJobFlowSteps
APIà accéder au cluster.
Soumettez des offres d'emploi Hive en suivant les étapes d'Amazon EMR
L'exemple suivant utilise Apache Hive avec EMR les étapes Amazon pour soumettre une tâche afin d'exécuter le QUERY_FILE.hql
fichier. Cette requête n'aboutit que si le rôle d'exécution fourni peut accéder au chemin Amazon S3 du fichier de requête.
RUNTIME_ROLE_ARN=
<runtime-role-arn>
REGION=<aws-region>
CLUSTER_ID=<cluster-id>
aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Run hive query using command-runner.jar - simple select","ActionOnFailure":"CONTINUE","HadoopJarStep": { "Jar": "command-runner.jar","Args" :["hive - f","s3://DOC_EXAMPLE_BUCKET
/QUERY_FILE.hql"] } }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION
Connectez-vous aux EMR clusters Amazon avec des rôles d'exécution depuis un bloc-notes SageMaker AI Studio
Vous pouvez appliquer des rôles EMR d'exécution Amazon aux requêtes que vous exécutez dans des EMR clusters Amazon depuis SageMaker AI Studio. Pour ce faire, suivez les étapes suivantes.
-
Suivez les instructions de la section Lancer Amazon SageMaker AI Studio pour créer un studio SageMaker AI.
-
Dans l'interface utilisateur d' SageMaker AI Studio, démarrez un bloc-notes avec des noyaux compatibles. Par exemple, démarrez une SparkMagic image avec un PySpark noyau.
-
Choisissez un EMR cluster Amazon dans SageMaker AI Studio, puis sélectionnez Connect.
-
Choisissez un rôle d'exécution, puis sélectionnez Connecter.
Cela créera une cellule de bloc-notes SageMaker IA avec des commandes magiques pour se connecter à votre EMR cluster Amazon avec le rôle EMR d'exécution Amazon choisi. Dans la cellule du bloc-notes, vous pouvez saisir et exécuter des requêtes avec un rôle d'exécution et un contrôle d'accès basé sur Lake Formation. Pour un exemple plus détaillé, consultez Appliquer des contrôles d'accès aux données précis avec AWS Lake Formation Amazon et Amazon depuis EMR Amazon SageMaker AI Studio
Contrôler l'accès au rôle EMR d'exécution Amazon
Vous pouvez contrôler l'accès au rôle d'exécution à l'aide de la clé de condition elasticmapreduce:ExecutionRoleArn
. La politique suivante permet à un IAM directeur d'utiliser un IAM rôle nomméCaller
, ou tout IAM rôle commençant par la chaîneCallerTeamRole
, comme rôle d'exécution.
Important
Vous devez créer une condition basée sur la clé de elasticmapreduce:ExecutionRoleArn
contexte lorsque vous autorisez un appelant à appeler le AddJobFlowSteps
ou GetClusterSessionCredentials
APIs, comme le montre l'exemple suivant.
{ "Sid":"AddStepsWithSpecificExecRoleArn", "Effect":"Allow", "Action":[ "elasticmapreduce:AddJobFlowSteps" ], "Resource":"*", "Condition":{ "StringEquals":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::
<AWS_ACCOUNT_ID>
:role/Caller" ] }, "StringLike":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::<AWS_ACCOUNT_ID>
:role/CallerTeamRole*" ] } } }
Établissez la confiance entre les rôles d'exécution et les EMR clusters Amazon
Amazon EMR génère un identifiant unique ExternalId
pour chaque configuration de sécurité avec une autorisation de rôle d'exécution activée. Cette autorisation permet à chaque utilisateur de posséder un ensemble de rôles d'exécution à utiliser sur les clusters qui lui appartiennent. Par exemple, dans une entreprise, chaque service peut utiliser son identifiant externe pour mettre à jour la politique d'approbation relative à son propre ensemble de rôles d'exécution.
Vous pouvez trouver l'identifiant externe auprès d'Amazon EMR DescribeSecurityConfiguration
API, comme indiqué dans l'exemple suivant.
aws emr describe-security-configuration --name 'iamconfig-with-lf'{"Name": "iamconfig-with-lf", "SecurityConfiguration": "{\"AuthorizationConfiguration\":{\"IAMConfiguration\":{\"EnableApplicationScopedIAMRole\ ":true,\"ApplicationScopedIAMRoleConfiguration\":{\"PropagateSourceIdentity\":true,\"Exter nalId\":\"FXH5TSACFDWUCDSR3YQE2O7ETPUSM4OBCGLYWODSCUZDNZ4Y\"}},\"Lake FormationConfiguration\":{\"AuthorizedSessionTagValue\":\"Amazon EMR\"}}}", "CreationDateTime": "2022-06-03T12:52:35.308000-07:00" }
Pour plus d'informations sur l'utilisation d'un identifiant externe, voir Comment utiliser un identifiant externe lorsque vous accordez l'accès à vos AWS ressources à un tiers.
Audit
Pour surveiller et contrôler les actions entreprises par les utilisateurs finaux avec IAM les rôles, vous pouvez activer la fonctionnalité d'identité source. Pour en savoir plus sur l'identité source, consultez Surveiller et contrôler les actions prises avec les rôles endossés.
Pour suivre l'identité source, ApplicationScopedIAMRoleConfiguration/PropagateSourceIdentity
true
configurez-la dans votre configuration de sécurité, comme suit.
{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true, "ApplicationScopedIAMRoleConfiguration":{ "PropagateSourceIdentity":true } } } }
Lorsque vous définissez cette PropagateSourceIdentity
optiontrue
, Amazon EMR applique l'identité source à partir des informations d'identification d'appel à une session de travail ou de requête que vous créez avec le rôle d'exécution. Si aucune identité source n'est présente dans les informations d'identification d'appel, Amazon EMR ne définit pas l'identité source.
Pour utiliser cette propriété, accordez des autorisations sts:SetSourceIdentity
à votre profil d'instance, comme suit.
{ // PropagateSourceIdentity statement "Sid":"PropagateSourceIdentity", "Effect":"Allow", "Action":"sts:SetSourceIdentity", "Resource":[
<runtime-role-ARN>
], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity>
} } }
Vous devez également ajouter l'instruction AllowSetSourceIdentity
à la politique d'approbation de vos rôles d'exécution.
{ // AllowSetSourceIdentity statement "Sid":"AllowSetSourceIdentity", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
<AWS_ACCOUNT_ID>
:role/EMR_EC2_DefaultRole" }, "Action":[ "sts:SetSourceIdentity", "sts:AssumeRole" ], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity>
} } }
Considérations supplémentaires
Note
Avec la EMR version Amazonemr-6.9.0
, vous risquez de rencontrer des pannes intermittentes lorsque vous vous connectez à EMR des clusters Amazon depuis SageMaker AI Studio. Pour résoudre ce problème, vous pouvez installer le correctif avec une action de démarrage lorsque vous lancez le cluster. Pour plus d'informations sur les correctifs, consultez la section Problèmes connus liés à la EMR version 6.9.0 d'Amazon.
Tenez également compte des points suivants lorsque vous configurez des rôles d'exécution pour AmazonEMR.
-
Amazon EMR prend en charge les rôles d'exécution dans toutes les publicités Régions AWS.
-
EMRLes étapes Amazon prennent en charge les tâches Apache Spark et Apache Hive avec des rôles d'exécution lorsque vous utilisez release
emr-6.7.0
ou version ultérieure. -
SageMaker AI Studio prend en charge les requêtes Spark, Hive et Presto avec des rôles d'exécution lorsque vous utilisez release
emr-6.9.0
ou version ultérieure. -
Les noyaux de bloc-notes suivants dans SageMaker AI prennent en charge les rôles d'exécution :
-
DataScience — Noyau Python 3
-
DataScience 2.0 — Noyau Python 3
-
DataScience 3.0 — Noyau Python 3
-
SparkAnalytics 1.0 — SparkMagic et PySpark noyaux
-
SparkAnalytics 2.0 — SparkMagic et PySpark noyaux
-
SparkMagic — PySpark noyau
-
-
Amazon EMR prend en charge les étapes qui
RunJobFlow
ne sont utilisées qu'au moment de la création du cluster. Cela API ne prend pas en charge les rôles d'exécution. -
Amazon EMR ne prend pas en charge les rôles d'exécution sur les clusters que vous configurez pour être hautement disponibles.
À partir de la EMR version 7.5.0 d'Amazon et des versions ultérieures, les rôles d'exécution prennent en charge l'affichage de Spark et des interfaces YARN utilisateur (UIs), telles que les suivantes : Spark Live UI, Spark History Server et YARN ResourceManager. YARN NodeManager Lorsque vous y accédezUIs, une demande de nom d'utilisateur et de mot de passe s'affiche. Les noms d'utilisateur et les mots de passe peuvent être générés à l'aide du EMR GetClusterSessionCredentials API. Pour plus d'informations sur les détails d'utilisation duAPI, voir GetClusterSessionCredentials.
Voici un exemple d'EMR GetClusterSessionCredentials APIutilisation de :
aws emr get-cluster-session-credentials --cluster-id
<cluster_ID>
--execution-role-arn<IAM_role_arn>
-
Vous devez échapper aux arguments de votre commande Bash lorsque vous exécutez des commandes avec le
command-runner.jar
JAR fichier :aws emr add-steps --cluster-id
<cluster-id>
--steps '[{"Name":"sample-step","ActionOnFailure":"CONTINUE","Jar":"command-runner.jar","Properties":"","Args":["bash","-c","\"aws s3 ls\""],"Type":"CUSTOM_JAR"}]' --execution-role-arn<IAM_ROLE_ARN>
-
Les rôles d'exécution ne permettent pas de contrôler l'accès aux ressources du cluster, telles que HDFS etHMS.