«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Упрощение доступа к API с помощью URL-адресов функций AWS Lambda: обработка GET, POST, PUT и DELETE с помощью встроенной безопасности

Упрощение доступа к API с помощью URL-адресов функций AWS Lambda: обработка GET, POST, PUT и DELETE с помощью встроенной безопасности

Опубликовано 24 августа 2024 г.
Просматривать:652

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

При создании бессерверных приложений на AWS AWS Lambda часто является идеальным решением для запуска кода без подготовки серверов или управления ими. Традиционно AWS API Gateway использовался для предоставления функций Lambda как RESTful API. Однако AWS представила URL-адреса функций Lambda — более простой способ вызова функций Lambda через HTTPS без затрат на настройку шлюза API. В этом посте мы рассмотрим, как использовать URL-адреса лямбда-функций для обработки различных методов HTTP — GET, POST, PUT и DELETE — с использованием аутентификации безопасности.

Что такое URL-адреса лямбда-функций?

URL-адреса функции Lambda предоставляют выделенную конечную точку HTTP(S) для вашей функции Lambda. Эта функция особенно полезна для микросервисов с одной функцией, облегченных API или когда вам нужно сделать функцию Lambda общедоступной с минимальной настройкой.

Настройка URL-адреса лямбда-функции

Сначала давайте создадим лямбда-функцию и настроим ее URL-адрес. Это можно сделать с помощью консоли управления AWS, интерфейса командной строки AWS или инструментов «Инфраструктура как код» (IaC), таких как AWS CloudFormation или Terraform.

  1. Создание лямбда-функции:

    • Перейдите в консоль AWS Lambda.
    • Нажмите «Создать функцию».
    • Выберите вариант «Автор с нуля».
    • Определите имя функции, среду выполнения и роль выполнения.
    • Напишите код функции или загрузите пакет развертывания.
  2. Создайте URL-адрес функции:

    • В конфигурации вашей функции выберите вкладку «URL-адрес функции».
    • Нажмите «Создать URL-адрес функции».
    • Выберите тип авторизации (например, AWS_IAM для доступа с аутентификацией или NONE для публичного доступа).
    • Нажмите «Создать URL-адрес функции».
  3. Защитите URL-адрес своей функции:

    • Вы можете использовать AWS IAM для аутентификации, выбрав AWS_IAM в качестве типа авторизации.
    • Создайте роли или политики IAM, чтобы контролировать, какие пользователи или службы могут вызывать функцию через URL-адрес.
    • При желании вы можете реализовать собственную логику авторизации внутри самой функции для дальнейшего ограничения доступа.

Обработка различных методов HTTP

Функции Lambda, запускаемые URL-адресами функций, могут обрабатывать несколько методов HTTP — GET, POST, PUT и DELETE — в рамках одной функции. Вот простой пример того, как это реализовать:

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

Пример защиты URL-адреса функции с помощью IAM-аутентификации

Если вы решили использовать AWS_IAM для защиты URL-адреса функции, клиентам необходимо будет подписывать запросы с помощью AWS SigV4 (подпись версии 4). Вот краткий обзор того, как отправлять аутентифицированные запросы:

  1. Создайте пользователя/роль IAM с соответствующими разрешениями для вызова функции Lambda.
  2. Подпишите запрос: используйте AWS SDK, CLI или такие инструменты, как Postman (с аутентификацией AWS IAM), чтобы подписывать HTTP-запросы.
  3. Вызов URL-адреса функции: убедитесь, что подписанный запрос содержит действительные учетные данные; в противном случае запрос будет отклонен.

Например, с помощью интерфейса командной строки AWS:

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

Заключение

URL-адреса функций AWS Lambda предлагают упрощенный способ предоставления функций Lambda через HTTP без необходимости использования шлюза API. Обрабатывая различные методы HTTP (GET, POST, PUT, DELETE) в функции Lambda и обеспечивая доступ с помощью AWS IAM, вы можете быстро создавать легкие и безопасные API. Независимо от того, разрабатываете ли вы простой микросервис или более сложное приложение, URL-адреса лямбда-функций станут мощным дополнением к вашему набору инструментов AWS.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/sunil_yaduvanshi/simplifying-api-access-with-aws-lambda-function-urls-handling-get-post-put-and-delete-with-built-in- безопасность- 4665?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3