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 Serverless
Este tutorial te ayuda a empezar a usar EMR Serverless al implementar un ejemplo de carga de trabajo 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 lanzar una aplicación EMR sin servidor, complete las siguientes tareas.
Otorgue permisos para usar Serverless EMR
Para usar EMR Serverless, necesitas un usuario o IAM rol con una política adjunta que otorgue permisos para EMR Serverless. Para crear un usuario y asociar la política correspondiente a ese usuario, siga las instrucciones de Concesión de permisos.
Prepare el almacenamiento para Serverless EMR
En este tutorial, utilizarás un bucket de S3 para almacenar los archivos de salida y los registros de la carga de trabajo de ejemplo de Spark o Hive que ejecutarás con una aplicación sin EMR 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.
Crea un EMR estudio para ejecutar cargas de trabajo interactivas
Si quieres usar EMR Serverless para ejecutar consultas interactivas a través de cuadernos alojados en EMR Studio, debes especificar un bucket de S3 y el rol de servicio mínimo de EMR Serverless para crear un espacio de trabajo. Para ver los pasos de configuración, consulta Configurar un EMR estudio en la Guía de EMR administración de Amazon. Para más información sobre cargas de trabajo interactivas, consulte Ejecute cargas de trabajo interactivas con EMR Serverless a través de Studio EMR.
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 Serverless 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 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 de 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 IAM rol, selecciona Crear rol.
- CLI
-
-
Cree un archivo con un nombre emr-serverless-trust-policy.json
que contenga la política de confianza que se utilizará para el IAM rol. 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"
}
}]
}
-
Cree un IAM rol llamadoEMRServerlessS3RuntimeRole
. 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
En los resultados, anote el ARN. Utiliza el ARN nuevo rol durante la presentación del trabajo, denominado en adelante eljob-role-arn
.
-
Cree un archivo con un nombre emr-sample-access-policy.json
que defina la IAM política 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 IAM política EMRServerlessS3AndGlueAccessPolicy
con el nombre del archivo de políticas que creó en el paso 3. Anote lo que aparece ARN en el resultado, ya que utilizará ARN la nueva política en el siguiente paso.
aws iam create-policy \
--policy-name EMRServerlessS3AndGlueAccessPolicy \
--policy-document file://emr-sample-access-policy.json
Tenga en cuenta que la nueva política ARN aparece en el resultado. Lo sustituirá policy-arn
en el siguiente paso.
-
Adjunta la IAM política EMRServerlessS3AndGlueAccessPolicy
al rol de ejecución del trabajoEMRServerlessS3RuntimeRole
.
aws iam attach-role-policy \
--role-name EMRServerlessS3RuntimeRole \
--policy-arn policy-arn