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.
Accès aux données S3 depuis un autre AWS compte depuis EMR Serverless
Vous pouvez exécuter des tâches Amazon EMR Serverless à partir d'un AWS compte et les configurer pour accéder aux données des compartiments Amazon S3 appartenant à un autre compte. AWS Cette page décrit comment configurer l'accès entre comptes à S3 depuis EMR Serverless.
Les tâches exécutées sur EMR Serverless peuvent utiliser une politique de compartiment S3 ou un rôle assumé pour accéder aux données dans Amazon S3 à partir d'un autre compte. AWS
Prérequis
Pour configurer l'accès entre comptes pour Amazon EMR Serverless, effectuez les tâches en étant connecté à deux comptes : AWS
-
AccountA— Il s'agit du AWS compte sur lequel vous avez créé une application Amazon EMR Serverless. Avant de configurer l'accès entre comptes, préparez les éléments suivants dans ce compte :-
Une application Amazon EMR Serverless dans laquelle vous souhaitez exécuter des tâches.
-
Rôle d'exécution de tâches disposant des autorisations requises pour exécuter des tâches dans l'application. Pour plus d’informations, consultez Rôles d'exécution des tâches pour Amazon EMR Serverless.
-
-
AccountB— Il s'agit du AWS compte qui contient le compartiment S3 auquel vous souhaitez que vos tâches Amazon EMR Serverless accèdent.
Utiliser une politique de compartiment S3 pour accéder aux données S3 entre comptes
Pour accéder au compartiment S3 account B depuisaccount A, attachez la politique suivante au compartiment S3 depuisaccount B.
Pour plus d'informations sur l'accès entre comptes S3 avec les politiques relatives aux compartiments S3, reportez-vous à l'exemple 2 : le propriétaire du compartiment accorde des autorisations de compartiment entre comptes dans le guide de l'utilisateur d'Amazon Simple Storage Service.
Utiliser un rôle assumé pour accéder aux données S3 entre comptes
Une autre méthode pour configurer l'accès entre comptes pour Amazon EMR Serverless consiste à utiliser AssumeRole l'action du AWS Security Token Service ().AWS STS AWS STS est un service Web mondial qui vous permet de demander des informations d'identification temporaires à privilèges limités pour les utilisateurs. Vous pouvez effectuer des appels d'API vers EMR Serverless et Amazon S3 à l'aide des informations d'identification de sécurité temporaires que vous avez créées avec. AssumeRole
Les étapes suivantes montrent comment utiliser un rôle assumé pour accéder aux données S3 entre comptes depuis EMR Serverless :
-
Créez un compartiment Amazon S3,
cross-account-bucket, dansAccountB. Pour plus d'informations, reportez-vous à la section Création d'un compartiment dans le guide de l'utilisateur d'Amazon Simple Storage Service. Si vous souhaitez bénéficier d'un accès multicompte à DynamoDB, créez également une table DynamoDB dans.AccountBPour plus d'informations, reportez-vous à la section Création d'une table DynamoDB dans le manuel du développeur Amazon DynamoDB. -
Créez un rôle IAM
Cross-Account-Role-Bdans leAccountBqui peut accéder aucross-account-bucket.Connectez-vous à la console IAM AWS Management Console et ouvrez-la à https://console.aws.amazon.com/iam/
l'adresse. -
Choisissez Rôles et créez un nouveau rôle :
Cross-Account-Role-B. Pour plus d'informations sur la création de rôles IAM, reportez-vous à la section Création de rôles IAM dans le Guide de l'utilisateur IAM. -
Créez une politique IAM qui spécifie les autorisations du
Cross-Account-Role-Bà accéder au compartiment S3cross-account-bucket, comme le montre la déclaration de politique suivante. Attachez ensuite la politique IAM auCross-Account-Role-B. Pour plus d'informations, reportez-vous à la section Création de politiques IAM dans le Guide de l'utilisateur IAM.
Si vous avez besoin d'un accès DynamoDB, créez une politique IAM qui spécifie les autorisations d'accès à la table DynamoDB entre comptes. Attachez ensuite la politique IAM au
Cross-Account-Role-B. Pour plus d'informations, consultez Amazon DynamoDB : autorise l'accès à une table spécifique dans le guide de l'utilisateur IAM.Voici une politique permettant d'autoriser l'accès à la table DynamoDB
CrossAccountTable. -
Modifiez la relation de confiance du rôle
Cross-Account-Role-B.-
Pour configurer la relation de confiance pour le rôle, choisissez l'onglet Relations de confiance dans la console IAM pour le rôle
Cross-Account-Role-Bque vous avez créé à l'étape 2. -
Sélectionnez Modifier la relation de confiance.
-
Ajoutez le document de politique suivant. Cela permet
AccountAàJob-Execution-Role-Ain d'assumer leCross-Account-Role-Brôle.
-
-
Accordez
Job-Execution-Role-AAccountAl' AWS STSAssumeRoleautorisation d'assumerCross-Account-Role-B.-
Dans la console IAM du AWS compte
AccountA, sélectionnezJob-Execution-Role-A. -
Ajoutez la déclaration de politique générale suivante au rôle
Job-Execution-Role-Apour autoriser l'actionAssumeRolesur le rôleCross-Account-Role-B.
-
Exemples de rôles supposés
Utilisez un seul rôle assumé pour accéder à toutes les ressources S3 d'un compte, ou avec Amazon EMR 6.11 et versions ultérieures, configurez plusieurs rôles IAM à assumer lorsque vous accédez à différents compartiments S3 entre comptes.
Rubriques
Accédez aux ressources S3 avec un rôle assumé
Note
Lorsque vous configurez une tâche pour utiliser un seul rôle assumé, toutes les ressources S3 de la tâche utilisent ce rôle, y compris le entryPoint script.
Si vous souhaitez utiliser un seul rôle assumé pour accéder à toutes les ressources S3 du compte B, spécifiez les configurations suivantes :
-
Spécifiez la configuration
fs.s3.customAWSCredentialsProviderEMRFS à.com.amazonaws.emr.AssumeRoleAWSCredentialsProvider -
Pour Spark, utilisez
spark.emr-serverless.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARNetspark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARNpour spécifier les variables d'environnement sur le pilote et les exécuteurs. -
Pour Hive, utilisez
hive.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARNtez.am.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN, et pour spécifier les variablestez.task.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARNd'environnement sur le pilote Hive, l'application principale Tez et les conteneurs de tâches Tez.
Les exemples suivants montrent comment utiliser un rôle assumé pour démarrer une tâche EMR sans serveur exécutée avec un accès entre comptes.
Accédez aux ressources S3 avec plusieurs rôles assumés
Avec les versions 6.11.0 et supérieures d'EMR Serverless, configurez plusieurs rôles IAM à assumer lorsque vous accédez à différents buckets multicomptes. Si vous souhaitez accéder à différentes ressources S3 avec différents rôles assumés dans le compte B, utilisez les configurations suivantes lorsque vous démarrez l'exécution de la tâche :
-
Spécifiez la configuration
fs.s3.customAWSCredentialsProviderEMRFS à.com.amazonaws.emr.serverless.credentialsprovider.BucketLevelAssumeRoleCredentialsProvider -
Spécifiez la configuration EMRFS
fs.s3.bucketLevelAssumeRoleMappingpour définir le mappage entre le nom du compartiment S3 et le rôle IAM à assumer dans le compte B. La valeur doit être au format debucket1->role1;bucket2->role2.
Par exemple, utilisez arn:aws:iam:: pour accéder au bucket AccountB:role/Cross-Account-Role-B-1bucket1 et utilisez arn:aws:iam:: pour accéder au bucketAccountB:role/Cross-Account-Role-B-2bucket2. Les exemples suivants montrent comment démarrer une tâche EMR sans serveur exécutée avec un accès entre comptes via plusieurs rôles assumés.