Ao criar aplicativos sem servidor na AWS, o AWS Lambda costuma ser a solução ideal para executar código sem provisionar ou gerenciar servidores. Tradicionalmente, o AWS API Gateway tem sido usado para expor funções Lambda como APIs RESTful. No entanto, a AWS introduziu URLs de função Lambda, uma maneira mais simples de invocar funções Lambda via HTTPS sem a sobrecarga de configurar um API Gateway. Nesta postagem, exploraremos como usar URLs de função Lambda para lidar com diferentes métodos HTTP – GET, POST, PUT e DELETE – enquanto incorporamos autenticação de segurança.
URLs de função Lambda fornecem um endpoint HTTP(S) dedicado para sua função Lambda. Esse recurso é particularmente útil para microsserviços de função única, APIs leves ou quando você precisa expor uma função Lambda ao público com configuração mínima.
Primeiro, vamos criar uma função Lambda e configurar seu URL. Você pode fazer isso por meio do AWS Management Console, AWS CLI ou ferramentas de infraestrutura como código (IaC), como AWS CloudFormation ou Terraform.
Criar uma função Lambda:
Criar um URL de função:
Proteja o URL da sua função:
As funções Lambda acionadas por URLs de função podem lidar com vários métodos HTTP – GET, POST, PUT e DELETE – em uma única função. Aqui está um exemplo simples de como implementar isso:
import json def lambda_handler(event, context): # Determine the HTTP method http_method = event['httpMethod'] if http_method == 'GET': return handle_get(event) elif http_method == 'POST': return handle_post(event) elif http_method == 'PUT': return handle_put(event) elif http_method == 'DELETE': return handle_delete(event) else: return { 'statusCode': 405, 'body': json.dumps({'message': 'Method Not Allowed'}) } def handle_get(event): # Handle GET request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'GET request received'}) } def handle_post(event): # Handle POST request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'POST request received'}) } def handle_put(event): # Handle PUT request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'PUT request received'}) } def handle_delete(event): # Handle DELETE request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'DELETE request received'}) }
Se você optou por usar AWS_IAM para proteger o URL de sua função, os clientes precisarão assinar solicitações usando AWS SigV4 (Signature versão 4). Aqui está uma breve visão geral de como fazer solicitações autenticadas:
Por exemplo, com a AWS CLI:
aws lambda invoke-url https://.lambda-url. .on.aws/ \ --http-method POST \ --body '{ "key": "value" }' \ --region \ --profile
Os URLs de função do AWS Lambda oferecem uma maneira simplificada de expor funções do Lambda via HTTP sem a necessidade de um API Gateway. Ao lidar com diferentes métodos HTTP (GET, POST, PUT, DELETE) na função Lambda e proteger o acesso com o AWS IAM, você pode criar APIs leves e seguras rapidamente. Esteja você desenvolvendo um microsserviço simples ou um aplicativo mais complexo, os URLs de função Lambda são uma adição poderosa ao seu kit de ferramentas da AWS.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3