"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Simplificando o acesso à API com URLs de função do AWS Lambda: tratamento de GET, POST, PUT e DELETE com segurança integrada

Simplificando o acesso à API com URLs de função do AWS Lambda: tratamento de GET, POST, PUT e DELETE com segurança integrada

Publicado em 2024-08-24
Navegar:373

Simplifying API Access with AWS Lambda Function URLs: Handling GET, POST, PUT, and DELETE with Built-in Security

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.

O que são URLs de funções Lambda?

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.

Configurando um URL de função Lambda

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.

  1. Criar uma função Lambda:

    • Vá para o console do AWS Lambda.
    • Clique em "Criar função".
    • Escolha a opção "Criar do zero".
    • Defina o nome da função, o tempo de execução e a função de execução.
    • Escreva seu código de função ou carregue um pacote de implantação.
  2. Criar um URL de função:

    • Na configuração da sua função, selecione a guia “URL da função”.
    • Clique em “Criar URL de função”.
    • Escolha o tipo de autorização (por exemplo, AWS_IAM para acesso autenticado ou NONE para acesso público).
    • Clique em "Criar URL de função".
  3. Proteja o URL da sua função:

    • Você pode usar AWS IAM para autenticação selecionando AWS_IAM como o tipo de autorização.
    • Crie funções ou políticas do IAM para controlar quais usuários ou serviços podem invocar a função por meio do URL.
    • Opcionalmente, você pode implementar uma lógica de autorização personalizada dentro da própria função para restringir ainda mais o acesso.

Tratamento de diferentes métodos HTTP

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'})
    }

Exemplo de proteção do URL da função com autenticação IAM

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:

  1. Crie um usuário/função IAM com permissões apropriadas para invocar a função Lambda.
  2. Assine a solicitação: use AWS SDKs, CLI ou ferramentas como Postman (com autenticação AWS IAM) para assinar as solicitações HTTP.
  3. Invoque o URL da função: certifique-se de que a solicitação assinada contém credenciais válidas; caso contrário, a solicitação será negada.

Por exemplo, com a AWS CLI:

aws lambda invoke-url https://.lambda-url..on.aws/ \
--http-method POST \
--body '{ "key": "value" }' \
--region  \
--profile 

Conclusão

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.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/sunil_yaduvanshi/simplifying-api-access-with-aws-lambda-function-urls-handling-get-post-put-and-delete-with-built-in- segurança- 4665?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

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