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:
-
-
Parâmetros 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.