Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

591
Visualizações
Funciones paso a paso de AWS: combine la entrada de tareas con la salida de tareas *parcial*

Estoy trabajando en las funciones de AWS Step. He leído la documentación sobre InputPath, OutputPath y ResultPath . Mi problema es que quiero combinar valores de la entrada a una tarea de Lambda con una salida parcial de la tarea.

La entrada a la tarea es similar a la siguiente. Quiero continuar pasando estos valores a tareas posteriores.

 { "previous_task_result": 100, "next_task_input": "asdf" }

Lo que me gustaría es que el resultado de mi tarea Lambda se vea así:

 { "previous_task_result": 100, "next_task_input": "asdf", "current_task_result": { "val1": "ghjk", "val2": [0,2,13,100] } }

El problema específico es que la salida sin procesar de Lambda Task se ve así. Solo me importa el nodo Payload . El resto de la salida es estándar. Preferiría no pasar por la función de paso.

 { "resourceType": "lambda", "resource": "invoke", "output": { "ExecutedVersion": "$LATEST", "Payload": { "val1": "ghjk", "val2": [0,2,13,100] }, "SdkHttpMetadata": { "HttpHeaders": { "Connection": "keep-alive", "Content-Length": "42", "Content-Type": "application/json", "Date": "Tue, 25 Feb 2020 14:36:29 GMT", "X-Amz-Executed-Version": "$LATEST", "x-amzn-Remapped-Content-Length": "0" }, "HttpStatusCode": 200 }, "SdkResponseMetadata": { "RequestId": "redacted" }, "StatusCode": 200 } }

Entiendo cómo usar ResultPath y OutputPath para combinar la entrada con la salida, o asignar la salida a un nodo específico, pero lo que no puedo encontrar es una forma de fusionar solo el nodo Payload del resultado con la entrada existente.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Cuando se trabaja con estados de tareas de Lambda, hay 3 formas en las que puede estructurar el estado de su tarea:

1. Solicitud de respuesta:

Este método devuelve la respuesta completa de la API, incluido el campo SdkHttpMetadata. Sospecho que la razón para devolver la respuesta HTTP completa es que esta es la única forma en que puede invocar una función Lambda de forma asíncrona desde Step Function (las invocaciones de Lambda asíncronas solo devuelven un código de estado). Ejemplo:

 "CallLambda": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "MyFunction", "InvocationType": "Event|RequestResponse|DryRun", "Payload.$": "$" }, "End": true }

2. Lambda ARN como recurso:

Creo que esto es lo que estás buscando. Al especificar el ARN de la función de Lambda como recurso, Step Functions invocará su función de Lambda de forma síncrona y devolverá solo el resultado de su función de Lambda sin los metadatos de respuesta de la API. En este caso, su entrada de estado se pasará como carga útil a su función Lambda o puede usar InputPath/Parameters para filtrar/modificar los datos enviados como carga útil.

 "CallLambda": { "Type": "Task", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "ResultPath": "$.current_task_result", "End": true }

Usando la entrada como en su ejemplo, la Tarea anterior le dará el resultado de la siguiente manera:

 { "previous_task_result": 100, "next_task_input": "asdf", "current_task_result": { <Your Lambda Functions Result> } }

3. .WaitForTaskToken:

Pasa un token a su función, detiene la ejecución hasta que se recibe una llamada a SendTaskSuccess o SendTaskFailed (este método solo devolverá el resultado/error de SendTaskSuccess o SendTaskFailed sin metadatos HTTP adicionales).

 "CallLambda": { "Type": "Task", "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken", "Parameters": { "FunctionName": "MyFunction", "Payload":{ "token.$":"$$.Task.Token" } }, "End": true }
over 4 years ago · Santiago Trujillo Relatório

0

Para cualquiera que encuentre esto ahora, el ResultSelector (nuevo a partir del 8/2020) realiza exactamente la función que estaba buscando cuando se publicó esto.

InputPath, Parámetros y ResultSelector

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda