Invoke
Invoca uma função do Lambda. Você pode invocar uma função de forma síncrona (e aguardar pela resposta) ou assíncrona. Por padrão, o Lambda invoca sua função de forma síncrona (ou seja, o InvocationType
é RequestResponse
). Para invocar uma função de forma assíncrona, defina InvocationType
como Event
. O Lambda passa o objeto ClientContext
para sua função somente para invocações síncronas.
Para a invocação síncrona, detalhes sobre a resposta da função, incluindo erros, são incluídos no corpo da resposta e cabeçalhos. Para qualquer tipo de invocação, você pode ver mais informações nolog de execução e no rastreamento.
Quando ocorre um erro, a função pode ser invocada várias vezes. O comportamento de repetição varia de acordo com o tipo de erro, cliente, origem de evento e tipo de invocação. Por exemplo, se você invocar uma função assíncrona e ela retornar um erro, o Lambda executará a função até duas vezes mais. Para obter mais informações, consulte Lidar com erros e novas tentativas automáticas no Lambda.
Para invocação assíncrona, o Lambda adiciona eventos a uma fila antes de enviá-los para sua função. Se sua função não tiver capacidade suficiente para acompanhar a fila, os eventos podem ser perdidos. Ocasionalmente, sua função pode receber o mesmo evento várias vezes, mesmo que não ocorra nenhum erro. Para reter eventos que não foram processados, configure sua função com uma fila de mensagens mortas.
O código de status na resposta da API não reflete erros de função. Os códigos de erro são reservados para erros que impedem a execução da função, como erros de permissão, erros de cota ou problemas com o código e a configuração da função. Por exemplo, o Lambda retorna TooManyRequestsException
se a execução da função fizer com que você exceda um limite de simultaneidade em nível de conta (ConcurrentInvocationLimitExceeded
) ou em nível de função (ReservedFunctionConcurrentInvocationLimitExceeded
).
Para funções com um tempo limite longo, o cliente pode se desconectar durante a invocação síncrona enquanto aguarda por uma resposta. Configure seu cliente HTTP, SDK, firewall, proxy ou sistema operacional para permitir conexões longas com tempo limite ou configurações de ativação.
Essa operação exige permissão para a ação lambda:InvokeFunction. Para obter detalhes sobre como configurar permissões para invocações entre contas, consulte Conceder acesso de função a outras contas.
Sintaxe da Solicitação
POST /2015-03-31/functions/FunctionName
/invocations?Qualifier=Qualifier
HTTP/1.1
X-Amz-Invocation-Type: InvocationType
X-Amz-Log-Type: LogType
X-Amz-Client-Context: ClientContext
Payload
Parâmetros da Solicitação de URI
A solicitação usa os seguintes parâmetros de URI:
- ClientContext
-
Até 3.583 bytes de dados codificados em base64 sobre o cliente que faz a invocação para transferir para a função no objeto de contexto. O Lambda passa o objeto
ClientContext
para sua função somente para invocações síncronas. - FunctionName
-
O nome da função, versão ou alias do Lambda.
Formatos de nome
-
Nome da função:
my-function
(somente nome) oumy-function:v1
(com alias). -
ARN da função:
arn:aws:lambda:us-west-2:123456789012:function:my-function
. -
ARN parcial:
123456789012:function:my-function
.
Você pode anexar um número de versão ou alias a qualquer um dos formatos. A restrição de comprimento se aplica apenas ao ARN completo. Se você especificar apenas o nome da função, ele será limitado a 64 caracteres.
Restrições de tamanho: tamanho mínimo 1. Tamanho máximo de 170.
Padrão:
(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?
Exigido: Sim
-
- InvocationType
-
Escolha entre as opções a seguir.
-
RequestResponse
(padrão): invoca a função de forma síncrona. Mantenha a conexão aberta até que a função retorne uma resposta ou o tempo limite expire. A resposta da API inclui a resposta da função e dados adicionais. -
Event
: invoca a função de forma assíncrona. Envie os eventos que apresentam falhas diversas vezes para a fila de mensagens não entregues da função (se houver uma configurada). A resposta da API inclui apenas um código de status. -
DryRun
: valida os valores de parâmetros e verifica se o usuário ou o perfil tem permissão para invocar a função.
Valores Válidos:
Event | RequestResponse | DryRun
-
- LogType
-
Definir como
Tail
para incluir o log de execução na resposta. Aplica-se apenas a funções invocadas de forma síncrona.Valores Válidos:
None | Tail
- Qualifier
-
Especifique uma versão ou alias para invocar uma versão publicada da função.
Restrições de Tamanho: Tamanho mínimo 1. Comprimento máximo de 128.
Padrão:
(|[a-zA-Z0-9$_-]+)
Corpo da Solicitação
A solicitação aceita os dados binários a seguir.
- Payload
-
O JSON que você quer fornecer para sua função do Lambda como entrada.
Você pode inserir o JSON diretamente. Por exemplo,
--payload '{ "key": "value" }'
. Também é possível especificar um caminho de arquivo. Por exemplo,--payload file://payload.json
.
Sintaxe da Resposta
HTTP/1.1 StatusCode
X-Amz-Function-Error: FunctionError
X-Amz-Log-Result: LogResult
X-Amz-Executed-Version: ExecutedVersion
Payload
Elementos de Resposta
Se a ação for bem-sucedida, o serviço retornará a resposta HTTP a seguir.
- StatusCode
-
O código de status HTTP está no intervalo 200 para uma solicitação bem-sucedida. Para o tipo de invocação
RequestResponse
, esse código de status é 200. Para o tipo de invocaçãoEvent
, esse código de status é 202. Para o tipo de invocaçãoDryRun
, o código de status é 204.
A resposta retorna os cabeçalhos HTTP a seguir.
- ExecutedVersion
-
A versão da função que foi executada. Quando você invoca uma função com um alias, isso indica para qual versão o alias foi resolvido.
Restrições de tamanho: tamanho mínimo 1. Comprimento máximo de 1024.
Padrão:
(\$LATEST|[0-9]+)
- FunctionError
-
Se presente, indica que ocorreu um erro durante a execução da função. Detalhes sobre o erro estão incluídos na carga útil da resposta.
- LogResult
-
Os últimos 4 KB do log de execução, que é codificado em base64.
A resposta retorna as informações a seguir como corpo HTTP.
- Payload
-
A resposta da função ou um objeto de erro.
Erros
Para obter informações sobre os erros que todas as ações retornam, consulte Erros comuns.
- EC2AccessDeniedException
-
São necessárias permissões adicionais para definir as configurações da VPC.
Código de status HTTP: 502
- EC2ThrottledException
-
O Amazon EC2 realizou controle de utilização do AWS Lambda durante a inicialização da função do Lambda usando o perfil de execução fornecido para a função.
Código de status HTTP: 502
- EC2UnexpectedException
-
O AWS Lambda recebeu uma exceção inesperada do cliente do Amazon EC2 durante a configuração da função do Lambda.
Código de status HTTP: 502
- EFSIOException
-
Ocorreu um erro ao ler ou gravar em um sistema de arquivos conectado.
Código de status HTTP: 410
- EFSMountConnectivityException
-
A função do Lambda não pôde estabelecer uma conexão de rede com o sistema de arquivos configurado.
Código de status HTTP: 408
- EFSMountFailureException
-
A função do Lambda não pôde montar o sistema de arquivos configurado devido a um problema de permissão ou de configuração.
Código de Status HTTP: 403
- EFSMountTimeoutException
-
A função do Lambda estabeleceu uma conexão de rede com o sistema de arquivos configurado, mas a operação de montagem atingiu o tempo limite.
Código de status HTTP: 408
- ENILimitReachedException
-
O AWS Lambda não pôde criar uma interface de rede elástica na VPC, especificada como parte da configuração da função do Lambda porque o limite de interfaces de rede foi atingido. Para obter mais informações, consulte Cotas do Lambda.
Código de status HTTP: 502
- InvalidParameterValueException
-
Um dos parâmetros da solicitação não é válido.
Código de Status HTTP: 400
- InvalidRequestContentException
-
O corpo da solicitação não pôde ser analisado como JSON.
Código de Status HTTP: 400
- InvalidRuntimeException
-
O runtime ou a versão do runtime especificada não tem suporte.
Código de status HTTP: 502
- InvalidSecurityGroupIDException
-
O ID do grupo de segurança fornecido na configuração de VPC da função do Lambda não é válido.
Código de status HTTP: 502
- InvalidSubnetIDException
-
O ID de sub-rede fornecido na configuração de VPC da função do Lambda não é válido.
Código de status HTTP: 502
- InvalidZipFileException
-
AWS Lambda não pôde descompactar o pacote de implantação.
Código de status HTTP: 502
- KMSAccessDeniedException
-
O Lambda não conseguiu descriptografar as variáveis de ambiente porque o acesso ao AWS KMS foi negado. Verifique as permissões do KMS da função do Lambda.
Código de status HTTP: 502
- KMSDisabledException
-
O Lambda não conseguiu descriptografar as variáveis de ambiente porque a chave do AWS KMS key usada está desabilitada. Verifique as configurações da chave do KMS da função do Lambda.
Código de status HTTP: 502
- KMSInvalidStateException
-
O Lambda não conseguiu descriptografar as variáveis de ambiente porque o estado da chave do AWS KMS key usada não é válido para descriptografar. Verifique as configurações da chave do KMS da função.
Código de status HTTP: 502
- KMSNotFoundException
-
O Lambda não conseguiu descriptografar as variáveis de ambiente porque a chave do AWS KMS key não foi encontrada. Verifique as configurações da chave do KMS da função.
Código de status HTTP: 502
- RecursiveInvocationException
-
O Lambda detectou que a função está sendo invocada em um loop recursivo com outros recursos da AWS e interrompeu a invocação da função.
Código de Status HTTP: 400
- RequestTooLargeException
-
A carga útil da solicitação excedeu a cota de entrada JSON do corpo da solicitação
Invoke
. Para obter mais informações, consulte Cotas do Lambda.Código de status HTTP: 413
- ResourceConflictException
-
O recurso já existe ou outra operação está em andamento.
Código de status HTTP: 409
- ResourceNotFoundException
-
O recurso especificado na solicitação não existe.
Código de Status HTTP: 404
- ResourceNotReadyException
-
A função está inativa e sua conexão da VPC não está mais disponível. Aguarde até que a conexão da VPC seja restabelecida e tente novamente.
Código de status HTTP: 502
- ServiceException
-
O serviço AWS Lambda encontrou um erro interno.
Código de Status HTTP: 500
- SnapStartException
-
O hook de runtime
afterRestore()
encontrou um erro. Para obter mais informações, verifique os logs do Amazon CloudWatch.Código de Status HTTP: 400
- SnapStartNotReadyException
-
O Lambda está inicializando a função. É possível invocar a função quando o estado da função se tornar
Active
.Código de Status HTTP: 409
- SnapStartTimeoutException
-
O Lambda não conseguiu restaurar o snapshot dentro do limite de tempo limite.
Código de status HTTP: 408
- SubnetIPAddressLimitReachedException
-
O AWS Lambda não pôde configurar o acesso à VPC para a função do Lambda porque uma ou mais sub-redes configuradas não têm endereços IP disponíveis.
Código de status HTTP: 502
- TooManyRequestsException
-
O limite de throughput da solicitação foi excedido. Para obter mais informações, consulte Cotas do Lambda.
Código de Status HTTP: 429
- UnsupportedMediaTypeException
-
O tipo de conteúdo do corpo da solicitação
Invoke
não é JSON.Código de status HTTP: 415
Ver também
Para mais informações sobre como usar essa API em um dos AWS SDKs de idiomas específicos, consulte o seguinte: