みなさんは開発時に外部ITサービスのAPIを利用したことがあると思います。その際、「使用プラン」や「APIキー」などの用語を目にしたことがあるでしょうか
プランによっては、APIの制限やAPIキー認証の実装が必要ですが、これらをゼロから作成するのは複雑で工数がかかります。
本記事では、AWS APIgatewayを利用してAPIaaSを作成する方法を共有しております。
API Gateway 可能
-
Request制限
- 速度(例1秒間で1000件叩ける)
- クォータ(1月で総合何件)
-
SwaggerAPI
- 仕様書が輸出
- 模擬データ用意(BEに叩かない)
-
データキャシュー
-
認証・認可
構成
AWS上で簡単にAPIaaS作成可能です。下記の構築を作成いたします。
- APIGatewayは本記事の紹介対象です
- BEはロジック処理のところです。簡単にするため、Lambdaを使います
設定流れ
- Lambda 用意
- API Gateway 設定
- API Plans作成
- API Key作成
Lambda用意
AWS Consoleで Lambdaに入ってNodejsのLambdaファンクションを作成します。
ファンクション仕様をデフォルトに設定してください
コード
以下のコードを貼り付けて、テストして問題なければデブロイします。
export const handler = async (event, context) => {
const version = 1;
const response = {
statusCode: 200,
body: JSON.stringify('API service version'+ version),
};
return response;
};
留意: 変更を反映するために、「デプロイ」ボタンを押下して下さい
API Gateway 設定
GET /hello
を作成しましょう
DEV Stage 環境を作成
Stages とはAPIGateway環境です。これによって設定が違います。
一旦上記のinvokeURL/hello
テストします
API Plans 作成
Guest Planを作成しましょう
No | Name | 説明 |
---|---|---|
1 | Name | プラン名 (自由) |
2 | Description | プラン内容(任意) |
3 | Rate | 1秒あたりのリクエスト数。 |
4 | Brust | 同時リクエスト数 |
5 | Request (左入力) | ユーザーが期間内に行えるリクエストの総数 |
6 | Request(右ドロップダウン) | 期間(1日・1月・1年) |
「Guest」プランを作成してから、一覧画面に遷移される。「Guest」詳細画面に入りましょう。
API Keyを作成
API keyバディデーション設定
改めてデプロイを忘れないようにしてください
結果
APIを確認しましょう
API urlはどこか
URL:<invoke URL>/hello
PostManでチェックしましょう
APIキーをヘッダーにつけない
APIキーをヘッダーにつける
制限チェック
429 Too Many Requests
{
"message": "Limit Exceeded"
}
その他
- 他サイトでAPI叩いたらCORSが必要です
- AWS プランとAPIキーについて管理用のAPIがあり、AWS Consoleだけではなく個人サイトでも管理可能
最後まで読んで頂いて有り難うございます
役に立つを感じしたらハートやコメントやを残ってください
参考
https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html
https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-setup-api-key-with-console.html
https://aws.amazon.com/jp/api-gateway/
https://docs.aws.amazon.com/apigateway/latest/api/API_CreateApiKey.html