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ás, ejecutarás y depurarás tu propia aplicación. Mostramos las opciones predeterminadas en la mayoría de las partes de este tutorial.
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 adjuntar la política adecuada a ese usuario, siga las instrucciones que se indican en. Concesión de permisos
Prepare el almacenamiento para EMR Serverless
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 depósito, sigue las instrucciones de la Guía del usuario de la consola Amazon Simple Storage Service Console. Sustituya cualquier referencia adicional amzn-s3-demo-bucket
a por el nombre del depósito recién creado.
Cree un EMR estudio para ejecutar cargas de trabajo interactivas
Si quieres usar EMR Serverless para ejecutar consultas interactivas a través de libretas alojadas en EMR Studio, debes especificar un bucket de S3 y la función de servicio mínima 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 obtener más información sobre las cargas de trabajo interactivas, consulteEjecute cargas de trabajo interactivas con EMR Serverless a través de Studio EMR.
Cree un rol de ejecución de tareas
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 depósito 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 siguientes pasos le guiarán a lo largo del proceso.
- Console
-
-
Vaya a la consola IAM en https://console.aws.amazon.com/iam/.
-
En el panel de navegación izquierdo, seleccione Roles.
-
Elija Crear rol.
-
Para el tipo de función, elija Política de confianza personalizada y pegue 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, seleccione 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 de revisión de la política, introduzca un nombre para la política, comoEMRServerlessS3AndGlueAccessPolicy
.
-
Actualice la página Adjuntar la política de permisos y elijaEMRServerlessS3AndGlueAccessPolicy
.
-
En la página Nombre, revisión y creación, en Nombre del rol, introduzca un nombre para el rol, por ejemplo,EMRServerlessS3RuntimeRole
. Para crear este IAM rol, elija 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 siguiente política.
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "EMRServerlessTrustPolicy",
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "emr-serverless.amazonaws.com"
}
}]
}
-
Cree un IAM rol denominadoEMRServerlessS3RuntimeRole
. Utilice 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 nuevo rol durante el envío ARN del trabajo, denominado después de esto 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 los depósitos 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ítica 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. La sustituirás por ella policy-arn
en el siguiente paso.
-
Adjunta la IAM política EMRServerlessS3AndGlueAccessPolicy
al rol de tiempo de ejecución del trabajoEMRServerlessS3RuntimeRole
.
aws iam attach-role-policy \
--role-name EMRServerlessS3RuntimeRole \
--policy-arn policy-arn