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-idvpc-lattice
\ --principal vpc-lattice.amazonaws.com \ --action lambda:InvokeFunction \ --source-arntarget-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
Abra o VPC console da Amazon em https://console.aws.amazon.com/vpc/
. -
No painel de navegação, em VPCLattice, escolha Grupos de destino.
-
Selecione Criar grupo de destino.
-
Em Selecionar um tipo de destino, escolha Função do Lambda.
-
Em Nome do grupo de destino, insira um nome para o grupo de destino.
-
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.
-
(Opcional) Para adicionar tags, escolha Tags, Adicionar nova tag e insira a chave e o valor da tag.
-
Escolha Próximo.
-
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.
-
-
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
Abra o VPC console da Amazon em https://console.aws.amazon.com/vpc/
. -
No painel de navegação, em VPCLattice, escolha Grupos de destino.
-
Escolha o nome do grupo de destino para abrir sua página de detalhes.
-
Na guia Targets (Destinos), selecione Deregister (Cancelar registro).
-
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.