6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSでAPI as a service (APIaaS)が作成・運用できる!

Posted at

みなさんは開発時に外部ITサービスのAPIを利用したことがあると思います。その際、「使用プラン」や「APIキー」などの用語を目にしたことがあるでしょうか

プランによっては、APIの制限やAPIキー認証の実装が必要ですが、これらをゼロから作成するのは複雑で工数がかかります。

本記事では、AWS APIgatewayを利用してAPIaaSを作成する方法を共有しております。

API Gateway 可能

  • Request制限

    • 速度(例1秒間で1000件叩ける)
    • クォータ(1月で総合何件)
  • SwaggerAPI

    • 仕様書が輸出
    • 模擬データ用意(BEに叩かない)
  • データキャシュー

  • 認証・認可

構成

AWS上で簡単にAPIaaS作成可能です。下記の構築を作成いたします。

  • APIGatewayは本記事の紹介対象です
  • BEはロジック処理のところです。簡単にするため、Lambdaを使います

Screenshot 2025-02-15 at 16.19.17.png

設定流れ

  1. Lambda 用意
  2. API Gateway 設定
  3. API Plans作成
  4. 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;
};

image.png

留意: 変更を反映するために、「デプロイ」ボタンを押下して下さい

API Gateway 設定

API gateway に入って作成しましょう
image.png

本記事でBEがLambdaですから種類はREST API
image.png
image.png

GET /helloを作成しましょう

Resoure 作成
image.png
image.png
メソッド作成
image.png

該当するファンクションを選ぶ
image.png

忘れないように「DEPLOY API」押下してください。
image.png
image.png

DEV Stage 環境を作成

Stages とはAPIGateway環境です。これによって設定が違います。

image.png

一旦上記のinvokeURL/helloテストします

image.png

API Plans 作成

Guest Planを作成しましょう

image.png

image.png

No Name 説明
1 Name プラン名 (自由)
2 Description  プラン内容(任意)
3 Rate 1秒あたりのリクエスト数。
4 Brust 同時リクエスト数
5 Request (左入力) ユーザーが期間内に行えるリクエストの総数
6 Request(右ドロップダウン) 期間(1日・1月・1年)

「Guest」プランを作成してから、一覧画面に遷移される。「Guest」詳細画面に入りましょう。

次はStageに紐つく
image.png

  • API Gatewayを選ぶ
  • Stage を選ぶ
  • Method-level Throttlingにては、全てAPIに適用したら、「*」使います。個別APIまでも設定できる
    image.png

API Keyを作成

image.png

  • NAME: クライアント名を設定したら管理しやすいです
  • API KEY: 自分で決めてもいいですが、一番おすすめは自動的にキーを生成することです
    image.png

一覧で全てキーが管理できます。
Screenshot 2025-02-15 at 21.33.49.png

API keyバディデーション設定

image.png
image.png

改めてデプロイを忘れないようにしてください

結果

APIを確認しましょう

API urlはどこか 

image.png

URL:<invoke URL>/hello

PostManでチェックしましょう

APIキーをヘッダーにつけない

Screenshot 2025-02-15 at 21.45.35.png

APIキーをヘッダーにつける

x-api-key: 上に作成したキー
Screenshot 2025-02-15 at 21.48.37.png

制限チェック

ScreenRecording2025-02-15at21.50.08-ezgif.com-video-to-gif-converter.gif
制限に超える場合は

429 Too Many Requests
{
    "message": "Limit Exceeded"
}

その他

  • 他サイトでAPI叩いたらCORSが必要です
  • AWS プランとAPIキーについて管理用のAPIがあり、AWS Consoleだけではなく個人サイトでも管理可能

最後まで読んで頂いて有り難うございます:bow:
役に立つを感じしたらハートやコメントやを残ってください:bow:

参考

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

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?