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
-
-
Vaya a la consola de IAM en https://console.aws.amazon.com/iam/.
-
En el panel de navegación izquierdo, elija Roles.
-
Elija Crear rol.
-
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"
}
]
}
-
Seleccione Siguiente para ir a la página Añadir permisos y, a continuación, elija Crear política.
-
La página Crear política se abre en una pestaña nueva. Pegue la política JSON a continuación.
{
"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": ["*"]
}
]
}
-
En la página Revisar política, introduzca un nombre para la política, como EMRServerlessS3AndGlueAccessPolicy
.
-
Actualice la página Política de permisos asociada y elija EMRServerlessS3AndGlueAccessPolicy
.
-
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
-
-
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"
}
}]
}
-
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
.
-
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
.
{
"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": ["*"]
}
]
}
-
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.
-
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