Invoke - AWS Lambda

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) ou my-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ção Event, esse código de status é 202. Para o tipo de invocação DryRun, 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: