"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > AWS Lambda 함수 URL을 사용하여 API 액세스 단순화: 내장된 보안으로 GET, POST, PUT 및 DELETE 처리

AWS Lambda 함수 URL을 사용하여 API 액세스 단순화: 내장된 보안으로 GET, POST, PUT 및 DELETE 처리

2024-08-24에 게시됨
검색:486

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는 API 게이트웨이를 구성하는 오버헤드 없이 HTTPS를 통해 Lambda 함수를 호출하는 더 간단한 방법인 Lambda 함수 URL을 도입했습니다. 이 게시물에서는 보안 인증을 통합하면서 Lambda 함수 URL을 사용하여 다양한 HTTP 메서드(GET, POST, PUT, DELETE)를 처리하는 방법을 살펴보겠습니다.

Lambda 함수 URL이란 무엇입니까?

Lambda 함수 URL은 Lambda 함수에 대한 전용 HTTP(S) 엔드포인트를 제공합니다. 이 기능은 단일 기능 마이크로서비스, 경량 API 또는 최소한의 설정으로 Lambda 함수를 대중에게 공개해야 하는 경우에 특히 유용합니다.

Lambda 함수 URL 설정

먼저 Lambda 함수를 생성하고 해당 URL을 구성해 보겠습니다. AWS Management Console, AWS CLI 또는 AWS CloudFormation이나 Terraform과 같은 IaC(Infrastructure as Code) 도구를 통해 이 작업을 수행할 수 있습니다.

  1. Lambda 함수 생성:

    • AWS Lambda 콘솔로 이동합니다.
    • '함수 만들기'를 클릭하세요.
    • '처음부터 작성' 옵션을 선택하세요.
    • 함수 이름, 런타임, 실행 역할을 정의하세요.
    • 기능 코드를 작성하거나 배포 패키지를 업로드하세요.
  2. 함수 URL 생성:

    • 함수 구성에서 '함수 URL' 탭을 선택하세요.
    • '함수 URL 생성'을 클릭하세요.
    • 인증 유형을 선택합니다(예: 인증된 액세스의 경우 AWS_IAM, 퍼블릭 액세스의 경우 NONE).
    • '함수 URL 생성'을 클릭하세요.
  3. 함수 URL 보호:

    • 인증 유형으로 AWS_IAM을 선택하면 인증에 AWS IAM을 사용할 수 있습니다.
    • IAM 역할 또는 정책을 생성하여 URL을 통해 함수를 호출할 수 있는 사용자 또는 서비스를 제어합니다.
    • 선택적으로 함수 자체 내에 맞춤 인증 로직을 구현하여 액세스를 더욱 제한할 수 있습니다.

다양한 HTTP 메서드 처리

함수 URL에 의해 트리거되는 Lambda 함수는 단일 함수 내에서 GET, POST, PUT, DELETE 등 여러 HTTP 메서드를 처리할 수 있습니다. 이를 구현하는 방법에 대한 간단한 예는 다음과 같습니다.

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

IAM 인증을 통한 함수 URL 보안 예시

함수 URL 보안을 위해 AWS_IAM을 사용하기로 선택한 경우 클라이언트는 AWS SigV4(서명 버전 4)를 사용하여 요청에 서명해야 합니다. 인증된 요청을 수행하는 방법에 대한 간략한 개요는 다음과 같습니다.

  1. Lambda 함수를 호출할 수 있는 적절한 권한이 있는 IAM 사용자/역할을 생성합니다.
  2. 요청에 서명: AWS SDK, CLI 또는 Postman과 같은 도구(AWS IAM 인증 사용)를 사용하여 HTTP 요청에 서명합니다.
  3. 함수 URL 호출: 서명된 요청에 유효한 자격 증명이 포함되어 있는지 확인하세요. 그렇지 않으면 요청이 거부됩니다.

예를 들어 AWS CLI의 경우:

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

결론

AWS Lambda 함수 URL은 API 게이트웨이 없이도 HTTP를 통해 Lambda 함수를 노출하는 간소화된 방법을 제공합니다. Lambda 함수 내에서 다양한 HTTP 메서드(GET, POST, PUT, DELETE)를 처리하고 AWS IAM으로 액세스를 보호함으로써 가볍고 안전한 API를 빠르게 구축할 수 있습니다. 간단한 마이크로서비스를 개발하든 더 복잡한 애플리케이션을 개발하든 상관없이 Lambda 함수 URL은 AWS 도구 키트에 강력한 추가 기능입니다.

릴리스 선언문 이 기사는 https://dev.to/sunil_yaduvanshi/simplifying-api-access-with-aws-lambda-function-urls-handling-get-post-put-and-delete-with-built-in-에서 재현됩니다. security- 4665?1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제해 주시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3