Repite simultáneamente los elementos de un flujo de trabajo de Step Functions - 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.

Repite simultáneamente los elementos de un flujo de trabajo de Step Functions

En el tema anteriorDefinir tareas paralelas, aprendió a ejecutar ramas separadas de pasos en paralelo utilizando el Parallel estado. Utilice el estado Map, puede ejecutar un conjunto de pasos de flujo de trabajo para cada elemento de un conjunto de datos. Las iteraciones del estado Map se ejecutan en paralelo, lo que permite procesar un conjunto de datos rápidamente.

Al incluir el estado Map en sus flujos de trabajo, puede realizar tareas, como el procesamiento de datos, utilizando uno de los dos Modos de procesamiento del estado Map: el modo En línea y el modo distribuido. Para configurar un Map estado, debe definir un estadoItemProcessor, que contiene JSON objetos que especifican el modo de procesamiento del Map estado y su definición. Ejecutará el Map estado en el modo en línea predeterminado, que admite hasta 40 iteraciones simultáneas. Cuando ejecuta el estado Map en modo Distribuido, admite hasta 10 000 ejecuciones paralelas de flujos de trabajo secundarios.

Cuando la ejecución del flujo de trabajo entre en Map ese estado, se repetirá sobre una JSON matriz especificada en la entrada de estado. Para cada elemento de la matriz, la iteración correspondiente se ejecuta en el contexto del flujo de trabajo que contiene el estado Map. Cuando se completen todas las iteraciones, el estado Map devolverá una matriz que contiene la salida de cada elemento procesado por el ItemProcessor.

Utilizará el Map estado en el modo en línea para obtener la calificación crediticia de un solicitante consultando iterativamente un conjunto de agencias de crédito. Para ello, primero debe buscar los nombres de todas las agencias de crédito almacenadas en una tabla de Amazon DynamoDB y, a continuación, utilizar el estado Map para recorrer la lista de agencias de crédito y obtener la calificación crediticia del solicitante reportada por cada una de estas agencias.

Paso 1: Crear una tabla de DynamoDB para almacenar el nombre de todas las agencias de crédito

En este paso, se crea una tabla denominada GetCreditBureau mediante la consola de DynamoDB. La tabla utiliza el atributo de cadena Nombre como clave de Partición. En esta tabla, guarda el nombre de todas las agencias de crédito de las que desea obtener la calificación crediticia del solicitante.

  1. Inicie sesión en la consola de DynamoDB AWS Management Console y ábrala en. https://console.aws.amazon.com/dynamodb/

  2. En el panel de navegación de la consola, seleccione Tablas y, a continuación, seleccione Crear tabla.

  3. Introduzca los datos siguientes para la tabla:

    1. En Nombre de la tabla, escriba GetCreditBureau.

    2. Escriba como clave de partición Name.

    3. Mantenga las selecciones predeterminadas y elija Crear tabla.

  4. Una vez creada la tabla, seleccione la tabla en la lista de tablas. GetCreditBureau

  5. Elija Acciones y, a continuación, seleccione Crear elemento.

  6. En Valor, introduzca el nombre de una agencia de crédito. Por ejemplo, CredTrack.

  7. Elija Crear elemento.

  8. Repita este proceso y cree elementos para los nombres de otras agencias de crédito. Por ejemplo, KapFinn y CapTrust.

Paso 2: Actualizar la máquina de estado: obtener los resultados de la tabla de DynamoDB

En la consola de Step Functions, añadirá un Task estado y usará la AWS SDKintegración para obtener los nombres de las agencias de crédito de la tabla de DynamoDB que creó en el paso 1. Utilizará el resultado de este paso como entrada para el Map estado que agregará más adelante en el flujo de trabajo.

  1. Abre la máquina de CreditCardWorkflowestados para actualizarla.

  2. Seleccione el estado Get list of credit bureaus.

  3. En APIParámetros, especifique el valor del nombre de la tabla comoGetCreditBureau.

Paso 3: Crear una función de Lambda que devuelve las puntuaciones de crédito de todas las agencias de crédito

En este paso, se crea una función de Lambda que recibe los nombres de todas las agencias de crédito como entrada y devuelve la calificación crediticia del solicitante para cada una de estas agencias de crédito. Esta función Lambda se invocará desde el Map estado que añada a su flujo de trabajo.

  1. Cree una función de Lambda Node.js 16.x y asígnele el nombre get-credit-score.

  2. En la página titulada get-credit-score, pegue el siguiente código en el área Código fuente.

    function getScore(arr) { let temp; let i = Math.floor((Math.random() * arr.length)); temp = arr[i]; console.log(i); console.log(temp); return temp; } const arrScores = [700, 820, 640, 460, 726, 850, 694, 721, 556]; exports.handler = (event, context, callback) => { let creditScore = getScore(arrScores); callback(null, "Credit score pulled is: " + creditScore + "."); };
  3. Implemente la función de Lambda.

Paso 4: Actualizar la máquina de estado: añadir un estado del mapa para obtener las puntuaciones crediticias de forma iterativa

En la consola Step Functions, agrega un Map estado que invoca la función get-credit-scoreLambda para comprobar la calificación crediticia del solicitante para todas las agencias de crédito devuelta por el estado Get list of credit bureaus.

  1. Abra la máquina de CreditCardWorkflowestados para actualizarla.

  2. Elija el estado Get scores from all credit bureaus.

  3. En la pestaña Configuración, elija Proporcionar una ruta a la matriz de elementos y, a continuación, introduzca $.Items.

  4. Seleccione el paso Obtener todas las puntuaciones dentro del estado Map.

  5. En la pestaña Configuración, asegúrese de seleccionar para Tipo de integración, Optimizado.

  6. En Nombre de función, comience a escribir el nombre de la función get-credit-scoreLambda y selecciónelo en la lista desplegable que aparece.

  7. Para Carga, elija Ninguna carga.

Siguientes pasos

En el siguiente pasoEjecutar el flujo de trabajo , aprenderá a ejecutar su flujo de trabajo.