Creación de un estado de Step FunctionsMachineUso de Lambda - AWS Step Functions

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.

Creación de un estado de Step FunctionsMachineUso de Lambda

En este tutorial, va a crear una máquina de estado de AWS Step Functions que utiliza una función de AWS Lambda para implementar un estado Task. Un estado Task realiza una sola unidad de trabajo.

Lambda es muy adecuado para la implementación deTask, porque las funciones de Lambda sonapátrida(tienen una relación de entrada y salida predecible), son fáciles de programar y no requieren la implementación de código en una instancia de servidor. Puede escribir código en la AWS Management Console o en el editor de su elección; AWS se encarga de proporcionar un entorno informático para su función y de ejecutarlo.

Paso 1: Creación de un rol de IAM para Lambda

Tanto AWS Lambda como AWS Step Functions pueden ejecutar código y obtener acceso a recursos de AWS (por ejemplo, los datos almacenados en los buckets de Amazon S3). Para mantener la seguridad, debe conceder a Lambda y Step Functions acceso a estos recursos.

Lambda requiere que asigne unAWS Identity and Access Management(IAM) cuando cree una función de Lambda, del mismo modo que Step Functions requiere que asigne un rol de IAM cuando cree una máquina de estado.

Utilice la consola de IAM para crear un rol vinculado al servicio.

Para crear un rol (consola)

  1. Inicie sesión en la AWS Management Console y abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación de la consola de IAM, elija Roles. A continuación, elija Create role.

  3. Elija el iconoAWSService (Servicio)y, a continuación, elijaLambda.

  4. Elija el iconoLambdaUso de caso de uso. Los casos de uso son definidos por el servicio de modo tal que ya incluyen la política de confianza exigida por el servicio mismo. A continuación, elija Next (Siguiente): Permisos.

  5. Elija una o varias políticas de permisos para asociarlas al rol (por ejemplo, AWSLambdaBasicExecutionRole). Consulte Modelo de permisos de AWS Lambda.

    Seleccione la casilla situada junto a la política de que asigna los permisos que desea que tenga el rol y, a continuación, elija la opción deSiguiente: Consulte.

  6. Escriba un Role name.

  7. (Opcional) En Role description, edite la descripción del nuevo rol vinculado al servicio.

  8. Revise el rol y, a continuación, seleccione Create role (Crear rol).

Paso 2: Creación de una función Lambda

Su función de Lambda recibe una entrada (un nombre) y devuelve un saludo que incluye el valor de entrada.

importante

Asegúrese de que su función Lambda esté bajo la mismaAWSCuenta de yAWSLa región como su máquina de estado.

  1. Abra el iconoConsola de consola Lambday elijaCrear una función.

  2. En la sección Create function (Crear función), elija Author from scratch (Crear desde cero).

  3. En el navegadorInformación básicaEn, configure la función de Lambda:

    1. En Function name (Nombre de función), escriba HelloFunction.

    2. En Runtime (Tiempo de ejecución), elija Node.js 12.x.

    3. En Role (Rol), seleccione Choose an existing role (Elegir un rol existente).

    4. ParaRol existente, seleccioneEl rol de Lambda que creó anteriormente.

      nota

      Si el rol de IAM que creó no aparece en la lista, es posible que necesite unos minutos para que se propague a Lambda.

    5. Elija Create function (Crear función).

      Una vez creada la función de Lambda, tome nota de su nombre de recurso de Amazon (ARN) que aparece en la esquina superior derecha de la página, como se muestra en el ejemplo.

      arn:aws:lambda:us-east-1:123456789012:function:HelloFunction
  4. Copie el siguiente código de la función Lambda en el archivo de texto deCódigo de funciónSección sobre de laHelloFunction(Se ha creado el certificado).

    exports.handler = (event, context, callback) => { callback(null, "Hello, " + event.who + "!"); };

    Este código crea un saludo utilizando el campo who de los datos de entrada, proporcionados por el objeto event pasado a la función. Los datos de entrada de esta función se agregan más tarde, cuando se inicia una nueva ejecución. El método callback devuelve el saludo creado a partir de su función.

  5. Elija Save (Guardar).

Paso 3: Probar la función de Lambda

Pruebe la función de Lambda para verla en acción.

  1. En Select a test event (Seleccionar un evento de prueba), elija Configure test event (Configurar evento de prueba). En Event name (Nombre del evento), escriba HelloFunction.

  2. Sustituya los datos de ejemplo por lo siguiente.

    { "who": "AWS Step Functions" }

    La"who"corresponde a la entrada deevent.whoEn la función de Lambda, completando el saludo. Utilizará los mismos datos de entrada cuando ejecute la función como una tarea de Step Functions.

  3. Seleccione Create (Crear).

  4. En la páginaHelloFunctionPágina,PruebasUtilice la función de Lambda utilizando los nuevos datos.

    Los resultados de la prueba se muestran en la parte superior de la página. Amplíe Details (Detalles) para ver la salida.

