Invocar o Lambda com o Step Functions - AWS Step Functions

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Invocar o Lambda com o Step Functions

Step Functions pode controlar determinados AWS serviços diretamente do Amazon States Language (ASL). Para saber mais, consulte Como trabalhar com outros serviços e Transmitir parâmetros para uma API de serviço.

Como a integração otimizada do Lambda é diferente da integração do SDK do Lambda AWS
  • O campo Payload da resposta é analisado de Json escapado para Json.

  • Se a resposta possuir o campo FunctionError ou uma exceção for gerada na função do Lambda, a tarefa falhará.

Para obter mais informações sobre o gerenciamento da entrada, saída e dos resultados do estado, consulte Processamento de entrada e saída no Step Functions.

AWS Lambda APIs compatíveis:

Os parâmetros em Step Functions são expressos em PascalCase

Mesmo que a API de serviço nativa esteja no CamelCase, por exemplo, a startSyncExecution ação da API, você especifica parâmetros PascalCase em, como:. StateMachineArn

Veja a seguir um estado Task que invoca uma função do Lambda.

{ "StartAt":"CallLambda", "States":{ "CallLambda":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke", "Parameters":{ "FunctionName":"arn:aws:lambda:us-east-1:123456789012:function:MyFunction" }, "End":true } } }

Veja a seguir um estado Task que implementa o padrão de integração do serviço retorno de chamada.

{ "StartAt":"GetManualReview", "States":{ "GetManualReview":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken", "Parameters":{ "FunctionName":"arn:aws:lambda:us-east-1:123456789012:function:get-model-review-decision", "Payload":{ "model.$":"$.new_model", "token.$":"$$.Task.Token" }, "Qualifier":"prod-v1" }, "End":true } } }

Ao invocar uma função do Lambda, a execução espera a conclusão da função. Se você invocar a função do Lambda com uma tarefa de retorno de chamada, o tempo limite de pulsação não começará a ser contado até que a função do Lambda tenha concluído a execução e retornado um resultado. Enquanto a função do Lambda for executada, o tempo limite de pulsação não será aplicado.

Também é possível chamar o Lambda de forma assíncrona usando o parâmetro InvocationType, conforme mostrado no exemplo a seguir.

nota

Para invocações assíncronas de funções do Lambda, o período do tempo limite de pulsação começa imediatamente.

{ "Comment": "A Hello World example of the Amazon States Language using Pass states", "StartAt": "Hello", "States": { "Hello": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:echo", "InvocationType": "Event" }, "End": true } } }

Quando o resultado da Task é retornado, a saída da função é aninhada em um dicionário de metadados. Por exemplo: .

{ "ExecutedVersion":"$LATEST", "Payload":"FUNCTION OUTPUT", "SdkHttpMetadata":{ "HttpHeaders":{ "Connection":"keep-alive", "Content-Length":"4", "Content-Type":"application/json", "Date":"Fri, 26 Mar 2021 07:42:02 GMT", "X-Amz-Executed-Version":"$LATEST", "x-amzn-Remapped-Content-Length":"0", "x-amzn-RequestId":"0101aa0101-1111-111a-aa55-1010aaa1010", "X-Amzn-Trace-Id":"root=1-1a1a000a2a2-fe0101aa10ab;sampled=0" }, "HttpStatusCode":200 }, "SdkResponseMetadata":{ "RequestId":"6b3bebdb-9251-453a-ae45-512d9e2bf4d3" }, "StatusCode":200 }

Como alternativa, você pode invocar uma função do Lambda especificando o ARN da função diretamente no campo “Recurso”. Ao invocar uma função do Lambda dessa forma, você não pode especificar a .waitForTaskToken e o resultado da tarefa contém somente a saída da função.

{ "StartAt":"CallFunction", "States":{ "CallFunction": { "Type":"Task", "Resource":"arn:aws:lambda:us-east-1:123456789012:function:HelloFunction", "End": true } } }

É possível invocar determinada versão ou alias da função do Lambda especificando essas opções no ARN no campo Resource. Consulte a seguir na documentação do Lambda:

Para obter informações sobre como configurar IAM permissões ao usar Step Functions com outros AWS serviços, consultePolíticas do IAM para serviços integrados.