ホームページ >バックエンド開発 >Python チュートリアル >AWS Lambda 関数 URL による API アクセスの簡素化: 組み込みセキュリティによる GET、POST、PUT、DELETE の処理

AWS Lambda 関数 URL による API アクセスの簡素化: 組み込みセキュリティによる GET、POST、PUT、DELETE の処理

WBOY
WBOYオリジナル
2024-08-11 12:51:31909ブラウズ

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 マネジメントコンソール、AWS CLI、または AWS CloudFormation や Terraform などの Infrastructure as Code (IaC) ツールを介して実行できます。

  1. Lambda 関数を作成します:

    • AWS Lambda コンソールに移動します。
    • 「関数の作成」をクリックします。
    • 「最初から作成する」オプションを選択します。
    • 関数名、ランタイム、実行ロールを定義します。
    • 関数コードを記述するか、展開パッケージをアップロードします。
  2. 関数 URL を作成します:

    • 関数の設定で、[関数 URL] タブを選択します。
    • 「関数 URL の作成」をクリックします。
    • 認可タイプを選択します (例: 認証されたアクセスの場合は AWS_IAM、パブリック アクセスの場合は NONE)。
    • 「関数 URL の作成」をクリックします。
  3. 関数 URL を保護:

    • 認証タイプとして AWS_IAM を選択すると、認証に AWS IAM を使用できます。
    • IAM ロールまたはポリシーを作成して、URL 経由で関数を呼び出せるユーザーまたはサービスを制御します。
    • オプションで、関数自体内にカスタム承認ロジックを実装して、アクセスをさらに制限できます。

さまざまな HTTP メソッドの処理

関数 URL によってトリガーされる Lambda 関数は、単一関数内で複数の 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'})
    }

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://<your-function-url-id>.lambda-url.<region>.on.aws/<your-path> \
--http-method POST \
--body '{ "key": "value" }' \
--region <region> \
--profile <aws-profile>

結論

AWS Lambda 関数 URL は、API ゲートウェイを必要とせずに、HTTP 経由で Lambda 関数を公開する合理的な方法を提供します。 Lambda 関数内でさまざまな HTTP メソッド (GET、POST、PUT、DELETE) を処理し、AWS IAM でアクセスを保護することで、軽量で安全な API を迅速に構築できます。単純なマイクロサービスを開発している場合でも、より複雑なアプリケーションを開発している場合でも、Lambda 関数 URL は AWS ツールキットへの強力な追加機能です。

以上がAWS Lambda 関数 URL による API アクセスの簡素化: 組み込みセキュリティによる GET、POST、PUT、DELETE の処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。