Invoque uma AWS Lambda função com 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á.

Invoque uma AWS Lambda função com Step Functions

Saiba como usar o Step Functions para invocar funções do Lambda de maneira síncrona ou assíncrona como parte de uma aplicação sem servidor orientada a eventos.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte Integração de produtos da e. Transmitir parâmetros a uma API de serviço no Step Functions

Principais recursos da integração otimizada ao Lambda
  • 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 Processar entrada e saída no Step Functions.

Lambda otimizado APIs

Exemplos de fluxo de trabalho

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 só começará a ser contado após o término da execução da função do Lambda e a exibição de 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:

Políticas do IAM para chamadas AWS Lambda

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para ter mais informações, consulte Como o Step Functions gera políticas do IAM para serviços integrados e Descobrir padrões de integração de serviços no Step Functions.

AWS Step Functions gera uma política do IAM com base na definição da sua máquina de estado. Para uma máquina de estado com dois estados de AWS Lambda tarefa que chamam function1 efunction2, uma política com lambda:Invoke permissões para as duas funções deve ser usada.

Isso é mostrado no exemplo a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:[[region]]:[[accountId]]:function:[[function1]]", "arn:aws:lambda:[[region]]:[[accountId]]:function:[[function2]]" ] } ] }