Lambda funciona como alvos no Lattice VPC - Amazon VPC Lattice

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á.

Lambda funciona como alvos no Lattice VPC

Você pode registrar suas funções do Lambda como destinos com um grupo-alvo do VPC Lattice e configurar uma regra de ouvinte para encaminhar solicitações para o grupo-alvo da sua função do Lambda. Quando o serviço encaminha a solicitação para um grupo-alvo com uma função Lambda como alvo, ele invoca sua função Lambda e passa o conteúdo da solicitação para a função Lambda, em formato. JSON Para obter mais informações, consulte Como usar AWS Lambda com o Amazon VPC Lattice no Guia do AWS Lambda desenvolvedor.

Limitações
  • A função do Lambda e o grupo de destino devem estar na mesma conta e na mesma região.

  • O tamanho máximo do corpo da solicitação que você pode enviar para uma função do Lambda é de 6 MB.

  • O tamanho máximo da resposta JSON que a função Lambda pode enviar é de 6 MB.

  • O protocolo deve ser HTTP ouHTTPS.

Preparar a função do Lambda

As recomendações a seguir se aplicam se você estiver usando sua função Lambda com um serviço VPC Lattice.

Permissões para invocar a função do Lambda

Quando você cria o grupo-alvo e registra a função Lambda usando o AWS Management Console ou o AWS CLI, o VPC Lattice adiciona as permissões necessárias à sua política de função Lambda em seu nome.

Você também pode adicionar permissões por conta própria usando a seguinte API chamada:

aws lambda add-permission \ --function-name lambda-function-arn-with-alias-name \ --statement-id vpc-lattice \ --principal vpc-lattice.amazonaws.com \ --action lambda:InvokeFunction \ --source-arn target-group-arn
Versionamento da função do Lambda

É possível registrar uma função Lambda por grupo de destino. Para garantir que você possa alterar sua função Lambda e que o serviço VPC Lattice sempre invoque a versão atual da função Lambda, crie um alias de função e inclua o alias na função ao ARN registrar a função Lambda no serviço Lattice. VPC Para obter mais informações, consulte Versões da função Lambda e Criar um alias para uma função Lambda no Guia do desenvolvedor.AWS Lambda

Criar um grupo de destino para a função do Lambda

Crie um grupo de destino, que é usado no roteamento da solicitação. Se o conteúdo da solicitação corresponder a uma regra de ouvinte com uma ação para encaminhá-la para esse grupo-alvo, o serviço VPC Lattice invoca a função Lambda registrada.

Para criar um grupo de destino e registrar a função do Lambda usando o console
  1. Abra o VPC console da Amazon em https://console.aws.amazon.com/vpc/.

  2. No painel de navegação, em VPCLattice, escolha Grupos de destino.

  3. Selecione Criar grupo de destino.

  4. Em Selecionar um tipo de destino, escolha Função do Lambda.

  5. Em Nome do grupo de destino, insira um nome para o grupo de destino.

  6. Em Versão da estrutura de eventos do Lambda, escolha uma versão. Para obter mais informações, consulte Receba eventos do serviço VPC Lattice.

  7. (Opcional) Para adicionar tags, escolha Tags, Adicionar nova tag e insira a chave e o valor da tag.

  8. Escolha Próximo.

  9. Em Lambda function (Função Lambda), siga um destes procedimentos

    • Selecione uma função do Lambda existente.

    • Crie uma nova função do Lambda e selecione-a.

    • Registre a função do Lambda mais posteriormente.

  10. Selecione Criar grupo de destino.

Para criar um grupo de destino e registrar a função do Lambda usando a AWS CLI

Use os comandos create-target-groupe register-targets.

Receba eventos do serviço VPC Lattice

O serviço VPC Lattice oferece suporte à invocação Lambda para solicitações em ambos os formatos e. HTTP HTTPS O serviço envia um evento em JSON formato e adiciona o X-Forwarded-For cabeçalho a cada solicitação.

Codificação base64

