- API GatewayはSES案件で需要の高いスキルで、バックエンド案件の約40%で求められる
- REST APIとHTTP APIの違いを理解し、ユースケースに応じて選択することが重要
- Lambda統合・Cognito認証・キャッシュ設定を組み合わせた本番運用のベストプラクティスを解説
AWS API Gatewayは、サーバーレスアーキテクチャの入り口として多くのSES案件で採用されています。「Lambda関数を書けるだけではなく、API Gatewayでエンドポイントを設計・運用できるエンジニア」の需要は年々高まっています。
本記事では、REST APIの基本構築からCognito認証、パフォーマンス最適化まで、SES現場で即使える実践的な内容をお届けします。
- API GatewayがSES案件で求められる理由
- REST APIとHTTP APIの違い
- Lambda統合によるAPI構築手順
- Cognito・IAM・APIキーを使った認証設定
- ステージ管理とデプロイメント戦略
- パフォーマンス最適化とモニタリング
AWS API Gatewayの概要とSES案件での需要
まず、API GatewayがSES案件でどのように使われているかを把握しましょう。
API GatewayがSES案件で求められる理由
SES案件でAPI Gatewayスキルが求められるのは、以下の理由からです。
- サーバーレスアーキテクチャの普及: Lambda + API Gatewayの組み合わせが標準的なパターンに
- マイクロサービス化の推進: モノリスからマイクロサービスへの移行案件が増加
- BFF(Backend for Frontend)パターン: フロントエンドとバックエンドの橋渡し役としてのAPI Gateway
- レガシーシステムのAPI化: 既存システムをAPIとして公開するラッパーとして利用
SES現場では、バックエンド開発案件の約40%でAPI Gatewayのスキルが求められていると言われています。
REST API vs HTTP API の違い
API GatewayにはREST APIとHTTP APIの2種類があります。
| 特徴 | REST API | HTTP API |
|---|---|---|
| 料金 | やや高い | REST APIの約30%安い |
| レイテンシー | 標準 | より低レイテンシー |
| 機能 | 豊富(リクエスト検証、WAF、APIキー等) | 基本的な機能 |
| 認証 | IAM, Cognito, Lambda Authorizer, APIキー | IAM, Cognito, JWT |
| キャッシュ | ○ | × |
| 使用量プラン | ○ | × |
| リクエスト変換 | ○(マッピングテンプレート) | × |
選択の目安:
- エンタープライズ用途・複雑な要件 → REST API
- シンプルなAPI・コスト重視 → HTTP API
SES案件では要件が複雑なケースが多いため、REST APIの知識が優先的に求められます。
REST APIの基本構築手順
実際にREST APIを構築する手順を解説します。
リソースとメソッドの設計
REST APIの設計はリソース設計から始めます。例として、ユーザー管理APIを設計します。
/users
GET → ユーザー一覧の取得
POST → ユーザーの作成
/users/{userId}
GET → 特定ユーザーの取得
PUT → ユーザー情報の更新
DELETE → ユーザーの削除
/users/{userId}/orders
GET → 特定ユーザーの注文一覧
AWS CLIでの作成例:
# REST APIの作成
aws apigateway create-rest-api \
--name "UserManagementAPI" \
--description "ユーザー管理API" \
--endpoint-configuration types=REGIONAL
# リソースの作成
aws apigateway create-resource \
--rest-api-id $API_ID \
--parent-id $ROOT_ID \
--path-part "users"
Lambda統合の設定方法
API GatewayとLambdaを統合するには、Lambda プロキシ統合を使うのが最もシンプルです。
# メソッドの作成とLambda統合
aws apigateway put-method \
--rest-api-id $API_ID \
--resource-id $RESOURCE_ID \
--http-method GET \
--authorization-type NONE
aws apigateway put-integration \
--rest-api-id $API_ID \
--resource-id $RESOURCE_ID \
--http-method GET \
--type AWS_PROXY \
--integration-http-method POST \
--uri "arn:aws:apigateway:ap-northeast-1:lambda:path/2015-03-31/functions/$LAMBDA_ARN/invocations"
Lambda側のレスポンスフォーマット:
def handler(event, context):
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
},
'body': json.dumps({
'users': [
{'id': '1', 'name': 'Tanaka'},
{'id': '2', 'name': 'Suzuki'}
]
})
}
認証・認可の実装
本番運用に不可欠な認証・認可の実装方法を解説します。
Cognitoユーザープール統合
最も一般的な認証方法がAmazon Cognitoユーザープールとの統合です。
# Cognitoオーソライザーの作成
aws apigateway create-authorizer \
--rest-api-id $API_ID \
--name "CognitoAuthorizer" \
--type COGNITO_USER_POOLS \
--provider-arns "arn:aws:cognito-idp:ap-northeast-1:123456789:userpool/ap-northeast-1_xxxxx" \
--identity-source "method.request.header.Authorization"
クライアント側からは、CognitoのIDトークンをAuthorizationヘッダーに含めてリクエストします。
IAM認証とAPIキー管理
サービス間通信にはIAM認証、サードパーティ連携にはAPIキーを使います。
APIキーの運用ベストプラクティス:
- APIキーは認証ではなく**アクセス管理(使用量制限)**として使用
- 本番環境ではCognitoまたはIAM認証と組み合わせる
- APIキーのローテーションを定期的に実施
- 使用量プランでスロットリングを設定
ステージとデプロイメント管理
API Gatewayのステージ機能を使って、環境を分離します。
開発/ステージング/本番の環境分離
# デプロイメントの作成
aws apigateway create-deployment \
--rest-api-id $API_ID \
--stage-name dev
aws apigateway create-deployment \
--rest-api-id $API_ID \
--stage-name staging
aws apigateway create-deployment \
--rest-api-id $API_ID \
--stage-name prod
各ステージでステージ変数を使って環境固有の設定を管理します。
# ステージ変数の設定
aws apigateway update-stage \
--rest-api-id $API_ID \
--stage-name prod \
--patch-operations op=replace,path=/variables/lambdaAlias,value=prod
Lambda側で${stageVariables.lambdaAlias}を参照することで、ステージごとに異なるLambdaバージョンを呼び出せます。
パフォーマンス最適化
本番運用でのパフォーマンスを最適化する方法を解説します。
キャッシュ設定・スロットリング・WAF連携
1. APIキャッシュの設定
# キャッシュの有効化(0.5GBキャッシュ)
aws apigateway update-stage \
--rest-api-id $API_ID \
--stage-name prod \
--patch-operations \
op=replace,path=/cacheClusterEnabled,value=true \
op=replace,path=/cacheClusterSize,value=0.5
キャッシュにより、同一リクエストに対するLambda呼び出しを削減し、レスポンス速度を向上させます。
2. スロットリング設定
使用量プランを作成して、APIキーごとのリクエスト上限を設定します。
- バースト制限: 短時間の突発的なリクエストに対する上限
- レート制限: 1秒あたりのリクエスト上限
- クォータ: 日/週/月単位のリクエスト上限
3. AWS WAFとの連携
REST APIにはAWS WAFを適用して、SQLインジェクションやXSSなどの攻撃を防御できます。
モニタリングとトラブルシューティング
CloudWatch連携とX-Rayトレーシング
CloudWatchメトリクスで以下を監視します。
- 4XXError / 5XXError: クライアントエラー・サーバーエラーの発生率
- Latency: APIのレスポンス時間
- Count: リクエスト数
- CacheHitCount / CacheMissCount: キャッシュのヒット率
X-Rayを有効にすることで、API Gateway → Lambda → DynamoDB のリクエストフロー全体をトレースできます。
# X-Rayトレーシングの有効化
aws apigateway update-stage \
--rest-api-id $API_ID \
--stage-name prod \
--patch-operations op=replace,path=/tracingEnabled,value=true
AWSのAPI Gateway公式ドキュメントも併せて参照してください。
関連記事として「AWS SESエンジニアガイド」「AWS Lambda入門ガイド」「AWS IAMセキュリティ」も参考にしてください。
まとめ|API GatewayスキルでSES案件の幅を広げる
AWS API Gatewayは、SESエンジニアのバックエンドスキルを強化する重要な技術です。
- REST APIの設計と構築がSES案件で高く評価される
- Lambda統合でサーバーレスアーキテクチャを実現
- Cognito認証で本番レベルのセキュリティを確保
- ステージ管理で安全なデプロイメントフローを構築
- キャッシュ・WAFでパフォーマンスとセキュリティを最適化
API Gatewayのスキルを身につけることで、サーバーレス案件やマイクロサービス案件への参画チャンスが大きく広がります。まずはLambdaとの基本的な統合から始めて、認証やキャッシュといった本番運用のテクニックを段階的に習得していきましょう。

SES BASEではAWS関連の案件を多数掲載中。API Gateway・Lambda・サーバーレスの経験を活かせる案件を見つけましょう。
SES BASEで案件を探す →