Table of Contents
API Gatewayとは?概要やメリットを紹介!
APIの管理や実行を容易にすることができる仕組みである「API Gateway」。API Gatewayは、Amazon Web Servicesから利用できるAmazon Lambdaと連携することで、より便利に活用することが可能となります。ここでは、API GatewayおよびAmazon Lambdaとは何か、それらを連携する方法、Rakuten RapidAPIの「Amazon Lambda」APIを使う手順などについて紹介します。
API Gatewayとは?
API Gatewayとは、クライアントから受け取ったリクエストを、それぞれのマイクロサービスにルーティングする仕組みのことです。通常のマイクロサービス・アーキテクチャの場合、クライアントとそれぞれのAPIは、個別に通信を行うことになります。例えば、1つのWebサービスに「決済サービス」や「ショッピングカート」、「メール機能」、「レコメンド機能」といった複数のAPIが使われていた場合、それぞれのAPIと個別に通信が発生することになります。
一方、API Gatewayを使用した場合は、クライアントはすべてのAPIへのリクエストをAPI Gatewayへの通信として行い、そこからAPI Gatewayを経由して、「決済サービス」や「ショッピングカート」といった個々のAPIと通信が行われる流れになります。このため、クライアントが通信を行うのはAPI GatewayのAPIのみとなります。
API Gatewayの代表的なサービスとしては、AmazonによるAPIの作成・配布のプラットフォームである「Amazon API Gateway」があります。「Amazon API Gateway」は、Webサービスの開発者がAPIを公開したり、公開済みAPIの保守やモニタリング、セキュリティの設定を行ったりするためのサービスです。Amazon API Gatewayを利用することで、時間をかけることなく、効率的にAPIを管理でき、新たなサービスの開発を進めやすくすることが可能となります。
API Gatewayのメリット
API Gatewayを利用するメリットとしては、
- 複雑なAPI処理をまとめることができる
- 複数のAPIを扱っている場合に、それらをまとめてサーバーサイドでモニタリングし、認証や管理を行える
などが挙げられます。さらに、
- 複数バージョンのAPIを簡単に管理できる
- 低料金で利用できる、柔軟なセキュリティ管理ができる
といった点もAPI Gatewayを利用するメリットとなります。
Amazon API Gatewayを経由してAmazon Lambdaを実行するには?
API Gatewayは、Amazon Lambdaと合わせて利用することで、より便利に活用できます。Amazon Lambdaは、Amazonが提供するクラウドコンピューティングサービスAWS(Amazon Web Services)で利用することが可能です。
Lambdaの作成手順
Lambdaを作成するときは、以下の手順で操作を進めていきます。
- Amazon LambdaのマネジメントコンソールからLambdaのページへ移動します。
- 「関数の作成」ボタンをクリックし、関数の作成を開始します。
- あらかじめ用意されたテンプレートを使う場合は、テンプレート名に「hello-world-python3」を選択します。
- 「基本的な情報」に任意の名前を入力したあと、「テンプレートから新しいロールを選択」をクリックします。
- 任意のロール名を選択します。
- ページ最下部にある「関数の作成」をクリックすると、Lambdaが作成されます。
API Gatewayの作成手順
さらに、以下に示した手順でAPI Gatewayの作成も行う必要があります
- API Gatewayのページから「今すぐ始める」をクリックします。
- 「新しいAPI」に任意の名前を入力し、「APIを作成」をクリックします。
- 作成された新しいAPIの「リソースを作成」に任意の名前を入力し、新しいリソースを作成します。
- 「メソッドの作成」でメソッドを新規に作成します。
- ドロップダウンリストから「post」を選択してチェックボタンをクリックし、その後に表示される「セットアップ」で総合タイプに「Lambda関数」を選択します。
- LambdaリージョンとLambda関数を設定し、「保存」をクリックします。
- 「API GatewayにLambdaを呼び出す権限を与えようとしています」というメッセージが表示されるので、「OK」をクリックします。
これでリソースとメソッドの作成が完了します。
以上のようにAPI GatewayとLambdaを連携することで、インフラを気にすることなくコードを実行できるようになります。
Rakuten Rapid APIの「Amazon Lambda」APIを使う
Rakuten RapidAPIでも、Lambdaを利用するための「Amazon Lambda」APIが公開されています。「Amazon Lambda」APIを利用するには、まず、Amazonコンソールにログインし、新規ユーザーを作成します。次に、そのユーザーを既存のグループに割り当てると、そのユーザーについての資格情報が表示されます。
ここで指定できるカスタムデータ型には、日付や時刻を含む文字列「Datepicker」、経度と緯度をカンマ区切りで記した文字列「Map」、単純な数字や文字列の配列「List」、定義済の値を持つ文字列「Select」、オブジェクトの配列「Array」などがあります。
続いて、詳細な設定を行っていきます。例えば、「AmazonLambda.addPermission」では、指定したAmazon Lambda関数に関連付けられているリソースポリシーに権限を追加します。ここで指定するフィールドには、Amazon AWSのアクセスキーIDを示す「apiKey」、地域を示す「region」、Amazon Lambdaのバージョンを示す「version」、Lambda関数の名前を示す「functionName」、固有のステートメントIDを示す「statementId」、このステートメントで許可したいAmazon Lambdaアクションを示す「sourceArn」などが挙げられます。
そのほか、指定されたLambda関数バージョンのエイリアスを作成する「AmazonLambda.createAlias」、ストリームをLambda関数のイベントソースとして識別する「AmazonLambda.createEventSourceMapping」、直接リンクを使用して新しいLambda関数を作成する「AmazonLambda.createFunction」などについても設定が可能です。
外部サービスを活用すれば「できること」が広がる
Rakuten RapidAPIの「Amazon Lambda」APIを使うことで、外部サービスとの連携が容易になり、より柔軟なWebサービスの開発が可能になります。
このほかにも、Rakuten RapidAPIでは、さまざまなAPIが公開されています。以下に、その例をいくつか紹介しておくので参考にしてください。
Full-Text RSS
Webページから記事コンテンツを抽出して、部分的なウェブフィードをフルテキストフィードに変換し、その結果をRSSやJSONとして取得します。
Tweet Sentiment Analysis
TwitterやFacebookの投稿など、短いテキストに対して「その内容がポジティブなものか、それともネガティブなものか」、または「ニュートラルなものか」といった感情情報を返します。さらに、その確率がどれほど強いのかを示すスコアも返します。
Recipe – Food – Nutrition
365,000以上のレシピと86,000種類の食品に関する情報を検索できます。栄養や料理に関する自然言語での検索も可能です。
Spotify
Spotify音楽カタログからデータを取得し、ユーザーが作成・保存したプレイリストや、お気に入り登録した音楽などを管理できます。
Taggun
レシートの画像をOCRして、合計金額、税額、購入日、商人情報、明細金額などの情報を短時間で認識します。
このように、Rakuten RapidAPIで利用できるAPIは多岐にわたります。そのジャンルは、グルメ情報やレシピを提供するものから、フライト情報や天気に関するもの、画像認識やテキスト解析などの技術を使うもの、音楽サービスから情報を取得するもの、など非常に幅広く、開発したいサービスに最適なAPIを選ぶことができます。
Rakuten RapidAPIへの登録は無料で行うことができます。利用中のAPIは一括で管理・追跡することができ、それぞれのAPIの利用状況やリアルタイムなパフォーマンスをまとめて監視することが可能です。これらを活用することで、Webサービス開発の効率化につなげられるはずです。
参考:
- マイクロサービスの設計:API ゲートウェイ|Microsoft
- AWS初心者入門 第7回 「Lambda」ってなにがスゴイんですか?|マネージドクラウド with AWS
- Amazon API Gatewayのよくある質問|AWS
- ゼロから作りながら覚えるAPI Gateway環境構築|DevelopersIO
コメントを残す