O serviço Base64 codifica o corpo se o cabeçalho content-encoding estiver presente e o tipo de conteúdo não for um dos seguintes:

  • text/*

  • application/json

  • application/xml

  • application/javascript

Se o cabeçalho content-encoding não estiver presente, a codificação Base64 dependerá do tipo de conteúdo. Para os tipos de conteúdo acima, o serviço envia o corpo como está, sem a codificação Base64.

Formato de estrutura de evento

Ao criar ou atualizar um grupo de destino do tipo LAMBDA, você poderá especificar a versão da estrutura de eventos que sua função do Lambda recebe. As versões possíveis são V1 e V2.

exemplo Exemplo de evento: V2
{ "version": "2.0", "path": "/", "method": "GET|POST|HEAD|...", "headers": { "header-key": ["header-value", ...], ... }, "queryStringParameters": { "key": ["value", ...] }, "body": "request-body", "isBase64Encoded": true|false, "requestContext": { "serviceNetworkArn": "arn:aws:vpc-lattice:region:123456789012:servicenetwork/sn-0bf3f2882e9cc805a", "serviceArn": "arn:aws:vpc-lattice:region:123456789012:service/svc-0a40eebed65f8d69c", "targetGroupArn": "arn:aws:vpc-lattice:region:123456789012:targetgroup/tg-6d0ecf831eec9f09", "identity": { "sourceVpcArn": "arn:aws:ec2:region:123456789012:vpc/vpc-0b8276c84697e7339", "type": "AWS_IAM", "principal": "arn:aws:iam::123456789012:assumed-role/my-role/my-session", "principalOrgID": "o-50dc6c495c0c9188", "sessionName": "i-0c7de02a688bde9f7", "x509IssuerOu": "string", "x509SanDns": "string", "x509SanNameCn": "string", "x509SanUri": "string", "x509SubjectCn": "string" }, "region": "region", "timeEpoch": "1690497599177430" } }
body

O corpo da solicitação. Presente somente se o protocolo for HTTPHTTPS,, ou RPC g.

headers

Os HTTP cabeçalhos da solicitação. Presente somente se o protocolo for HTTPHTTPS,, ou RPC g.

identity

As informações de identidade. Os seguintes campos são possíveis.

  • principal: a entidade principal autenticada. Presente somente se a AWS autenticação for bem-sucedida.

  • principalOrgID: o ID da organização da entidade principal autenticada. Presente somente se a AWS autenticação for bem-sucedida.

  • sessionName: o nome da sessão autenticada. Presente somente se a AWS autenticação for bem-sucedida.

  • sourceVpcArn— O ARN de VPC onde a solicitação foi originada. Presente somente se a fonte VPC puder ser identificada.

  • type— O valor é AWS_IAM se uma política de autenticação for usada e a AWS autenticação for bem-sucedida.

Se houver o uso de credenciais do Roles Anywhere e a autenticação for bem-sucedida, os campos a seguir serão possíveis.

  • x509IssuerOu: o emissor (OU).

  • x509SanDns— O nome alternativo do assunto (DNS).

  • x509SanNameCn: o nome alternativo do emissor (nome/CN).

  • x509SanUri— O nome alternativo do assunto (URI).

  • x509SubjectCn: o nome do assunto (CN).

isBase64Encoded

Indica se o corpo foi codificado em base64. Presente somente se o protocolo for HTTPHTTPS, ou g RPC e o corpo da solicitação ainda não for uma string.

method

O HTTP método da solicitação. Presente somente se o protocolo for HTTPHTTPS,, ou RPC g.

path

O caminho da solicitação. Presente somente se o protocolo for HTTPHTTPS,, ou RPC g.

queryStringParameters

Os parâmetros da sequência de caracteres de HTTP consulta. Presente somente se o protocolo for HTTPHTTPS,, ou RPC g.

serviceArn

O ARN do serviço que recebe a solicitação.

serviceNetworkArn

A ARN da rede de serviços que entrega a solicitação.

targetGroupArn

O ARN do grupo-alvo que recebe a solicitação.

timeEpoch

A hora em microssegundos.

exemplo Exemplo de evento: V1
{ "raw_path": "/path/to/resource", "method": "GET|POST|HEAD|...", "headers": {"header-key": "header-value", ... }, "query_string_parameters": {"key": "value", ...}, "body": "request-body", "is_base64_encoded": true|false }

Responda ao serviço VPC Lattice

A resposta da função do Lambda deve incluir o status de codificação Base64, o código do status e os cabeçalhos. É possível omitir o corpo.

Para incluir um conteúdo binário no corpo da resposta, você deve codificar o conteúdo em Base64 e definir isBase64Encoded como true. O serviço decodifica o conteúdo para recuperar o conteúdo binário e o envia ao cliente no corpo da HTTP resposta.

O serviço VPC Lattice não respeita hop-by-hop cabeçalhos, como Connection ou. Transfer-Encoding É possível omitir o cabeçalho Content-Length porque o serviço o calcula antes de enviar respostas aos clientes.

Veja a seguir um exemplo de resposta de uma função do Lambda:

{ "isBase64Encoded": false, "statusCode": 200, "statusDescription": "200 OK", "headers": { "Set-cookie": "cookies", "Content-Type": "application/json" }, "body": "Hello from Lambda (optional)" }

Cabeçalhos de vários valores

Por padrão, o VPC Lattice suporta solicitações de um cliente ou respostas de uma função Lambda contendo cabeçalhos com vários valores ou contendo o mesmo cabeçalho várias vezes. VPCO Lattice também suporta parâmetros de consulta com vários valores para a mesma chave.

Para cabeçalhos de solicitação, se vários parâmetros compartilharem o mesmo nome, o VPC Lattice passará os dois valores para os destinos. Veja a seguir um exemplo no qual header 1 é o nome de dois cabeçalhos distintos:

header1 = foo header1 = bar

Em seguida, o VPC Lattice envia os dois valores para os alvos:

"header1": ["foo", "bar"]

Para strings de consulta, se vários parâmetros compartilharem o mesmo nome, o último valor vencerá. Isso significa que os parâmetros serão _not_ coalesced em um único valor se compartilharem o mesmo nome de chave.

Veja a seguir um exemplo no qual foo e bar são os valores dos parâmetros com o mesmo nomeQS1:

http://www.example.com?&QS1=foo&QS1=bar

Em seguida, o VPC Lattice envia o último valor para os alvos:

"QS1": "bar"

Cancelar o registro da função do Lambda

Se não precisar mais enviar tráfego para sua função Lambda, você poderá cancelar o registro. Depois que você cancela o registro de uma função Lambda, as solicitações em andamento falham com erros 5XX. HTTP

Para substituir uma função Lambda, recomendamos criar um grupo de destino, registrar a nova função com o novo grupo de destino e atualizar as regras do listener para usar o novo grupo de destino em vez do existente.

Para cancelar o registro de funções do Lambda usando o console
  1. Abra o VPC console da Amazon em https://console.aws.amazon.com/vpc/.

  2. No painel de navegação, em VPCLattice, escolha Grupos de destino.

  3. Escolha o nome do grupo de destino para abrir sua página de detalhes.

  4. Na guia Targets (Destinos), selecione Deregister (Cancelar registro).

  5. Quando receber a solicitação de confirmação, insira confirm e escolha Cancelar registro.

Para cancelar o registro da função Lambda usando o AWS CLI

Use o comando deregister-targets.