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.
Ejecute un AWS Batch trabajo con Lambda
En este proyecto de ejemplo se muestra cómo utilizar Step Functions para preprocesar datos con AWS Lambda funciones y, a continuación, organizar tareas. AWS Batch
En este proyecto, Step Functions utiliza una máquina de estado para invocar una función de Lambda y realizar un preprocesamiento sencillo antes de que se envíe un trabajo de AWS Batch . Se pueden invocar varios trabajos en función del resultado o éxito del anterior.
Paso 1: Crear la máquina de estado y aprovisionar recursos
-
Abra la consola de Step Functions
y seleccione Crear máquina de estado. -
Escriba
Batch job with Lambda
en el cuadro de búsqueda y, a continuación, seleccione Trabajo por lotes con Lambda en los resultados de búsqueda que aparecen. -
Elija Siguiente para continuar.
-
Step Functions muestra una lista de las Servicios de AWS utilizadas en el proyecto de muestra que ha seleccionado. También muestra un gráfico del flujo de trabajo para el proyecto de muestra. Implemente este proyecto en su empresa Cuenta de AWS o utilícelo como punto de partida para crear sus propios proyectos. En función de cómo desee continuar, elija Ejecutar una demostración o Crear a partir de ella.
En este proyecto de muestra se implementan los siguientes recursos:
-
Una función de Lambda
-
Un trabajo de AWS Batch
-
¿Una máquina de AWS Step Functions estados
-
Funciones relacionadas AWS Identity and Access Management (IAM)
En la siguiente imagen se ilustra el gráfico del flujo de trabajo para el proyecto de muestra Trabajo por lotes con Lambda:
-
-
Elija Utilizar plantilla para continuar con la selección.
-
Realice una de las siguientes acciones siguientes:
-
Si seleccionó Construir a partir de él, Step Functions crea el prototipo de flujo de trabajo, pero no despliega los recursos de la definición del flujo de trabajo, por lo que puede seguir creando su prototipo de flujo de trabajo.
En Workflow StudioModo Diseño, puedes añadir estados adicionales a tu prototipo de flujo de trabajo. O bien, puede cambiar Modo Código al editor de código integrado para editar la definición Amazon States Language (ASL) de su máquina de estados desde la consola Step Functions.
importante
Es posible que tengas que actualizar el marcador de posición Amazon Resource Name (ARN) para los recursos utilizados en el proyecto de ejemplo antes de poder ejecutar tu flujo de trabajo.
-
Si seleccionó Ejecutar una demostración, Step Functions crea un proyecto de solo lectura que utiliza una AWS CloudFormation plantilla para implementar los AWS recursos de esa plantilla en su empresa. Cuenta de AWS Puede ver la definición de la máquina de estados seleccionando el modo Código.
Elija Implementar y ejecutar para implementar el proyecto y crear los recursos.
Tenga en cuenta que la implementación puede tardar hasta 10 minutos en crearse IAM los recursos y los permisos. Mientras se despliegan tus recursos, puedes abrir el enlace AWS CloudFormation Stack ID para ver qué recursos se están aprovisionando.
Una vez creados todos los recursos, deberías ver el proyecto en la página State Machines de la consola.
importante
Se pueden aplicar cargos estándar por cada servicio utilizado en la CloudFormation plantilla.
-
Paso 2: Ejecutar la máquina de estado
-
En la página Máquina de estado, elija su proyecto de muestra.
-
En la página del proyecto de muestra, seleccione Iniciar ejecución.
-
En el cuadro de diálogo Iniciar ejecución, haga lo siguiente:
-
(Opcional) Para identificar la ejecución, puede especificar un nombre o utilizar el nombre de ejecución generado por defecto.
nota
Step Functions acepta nombres para máquinas de estados, ejecuciones, actividades y etiquetas que no contengan ASCII caracteres. Como los nombres que no contengan ASCII caracteres no funcionan en Amazon CloudWatch, te recomendamos que utilices solo ASCII caracteres para poder realizar un seguimiento de las métricas. CloudWatch
-
(Opcional) En el cuadro de entrada, introduce los valores de entrada en el JSON formato adecuado para ejecutar tu flujo de trabajo.
Si se ha seleccionado Ejecutar una demostración, no es necesario proporcionar ninguna entrada de ejecución.
nota
Si el proyecto de demostración que implementó contiene datos de entrada de ejecución rellenados previamente, utilice esa entrada para ejecutar la máquina de estado.
-
Seleccione Iniciar ejecución.
-
La consola de Step Functions le dirige a una página cuyo título es su ID de ejecución. Esta página se conoce como Detalles de la ejecución. En esta página, puede revisar los resultados de la ejecución a medida que avanza la ejecución o una vez finalizada.
Para revisar los resultados de la ejecución, elija los estados individuales en la Vista de gráfico y, a continuación, elija las pestañas individuales del panel Detalles del paso para ver los detalles de cada estado, incluidas la entrada, la salida y la definición, respectivamente. Para obtener más información sobre la ejecución que puede ver en la página Detalles de la ejecución, consulte Página de detalles de ejecución: información general de la interfaz.
-
Código de la máquina de estado de ejemplo
La máquina de estados de este proyecto de ejemplo se integra con AWS Batch Amazon pasando SNS los parámetros directamente a esos recursos.
Explore este ejemplo de máquina de estados para ver cómo Step Functions controla AWS Batch Amazon SNS conectándose al nombre de recurso de Amazon (ARN) en el Resource
campo y pasando Parameters
al servicioAPI.
Para obtener más información sobre cómo AWS Step Functions puede controlar otros AWS servicios, consulteIntegración de otros servicios con Step Functions.
{
"Comment": "An example of the Amazon States Language for using batch job with pre-processing lambda",
"StartAt": "Generate batch job input",
"TimeoutSeconds": 3600,
"States": {
"Generate batch job input": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.batch_input",
"Parameters": {
"FunctionName": "<GENERATE_BATCH_JOB_INPUT_LAMBDA_FUNCTION_NAME>
"
},
"Next": "Submit Batch Job"
},
"Submit Batch Job": {
"Type": "Task",
"Resource": "arn:aws:states:::batch:submitJob.sync",
"Parameters": {
"JobName": "BatchJobFanOut",
"JobQueue": "<BATCH_QUEUE_ARN>
",
"JobDefinition": "<BATCH_JOB_DEFINITION_ARN>
",
"Parameters.$": "$.batch_input"
},
"End": true
}
}
}
IAMEjemplo
Estas políticas de ejemplo AWS Identity and Access Management (IAM) generadas por el proyecto de muestra incluyen los privilegios mínimos necesarios para ejecutar la máquina de estados y los recursos relacionados. Le recomendamos que incluya solo los permisos que sean necesarios en sus IAM políticas.
ejemplo BatchJobWithLambdaAccessPolicy
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:us-west-2
:123456789012:ManageBatchJob-SNSTopic-JHLYYG7AZPZI
"
],
"Effect": "Allow"
},
{
"Action": [
"batch:SubmitJob",
"batch:DescribeJobs",
"batch:TerminateJob"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"events:PutTargets",
"events:PutRule",
"events:DescribeRule"
],
"Resource": [
"arn:aws:events:us-west-2
:123456789012:rule/StepFunctionsGetEventsForBatchJobsRule"
],
"Effect": "Allow"
}
]
}
ejemplo InvokeGenerateBatchJobMapLambdaPolicy
{
"Statement": [
{
"Action": [
"lambda:InvokeFunction"
],
"Resource": "arn:aws:lambda:us-west-2
:123456789012
:function:StepFunctionsSample-BatchWithL-GenerateBatchJobMap-444455556666
",
"Effect": "Allow"
}
]
}
Para obtener información sobre cómo configurar el IAM uso de Step Functions con otros AWS servicios, consulteCómo Step Functions genera IAM políticas para servicios integrados.