Paso 4: Creación de una máquina de estado

UsarConsola de Step FunctionsPara crear una máquina de estado con un objeto deTaskestado. Agregue una referencia a la función de Lambda en el cuadro de diálogoTaskestado. La función Lambda se invoca cuando una ejecución de la máquina de estado alcanza elTaskestado.

  1. Abra el iconoConsola de Step Functionsy elijaCreación de una máquina de estado.

  2. En la página Define a state machine (Definir una máquina de estado), elija Author with code snippets (Crear con fragmentos de código). En Type (Tipo), seleccione Standard (Estándar). En Name for your state machine (Nombre para la máquina de estado), escriba un nombre, por ejemplo, LambdaStateMachine.

    nota

    Los nombres de máquina de estado, ejecución y actividad deben tener entre 1 y 80 caracteres de longitud, deben ser únicos para su cuenta yAWSRegión y no debe contener ninguna de las siguientes características:

    • Espacio en blanco

    • Caracteres comodín (? *)

    • Caracteres de soporte (< > { } [ ])

    • Caracteres especiales (: ; , \ | ^ ~ $ # % & ` ")

    • Caracteres de control (\\u0000-\\u001for\\u007f-\\u009f).

    Step Functions le permiten crear nombres de máquina de estado, ejecución y actividad que contienen caracteres no ASCII. Estos nombres que no son ASCII no funcionan con Amazon CloudWatch. Para asegurarse de que puede realizar un seguimiento de las métricas de CloudWatch, elija un nombre que utilice únicamente caracteres ASCII.

  3. En el navegadorDefinición de máquina de estado deAgregue la siguiente definición de máquina de estado utilizando el ARN dela función Lambda que creó anteriormente, como se muestra en el ejemplo siguiente.

    { "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda function", "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunction", "End": true } } }

    Esta es una descripción de la máquina de estado realizada mediante el idioma de Amazon States Language. Define un único estado Task llamado HelloWorld. Para obtener más información, consulte Estructura de las máquinas de estado.

    nota

    También puede configurar Retry para los estados Task. Como una práctica recomendada, asegúrese de que el código de producción controle las excepciones del servicio Lambda (Lambda.ServiceExceptionyLambda.SdkClientException). Para obtener más información, consulte los siguientes temas:

    Seleccione Next (Siguiente).

  4. Cree o introduzca un rol de IAM:

    • Para crear un rol de IAM para Step Functions, seleccioneCrear un rol de IAM para mí., e ingrese unNombrePara su rol de.

    • Si tiene uncreó un rol de IAM con anterioridad.Seleccione los permisos correctos para su máquina de estado, seleccioneElija una función de IAM existente. Seleccione un rol de la lista o proporcione un ARN para ese rol.

    nota

    Si elimina el rol de IAM que crea Step Functions, Step Functions no podrá volver a crearlo más adelante. Asimismo, si modifica el rol (por ejemplo, eliminando Step Functions de la entidad principal de la política de IAM), Step Functions no podrá restablecer la configuración original más adelante.

  5. Seleccione Next (Siguiente).

Paso 5: Inicio de una nueva ejecución

Después de crear la máquina de estado, inicie una ejecución.

  1. En la página LambdaStateMachine, seleccione Start execution (Iniciar ejecución).

    Aparece la página New execution.

  2. (Opcional) Para ayudar a identificar la ejecución, puede especificar un ID para ella en el cuadro de diálogoIntroduzca un nombre de ejecución. Si no especifica un ID, Step Functions genera un ID único automáticamente.

    nota

    Step Functions le permiten crear nombres de máquina de estado, ejecución y actividad que contienen caracteres no ASCII. Estos nombres que no son ASCII no funcionan con Amazon CloudWatch. Para asegurarse de que puede realizar un seguimiento de las métricas de CloudWatch, elija un nombre que utilice únicamente caracteres ASCII.

  3. En el área de entrada de ejecución, sustituya los datos de ejemplo por lo siguiente.

    { "who" : "AWS Step Functions" }

    "who"es el nombre de clave que su función de Lambda utiliza para obtener el nombre de la persona a la que se saluda.

  4. Elija Start Execution (Iniciar ejecución).

    Se inicia una nueva ejecución de la máquina de estado y aparece una nueva página que muestra la ejecución en funcionamiento.

  5. Para ver los resultados de la ejecución, expanda la sección Output (Salida) en la sección Execution details (Detalles de la ejecución).