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
-
-
Parâmetros compatíveis
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]]
"
]
}
]
}