「世の中には難しいことが多い!」と感じることが多い私が、様々な用語を、初学者向けにわかりやすく全力で解説します。
今回解説する用語
Google CloudのAPI Gateway(APIゲートウェイ)とAPI Key(APIキー)について説明をします。APIGatewayとAPIKeyは一般的なIT用語ですが、こちらの記事では、Google Cloudをもとに、APIGatewayとAPIKeyについて図を用いて分かりやすく解説をしていきます。
APIGatewayとは?APIKeyとは?
APIGatewayとは、APIをセキュアに管理することが出来る仕組みのことです。Google Cloudでは、APIGatewayをマネージドサービスとして提供しております。
APIKeyとは、認証情報のことです。APIKeyを使用することによってより安全にAPIにアクセスをすることが出来ます。APIKeyもGoogle Cloudがマネージドサービスとして提供しています。
もっと具体的に説明するよ
APIとは?
まずはAPIについて解説をします。こちらではWEB APIをもとに解説をします。すでにご存じの方は読み飛ばしてください。
API とは、あるアプリケーションが別のアプリケーションの機能を簡単に利用できるようなインターフェースのことです。
例えば、誰かが作成した、今週のサザエさんがじゃんけんで何を出すか予測するAPIがあるとします。
このAPIを呼び出すためには、以下のURLにアクセスする必要があります。
https://www.sazaesann.com/jankenyosou
このURLにアクセスすることによって、以下のように今週のサザエさんがじゃんけんで出す値を返してくれます。
{
"janken" : "rock"
}
このように、呼び出すだけで意図したものを返してくれる仕組みのことをAPIといいます。
このAPIを使用すれば、サザエさんがじゃんけんで何を出すか予測することが出来ますね。
APIを自分が作成したシステムに組み込むことも出来ます。APIを使用することで、自分がプログラムを組まなくても、やりたいことが実現できてしまうのでとっても楽ちんです。既に公開されているAPIがあればの話ですが。。
もし公開されているAPIがない場合は、自分でAPIを作成することも出来ます。API単位でシステムを作成することで、再利用可能で分かりやすいプログラムを組むことが出来ます。
APIGatewayとは?
APIを作成したは良いけど、そのまま使用していると以下のように困ることも出てきます。
- 世の中の人が全員使えてしまうと、何かしらの攻撃の対象になってしまう
- 開発者がばらばらにAPIを作成することで、一貫性のないシステムが出来上がる
- どのくらいAPIが使用されているかが分からない
APIGatewayとAPIKeyを使用することで、このようなお悩みを解決することが出来るのです。一つずつ見ていきましょう。
APIの管理を行うことが出来る
APIGatewayを使用すると、以下図のようにAPIGatewayを介して、APIが呼び出されます。これにより、「APIにどのようなアクセスがあったのか」などがログとして出力されます。
統一した方法で書かれるため管理がしやすくなる
APIGatewayには統一した記載方法でAPIを書く必要があるため、一貫性のある書き方に統一され、どのようなAPIがあるかが分かりやすくなります。
以下の図のような、OpenAPI仕様という統一した記載方法で書かれます。現時点では、「ふーん」程度でよいかと思います。
# openapi2-functions.yaml
swagger: '2.0'
info:
title: API_ID optional-string
description: Sample API on API Gateway with a Google Cloud Functions backend
version: 1.0.0
schemes:
- https
produces:
- application/json
paths:
/hello:
get:
summary: Greet a user
operationId: hello
x-google-backend:
address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/helloGET
responses:
'200':
description: A successful response
schema:
type: string
Google Cloudのサービスと連携がしやすい
Google CloudのAPIGatewayを使用すると、かんたんにAppEngineやCloud Run、CloudFunctionなどのGoogle Cloudのサービスに接続することが出来ます。
AppEngineやCloud Run、CloudFunctionsとは、Google Cloudが提供しているAPIを動かす環境のことです。
APIKeyとは?
APIKeyとは認証情報です。APIKeyを使用することで、APIを保護することが出来ます。
APIKeyには以下のような認証情報が書かれています。
以下の図のように、この認証情報を知らないユーザーはAPIにアクセスすることが出来なくなるのです。
このようにAPIGatewayとAPIKeyを使用することで、安全にAPIを公開することが出来ます。Google Cloudを使用するとAPIKeyの認証情報をCloud上で管理してくれるので安心ですね。
また、よりセキュリティを向上させたい場合は、APIKeyで接続元のIPアドレスなどを制限することも可能です。登録しているIPアドレス以外はAPIにアクセスすることが出来なくなります。
まとめ
APIGatewayとは、APIを管理するための仕組みのことです。APIKeyという認証情報を使用することによって、より安全にAPIにアクセスできるようになります。