Introducción a Amazon EMR sin servidor - Amazon EMR

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.

Introducción a Amazon EMR sin servidor

Este tutorial le ayudará a empezar a utilizar EMR sin servidor al implementar una carga de trabajo de ejemplo de Spark o Hive. Creará, ejecutará y depurará su propia aplicación. En la mayoría de los apartados de este tutorial, le mostraremos opciones predeterminadas.

Antes de iniciar una aplicación de EMR sin servidor, realice las siguientes tareas.

Otorgar permisos para usar EMR sin servidor

Para usar EMR sin servidor, necesita un rol de usuario o de IAM con una política adjunta que otorgue permisos para EMR sin servidor. Para crear un usuario y asociar la política correspondiente a ese usuario, siga las instrucciones de Concesión de permisos.

Preparar el almacenamiento para EMR sin servidor

En este tutorial, utilizará un bucket de S3 para almacenar los archivos de salida y los registros de la carga de trabajo de muestra de Spark o Hive que ejecutará con una aplicación EMR sin servidor. Para crear un bucket, siga las instrucciones en Crear un bucket en la Guía del usuario de la consola de Amazon Simple Storage Service. Sustituya cualquier referencia adicional a amzn-s3-demo-bucket por el nombre del bucket recién creado.

Crear un EMR Studio para ejecutar cargas de trabajo interactivas

Si quiere usar EMR sin servidor para ejecutar consultas interactivas a través de cuadernos alojados en EMR Studio, debe especificar un bucket de S3 y el rol de servicio mínimo para que EMR sin servidor cree un espacio de trabajo. Para ver los pasos de configuración, consulte Configurar un EMR Studio en la Guía de administración de Amazon EMR. Para más información sobre cargas de trabajo interactivas, consulte Ejecutar cargas de trabajo interactivas con EMR sin servidor a través de EMR Studio.

Crear un rol de tiempo de ejecución del trabajo

Las ejecuciones de trabajos en EMR Serverless utilizan un rol de tiempo de ejecución que proporciona permisos granulares a recursos Servicios de AWS y específicos en tiempo de ejecución. En este tutorial, un bucket público de S3 aloja los datos y los scripts. El bucket amzn-s3-demo-bucket almacena la salida.

Para configurar un rol de tiempo de ejecución de un trabajo, primero cree un rol de tiempo de ejecución con una política de confianza para que EMR sin servidor pueda usar el nuevo rol. A continuación, adjunte la política de acceso de S3 requerida a ese rol. Los pasos siguientes le guiarán a través del proceso.

Console
  1. Vaya a la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación izquierdo, elija Roles.

  3. Elija Crear rol.

  4. Para tipo de rol, elija Política de confianza personalizada e introduzca la siguiente política de confianza. Esto permite que los trabajos enviados a sus aplicaciones Amazon EMR Serverless accedan a otros Servicios de AWS en su nombre.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  5. Seleccione Siguiente para ir a la página Añadir permisos y, a continuación, elija Crear política.

  6. La página Crear política se abre en una pestaña nueva. Pegue la política JSON a continuación.

    importante

    Sustituya amzn-s3-demo-bucket en la política que aparece a continuación por el nombre real del bucket creado enPreparar el almacenamiento para EMR sin servidor. Se trata de una política básica para el acceso a S3. Para ver más ejemplos de roles de ejecución de trabajos, consulte Roles en tiempo de ejecución de trabajo para Amazon EMR sin servidor.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadAccessForEMRSamples", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.elasticmapreduce", "arn:aws:s3:::*.elasticmapreduce/*" ] }, { "Sid": "FullAccessToOutputBucket", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Sid": "GlueCreateAndReadDataCatalog", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:GetDataBases", "glue:CreateTable", "glue:GetTable", "glue:UpdateTable", "glue:DeleteTable", "glue:GetTables", "glue:GetPartition", "glue:GetPartitions", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetUserDefinedFunctions" ], "Resource": ["*"] } ] }
  7. En la página Revisar política, introduzca un nombre para la política, como EMRServerlessS3AndGlueAccessPolicy.

  8. Actualice la página Política de permisos asociada y elija EMRServerlessS3AndGlueAccessPolicy.

  9. En la página Nombrar, revisar y crear, para el Nombre de rol, introduzca un nombre para su rol, por ejemplo, EMRServerlessS3RuntimeRole. Para crear este nuevo rol de IAM, elija Crear un rol.

CLI
  1. Cree un archivo con el nombre emr-serverless-trust-policy.json, que contenga la política de confianza que se va a utilizar para el rol de IAM. El archivo debe contener la política siguiente.

    { "Version": "2012-10-17", "Statement": [{ "Sid": "EMRServerlessTrustPolicy", "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" } }] }
  2. Creación de un rol de IAM denominado EMRServerlessS3RuntimeRole. Use la política de confianza que creó en el paso anterior.

    aws iam create-role \ --role-name EMRServerlessS3RuntimeRole \ --assume-role-policy-document file://emr-serverless-trust-policy.json

    Anote el ARN en el resultado. Se utiliza el ARN del nuevo rol durante el envío del trabajo, que en adelante se denomina job-role-arn.

  3. Cree un archivo con un nombre emr-sample-access-policy.json que defina la política de IAM para su carga de trabajo. Esto proporciona acceso de lectura al script y a los datos almacenados en buckets públicos de S3 y acceso de lectura y escritura a amzn-s3-demo-bucket.

    importante

    Sustituya amzn-s3-demo-bucket en la política que aparece a continuación por el nombre real del bucket creado en Preparar el almacenamiento para EMR sin servidor. Esta es una política básica para el acceso a AWS Glue y S3. Para ver más ejemplos de roles de ejecución de trabajos, consulte Roles en tiempo de ejecución de trabajo para Amazon EMR sin servidor.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadAccessForEMRSamples", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.elasticmapreduce", "arn:aws:s3:::*.elasticmapreduce/*" ] }, { "Sid": "FullAccessToOutputBucket", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Sid": "GlueCreateAndReadDataCatalog", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:GetDataBases", "glue:CreateTable", "glue:GetTable",Understanding default application behavior, including auto-start and auto-stop, as well as maximum capacity and worker configurations for configuring an application with &EMRServerless;. "glue:UpdateTable", "glue:DeleteTable", "glue:GetTables", "glue:GetPartition", "glue:GetPartitions", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetUserDefinedFunctions" ], "Resource": ["*"] } ] }
  4. Cree una política de IAM denominada EMRServerlessS3AndGlueAccessPolicy con el archivo de políticas que creó en el Paso 3. Tome nota del ARN en el resultado, ya que utilizará el ARN de la nueva política en el siguiente paso.

    aws iam create-policy \ --policy-name EMRServerlessS3AndGlueAccessPolicy \ --policy-document file://emr-sample-access-policy.json

    Anote el ARN de la nueva política en el resultado. Lo sustituirá policy-arn en el siguiente paso.

  5. Adjunte la política de IAM EMRServerlessS3AndGlueAccessPolicy al rol EMRServerlessS3RuntimeRole del tiempo de ejecución del trabajo.

    aws iam attach-role-policy \ --role-name EMRServerlessS3RuntimeRole \ --policy-arn policy-arn