Criar e gerenciar URLs de função do Lambda
Um URL de função é um endpoint HTTP(S) dedicado para a função do Lambda. Você pode criar e configurar um URL de função no console do Lambda ou na API do Lambda. Ao criar um URL de função, o Lambda gera automaticamente um endpoint de URL exclusivo para você. Após a criação de um URL de função, o endpoint de URL nunca muda. Os endpoints de URLs de função têm o seguinte formato:
https://
<url-id>
.lambda-url.<region>.on.aws
nota
Os URLs de função não são aceitos nas seguintes Regiões da AWS: Ásia-Pacífico (Hyderabad) (ap-south-2
), Ásia-Pacífico (Melbourne) (ap-southeast-4
), Ásia-Pacífico (Malásia) (ap-southeast-5
), Canadá Ocidental (Calgary) (ca-west-1
), Europa (Espanha) (eu-south-2
), Europa (Zurique) (eu-central-2
), Israel (Tel Aviv) (il-central-1
) e Oriente Médio (EAU) (me-central-1
).
Os URLs de função são habilitados para pilha dupla, sendo compatíveis com IPv4 e IPv6. Depois de configurar um URL de função para a sua função, você pode invocar a função por meio de seu endpoint HTTP(S) via um navegador da Web, curl, Postman ou qualquer cliente HTTP.
nota
Você só pode acessar a URL da função pela Internet pública. Embora as funções do Lambda sejam compatíveis com o AWS PrivateLink, as URLs de função não o são.
Os URLs de função do Lambda usam políticas baseadas em recursos para segurança e controle de acesso. Os URLs de função também são compatíveis com opções de configuração de compartilhamento de recursos de origem cruzada (CORS).
Você pode aplicar URLs de função a qualquer alias de função ou à versão da função não publicada $LATEST
. Você não pode adicionar um URL de função a nenhuma outra versão da função.
A seção a seguir mostra como criar e gerenciar um URL da função usando o console do Lambda, a AWS CLI e o modelo do AWS CloudFormation.
Tópicos
- Criar um URL de função (console)
- Criar um URL de função (AWS CLI)
- Adicionar um URL de função a um modelo do CloudFormation
- Compartilhamento de recursos de origem cruzada (CORS)
- Controlar a utilização de URLs de função
- Desativar URLs de função
- Excluir URLs de funções
- Controlar o acesso aos URLs de função do Lambda
- Invocar URLs de função do Lambda
- Monitorar URLs de função do Lambda
- Tutorial: criar uma função do Lambda com um URL de função
Criar um URL de função (console)
Siga estas etapas para criar um URL de função usando o console.
-
Abra a página Funções
do console do Lambda. -
Escolha o nome da função para a qual você deseja criar o URL de função.
-
Escolha a guia Configuration (Configuração) e depois Function URL (URL de função).
-
Escolha Create function URL (Criar URL de função).
-
Para Auth type (Tipo de autenticação), escolha AWS_IAM ou NONE (NENHUM). Para obter mais informações sobre autenticação de URLs de função, consulte Controle de acesso.
-
(Opcional) Selecione Configure cross-origin resource sharing (CORS) [Configurar compartilhamento de recursos de origem cruzada (CORS)] e defina as configurações de CORS para o URL de função. Para obter mais informações sobre CORS, consulte Compartilhamento de recursos de origem cruzada (CORS).
-
Escolha Salvar.
Isso cria um URL de função para a versão da função não publicada $LATEST
. O URL de função aparece na seção Function overview (Visão geral de funções) do console.
-
Abra a página Funções
do console do Lambda. -
Escolha o nome da função com o alias para o qual você deseja criar o URL de função.
-
Escolha a guia Aliases e depois escolha o nome do alias para o qual você deseja criar o URL de função.
-
Escolha a guia Configuration (Configuração) e depois Function URL (URL de função).
-
Escolha Create function URL (Criar URL de função).
-
Para Auth type (Tipo de autenticação), escolha AWS_IAM ou NONE (NENHUM). Para obter mais informações sobre autenticação de URLs de função, consulte Controle de acesso.
-
(Opcional) Selecione Configure cross-origin resource sharing (CORS) [Configurar compartilhamento de recursos de origem cruzada (CORS)] e defina as configurações de CORS para o URL de função. Para obter mais informações sobre CORS, consulte Compartilhamento de recursos de origem cruzada (CORS).
-
Escolha Salvar.
Isso cria um URL de função para o alias da função. O URL de função aparece na seção Function overview (Visão geral de funções) do console para o alias.
Para criar uma nova função com um URL de função (console)
-
Abra a página Funções
do console do Lambda. -
Escolha a opção Criar função.
-
Em Basic information (Informações básicas), faça o seguinte:
-
Em Function Name (Nome da função), insira o nome da função, como
my-function
. -
Em Runtime, escolha o runtime da linguagem de sua preferência, como Node.js 18.x.
-
Para Architecture (Arquitetura ), escolha x86_64 ou arm64.
-
Expanda Permissions (Permissões) e depois escolha se vai criar uma nova função de execução ou usar uma já existente.
-
-
Expanda Advanced settings (Configurações avançadas) e selecione Function URL (URL de função).
-
Para Auth type (Tipo de autenticação), escolha AWS_IAM ou NONE (NENHUM). Para obter mais informações sobre autenticação de URLs de função, consulte Controle de acesso.
-
(Opcional) Selecione Configure cross-origin resource sharing (CORS) [(Configurar compartilhamento de recursos de origem cruzada (CORS)]. Se essa opção for selecionada durante a criação da função, o URL de função permitirá solicitações de todas as origens por padrão. Você pode editar as configurações de CORS para o URL de função após criar a função. Para obter mais informações sobre CORS, consulte Compartilhamento de recursos de origem cruzada (CORS).
-
Escolha a opção Criar função.
Isso cria um novo URL de função para a versão da função não publicada $LATEST
. O URL de função aparece na seção Function overview (Visão geral de funções) do console.
Criar um URL de função (AWS CLI)
Para criar uma URL de função para uma função existente do Lambda usando a AWS Command Line Interface (AWS CLI), execute o seguinte comando:
aws lambda create-function-url-config \ --function-name
my-function
\ --qualifierprod
\ // optional --auth-typeAWS_IAM
--cors-config{AllowOrigins="https://example.com"}
// optional
Isso adiciona um URL de função ao qualificador prod
da função my-function
. Para obter mais informações sobre esses parâmetros de configuração, consulte CreateFunctionURLConfig na referência da API.
nota
Para criar um URL de função por meio da AWS CLI, a função já deve existir.
Adicionar um URL de função a um modelo do CloudFormation
Para adicionar um recurso de AWS::Lambda::Url
ao modelo do AWS CloudFormation, use a seguinte sintaxe:
JSON
{ "Type" : "AWS::Lambda::Url", "Properties" : { "AuthType" : String, "Cors" : Cors, "Qualifier" : String, "TargetFunctionArn" : String } }
YAML
Type: AWS::Lambda::Url Properties: AuthType: String Cors: Cors Qualifier: String TargetFunctionArn: String
Parâmetros
(Obrigatório)
AuthType
: define o tipo de autenticação para o URL de função. Os valores possíveis sãoAWS_IAM
ouNONE
. Para restringir o acesso somente para usuários autenticados, defina comoAWS_IAM
. Para ignorar a autenticação do IAM e permitir que qualquer usuário faça solicitações à a função, defina comoNONE
.-
(Optional)
Cors
: defina CORS settings (Configurações de CORS) para o URL de função. Para adicionarCors
ao recursoAWS::Lambda::Url
no CloudFormation, use a sintaxe a seguir.exemplo AWS::Lambda::Url.Cors (JSON)
{ "AllowCredentials" : Boolean, "AllowHeaders" : [ String, ... ], "AllowMethods" : [ String, ... ], "AllowOrigins" : [ String, ... ], "ExposeHeaders" : [ String, ... ], "MaxAge" : Integer }
exemplo AWS::Lambda::Url.Cors (YAML)
AllowCredentials: Boolean AllowHeaders: - String AllowMethods: - String AllowOrigins: - String ExposeHeaders: - String MaxAge: Integer
(Optional)
Qualifier
: o nome do alias.(Obrigatório)
TargetFunctionArn
: o nome ou o nome do recurso da Amazon (ARN) da função do Lambda. Os formatos de nome válidos incluem o seguinte:Nome da função:
my-function
ARN da função:
arn:aws:lambda:us-west-2:123456789012:function:my-function
ARN parcial:
123456789012:function:my-function
Compartilhamento de recursos de origem cruzada (CORS)
Para definir como diferentes origens podem acessar o URL de função, use Compartilhamento de recursos de origem cruzada (CORS)
Cabeçalhos de CORS | Propriedade da configuração de CORS | Exemplos de valores |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quando você configura o CORS para um URL de função usando o console do Lambda ou a AWS CLI, o Lambda adiciona automaticamente os cabeçalhos de CORS a todas as respostas por meio do URL de função. Como alternativa, você pode adicionar manualmente cabeçalhos de CORS à resposta da função. Se houver cabeçalhos conflitantes, o comportamento esperado depende do tipo de solicitação:
-
Para solicitações de preflight, como solicitações de OPTIONS, os cabeçalhos CORS configurados na URL da função têm precedência. O Lambda só retorna esses cabeçalhos CORS na resposta.
-
Para solicitações que não são de preflight, como solicitações GET ou POST, o Lambda retorna os cabeçalhos CORS configurados na URL da função, bem como os cabeçalhos CORS retornados pela função. Isso pode resultar em cabeçalhos CORS duplicados na resposta. Você pode ver um log similar a este:
The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed
.
Em geral, recomendamos definir todas as configurações de CORS na URL da função, em vez de enviar cabeçalhos CORS manualmente na resposta da função.
Controlar a utilização de URLs de função
O controle de utilização limita a taxa na qual a função processa as solicitações. Isso é útil em muitas situações, como para impedir que a função sobrecarregue recursos downstream ou para lidar com um aumento repentino de solicitações.
Você pode limitar a taxa de solicitações que a função do Lambda processa por meio de um URL de função configurando a simultaneidade reservada. A simultaneidade reservada limita o número máximo de invocações simultâneas para a função. A taxa máxima de solicitação por segundo (RPS) da função é equivalente a 10 vezes a simultaneidade reservada configurada. Por exemplo, se você configurar a função com uma simultaneidade reservada de 100, o RPS máximo será 1.000.
Sempre que a simultaneidade da função exceder a simultaneidade reservada, o URL de função retornará um código de status HTTP 429
. Se a função receber uma solicitação que exceda o máximo de 10x RPS com base na simultaneidade reservada configurada, você também receberá um erro HTTP 429
. Para obter mais informações sobre simultaneidade reservada, consulte Configurar a simultaneidade reservada para uma função.
Desativar URLs de função
Em uma emergência, talvez você queira rejeitar todo o tráfego para o URL de função. Para reativar o URL de função, defina a simultaneidade reservada como zero. Isso controla a utilização de todas as solicitações ao URL de função, gerando respostas de status HTTP 429
. Para reativar o URL de função, exclua a configuração de simultaneidade reservada ou defina a configuração como um valor maior que zero.
Excluir URLs de funções
Quando você exclui um URL de função, não pode recuperá-lo. A criação de um novo URL de função resultará em um endereço URL diferente.
nota
Se você excluir um URL da função com o tipo de autenticação NONE
, o Lambda não excluirá a política baseada em recursos associada a ela. Se quiser excluir essa política, deverá excluí-la manualmente.
-
Abra a página Funções
do console do Lambda. -
Escolha o nome da função.
-
Escolha a guia Configuration (Configuração) e depois Function URL (URL de função).
-
Escolha Excluir.
-
Insira a palavra delete (excluir) no campo para confirmar a exclusão.
-
Escolha Excluir.
nota
Quando você exclui uma função que tem uma URL da função, o Lambda a exclui a URL da função de modo assíncrono. Se você criar imediatamente uma nova função com o mesmo nome e na mesma conta, é possível que a URL da função original seja mapeada para a nova função em vez de ser excluída.