Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Acceso a los datos de S3 en otra AWS cuenta desde EMR Serverless
Puede ejecutar trabajos de Amazon EMR Serverless desde una AWS cuenta y configurarlos para acceder a los datos de los buckets de Amazon S3 que pertenezcan a otra cuenta. AWS En esta página se describe cómo configurar el acceso entre cuentas a S3 desde EMR sin servidor.
Los trabajos que se ejecutan en EMR Serverless pueden utilizar una política de bucket de S3 o un rol asumido para acceder a los datos de Amazon S3 desde una cuenta diferente. AWS
Requisitos previos
Para configurar el acceso multicuenta a Amazon EMR Serverless, complete las tareas con la sesión iniciada en dos cuentas: AWS
-
AccountA: esta es la cuenta de AWS en la que ha creado una aplicación Amazon EMR sin servidor. Antes de configurar el acceso entre cuentas, tenga preparado lo siguiente en esta cuenta:-
Una aplicación de Amazon EMR sin servidor en la que desee ejecutar los trabajos.
-
Un rol de ejecución de trabajos que tenga los permisos necesarios para ejecutar trabajos en la aplicación. Para obtener más información, consulta Roles en tiempo de ejecución de trabajo para Amazon EMR sin servidor.
-
-
AccountB: esta es la cuenta de AWS que contiene el bucket de S3 al que desea que accedan sus trabajos de Amazon EMR sin servidor.
Uso de una política de buckets de S3 para acceder a los datos de S3 entre cuentas
Para acceder al bucket de S3 en account B desde account A, adjunte la siguiente política al bucket de S3 en account B.
Para obtener más información sobre el acceso multicuenta de S3 con las políticas de bucket de S3, consulte el Ejemplo 2: El propietario del bucket concede permisos de bucket multicuenta en la Guía del usuario de Amazon Simple Storage Service.
Uso de un rol asumido para acceder a los datos de S3 entre cuentas
Otra forma de configurar el acceso multicuenta para Amazon EMR Serverless es con AssumeRole la acción de AWS Security Token Service ().AWS STS AWS STS es un servicio web global que le permite solicitar credenciales temporales con privilegios limitados para los usuarios. Puede realizar llamadas de API a EMR sin servidor y Amazon S3 con las credenciales de seguridad temporales que usted crea con AssumeRole.
Los siguientes pasos ilustran cómo utilizar un rol asumido para acceder a los datos de S3 entre cuentas desde EMR sin servidor:
-
Cree un bucket de Amazon S3,
cross-account-bucket, en laAccountB. Para obtener más información, consulta Cómo crear un depósito en la Guía del usuario de Amazon Simple Storage Service. Si desea tener acceso multicuenta a DynamoDB, cree también una tabla de DynamoDB en.AccountBPara obtener más información, consulte Creación de una tabla de DynamoDB en la Guía para desarrolladores de Amazon DynamoDB. -
Cree un rol de IAM
Cross-Account-Role-Ben laAccountBque pueda acceder across-account-bucket.Inicie sesión en la consola de IAM Consola de administración de AWS y ábrala en. https://console.aws.amazon.com/iam/
-
Elija Roles y, a continuación, cree un nuevo rol:
Cross-Account-Role-B. Para obtener más información sobre cómo crear funciones de IAM, consulte Creación de funciones de IAM en la Guía del usuario de IAM. -
Cree una política de IAM que especifique los permisos del
Cross-Account-Role-Bpara acceder al bucket de S3cross-account-bucket, tal como se muestra en la siguiente instrucción de política. Adjunte la política de IAM alCross-Account-Role-B. Para obtener más información, consulte Creación de políticas de IAM en la Guía del usuario de IAM.
Si requiere acceso a DynamoDB, cree una política de IAM que especifique los permisos para acceder a la tabla de DynamoDB entre cuentas. Adjunte la política de IAM al
Cross-Account-Role-B. Para obtener más información, consulte Amazon DynamoDB: permite el acceso a una tabla específica en la Guía del usuario de IAM.A continuación, se presenta una política para acceder a una tabla de DynamoDB
CrossAccountTable. -
Edite la relación de confianza del rol
Cross-Account-Role-B.-
Para configurar la relación de confianza del rol, elija la pestaña Relaciones de confianza en la consola de IAM para el rol
Cross-Account-Role-Bcreado en el paso 2. -
Seleccione Editar la relación de confianza.
-
Añada el siguiente documento de política. Esto permite que
Job-Execution-Role-AenAccountAasuma el rolCross-Account-Role-B.
-
-
Conceda
Job-Execution-Role-AAccountAel AWS STSAssumeRolepermiso para asumir.Cross-Account-Role-B-
En la consola de IAM de la AWS cuenta
AccountA, seleccioneJob-Execution-Role-A. -
Agregue la siguiente instrucción de política al
Job-Execution-Role-Apara denegar la acciónAssumeRoleen el rolCross-Account-Role-B.
-
Ejemplos de roles asumidos
Utilice una única función asumida para acceder a todos los recursos de S3 de una cuenta o, con Amazon EMR 6.11 y versiones posteriores, configure varias funciones de IAM para que las asuma al acceder a diferentes buckets de S3 entre cuentas.
Temas
Acceso a los recursos de S3 con un rol asumido
nota
Al configurar un trabajo para usar un único rol asumido, todos los recursos de S3 del trabajo usan ese rol, incluido el script de entryPoint.
Si desea utilizar un único rol asumido para acceder a todos los recursos de S3 de la cuenta B, especifique las siguientes configuraciones:
-
Especifique la configuración
fs.s3.customAWSCredentialsProviderparacom.amazonaws.emr.AssumeRoleAWSCredentialsProviderde EMRFS. -
En el caso de Spark, utilice
spark.emr-serverless.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARNyspark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARNpara especificar las variables de entorno del controlador y los ejecutores. -
Para Hive
hive.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN, utilice ytez.task.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARNespecifique las variables de entorno en el controlador Hivetez.am.emr-serverless.launch.env.ASSUME_ROLE_CREDENTIALS_ROLE_ARN, la aplicación principal de Tez y los contenedores de tareas de Tez.
Los siguientes ejemplos muestran cómo utilizar un rol asumido para iniciar una ejecución de un trabajo EMR Serverless con acceso multicuenta.
Acceso a los recursos de S3 con varios roles asumidos
Con las versiones 6.11.0 y posteriores de EMR Serverless, configure varias funciones de IAM para que las asuma cuando acceda a diferentes depósitos entre cuentas. Si desea acceder a diferentes recursos de S3 con diferentes roles asumidos en la cuenta B, utilice las siguientes configuraciones al iniciar la ejecución del trabajo:
-
Especifique la configuración
fs.s3.customAWSCredentialsProviderparacom.amazonaws.emr.serverless.credentialsprovider.BucketLevelAssumeRoleCredentialsProviderde EMRFS. -
Especifique la configuración
fs.s3.bucketLevelAssumeRoleMappingde EMRFS para definir la asignación desde el nombre del bucket de S3 hasta el rol de IAM que se va a asumir en la cuenta B. El formato del valor debe serbucket1->role1;bucket2->role2.
Por ejemplo, utilícelas para acceder al bucket y arn:aws:iam:: utilícelas para acceder al bucketAccountB:role/Cross-Account-Role-B-1bucket1. arn:aws:iam:: AccountB:role/Cross-Account-Role-B-2bucket2 Los siguientes ejemplos muestran cómo iniciar una ejecución de un trabajo EMR Serverless con acceso multicuenta a través de varios roles asumidos.