API GatewayとLambda

🔥 Vibe プロンプト

「API Gateway HTTP API + Lambda + DynamoDBでサーバーレスCRUD APIを作成。」

import boto3, json, os

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table(os.environ['TABLE_NAME'])

def lambda_handler(event, context):
    method = event['requestContext']['http']['method']
    path = event['requestContext']['http']['path']
    
    if method == 'GET' and path == '/items':
        items = table.scan()['Items']
        return {"statusCode": 200, "body": json.dumps(items)}
    elif method == 'POST' and path == '/items':
        body = json.loads(event['body'])
        table.put_item(Item=body)
        return {"statusCode": 201}

Terraform

resource "aws_apigatewayv2_api" "http" {
  name = "serverless-api"
  protocol_type = "HTTP"
}

resource "aws_apigatewayv2_integration" "lambda" {
  api_id = aws_apigatewayv2_api.http.id
  integration_type = "AWS_PROXY"
  integration_uri = aws_lambda_function.api.arn
}

resource "aws_apigatewayv2_route" "proxy" {
  api_id = aws_apigatewayv2_api.http.id
  route_key = "$default"
  target = "integrations/${aws_apigatewayv2_integration.lambda.id}"
}

主要概念

  • HTTP API = REST APIより安い
  • $defaultルートですべてのパスをキャッチ
  • Lambdaプロキシ統合で完全リクエスト渡し
  • CORSはAPI Gatewayレベルで設定

コスト比較

| APIタイプ | コスト(100万リクエスト) | |----------|------------------------| | HTTP API | ~$1.00 | | REST API | ~$3.50 |

重要なポイント

  • コアコンセプトをしっかり理解する
  • ハンズオンコード例で実践する
  • 実世界の問題に応用する
  • 演習で知識を強化する

さらに学ぶ

  • 公式ドキュメント
  • GitHubのオープンソースプロジェクト
  • コミュニティフォーラムとディスカッション
  • 関連コースとチュートリアル

会員限定無料チュートリアル

このチャプターは登録会員限定の無料コンテンツです!ログインまたは登録してすぐにロックを解除してください。

今すぐログイン / 登録