BackEnd

Amazon API Gatewayざっくり概要

投稿日:

はじめに

サービスを開発していく上で、メインの処理とは分けたいけどそれ単体でサーバを建てるほどではないような機能が必要になる事があると思います。そういったケースでAmazon API Gatewayが使えないかと思い、どのようなサービスなのか調べてみました。

Amazon API Gatewayとは?

そもそもGatewayとはなにかというと、「玄関」や「入口」を表す英単語ですが、ITの分野においてはプロトコルの異なるネットワークを中継する機能や、そのような機能を持つ機器を指す言葉のようです。

Amazon API Gatewayは 「API Gateway」の名前の通り、ユーザからのHTTPリクエストを受けてそれをAWS Lambdaを始めとする様々なリソースに振り分けることができます。

なにができる?

Amazon API Gatewayの機能について詳しく見ていきます。

AWSのDeveloper Guideによると、

Amazon API Gateway is an AWS service for creating, publishing, maintaining, monitoring, and securing REST, HTTP, and WebSocket APIs at any scale. API developers can create APIs that access AWS or other web services, as well as data stored in the AWS Cloud. As an API Gateway API developer, you can create APIs for use in your own client applications. Or you can make your APIs available to third-party app developers. For more information, see Who uses API Gateway?.

とあるように、Amazon API GatewayはAPIの作成から公開、保守、監視までの一連の機能を提供します。

作成できるAPIの種類

Amazon API Gatewayで作成できるAPIの種類は大きく3つあります。

  • HTTP API
  • REST API
  • WebSocket API

そして、これらのAPIではAWSや他のWebサービス、AWSに保存されている(RDSやS3などの)データにアクセスすることができます。

Amazon API Gatewayでは以下のようなRESTful APIを作成することができます。

  • HTTPベースであること
  • ステートレスなクライアントサーバ通信であること
  • HTTPメソッドがGET、POST、PUT、PATCH、DELETEのいずれかであること

また、今回は詳しく紹介しませんが、WebSocket APIの方は以下のような感じです。

  • WebSocketプロトコルに準拠するクライアントとサーバ間のステートフルな全2重通信
  • メッセージの内容に基づいて、受信メッセージをルーティングする

REST APIとHTTP APIの違い

REST APIとHTTP APIはどちらもRESTfulなAPIを提供します。これらの違いとしては機能面と価格面です。

REST APIはHTTP APIよりも多くの機能をサポートしていますが、その分HTTP APIよりも料金が高くなっています。具体的にはHTTP APIは、APIキー、クライアント単位でのスロットリング、リクエスト検証、AWS WAFとの統合、プライベートAPIエンドポイントなどの機能がありません。これらの機能が必要な場合はREST APIを選択し、不要であればHTTP APIを選択すると良いようです。

機能面での差異を詳しく知りたい方はこちらをご覧ください。

Amazon API Gatewayのユースケース

REST API

API Gateway REST APIはリソースとメソッドで構成されています。ここでいうリソースはアプリがリソースパスを通じてアクセスすることができる論理的な実態で、メソッドはAPIの利用者が送信するREST APIリクエストとその結果返されるレスポンスに対応しています。

例えば、サービスを使用するユーザの収入を表す /incomes というリソースパスにGETでリクエストした場合はそのユーザの収入をレスポンスとして返却しますが、同じリソースにPOSTでアクセスした場合はそのユーザに対して新たに収入を追加することができます。

その際、データがどこに保存されているかは重要ではありません。データの保存元がRDSだろうがDynamoDBだろうがやることは変わりません。このAPIの開発者は受信したメソッドリクエストとデータの保存先とのマッピング、必要なIAMポリシーや入出力データの変換方法などを設定します。

HTTP API

HTTP APIはREST APIよりも低レイテンシーかつ低コストでRESTful APIを作成することができます。

例えば、Lambda関数と統合するHTTP APIを作成することができます。クライアントがAPIを呼び出すとAPI GatewayはLambda関数にリクエストを送信し、その関数のレスポンスをクライアントに返却します(Lambda関数との連携はREST APIでも可能です)。

また、HTTP APIはOpenID ConnectとOAuth 2.0の認証に対応しています。

さいごに

ざっくりですがAmazon API Gatewayについて調べてみました。API Gateway単体で使うというよりはAWS Lambdaと組み合わせて使われるケースが一般的だと思いますので、Lambdaについても調べてみたいと思います。

おすすめ書籍

AWS運用入門 押さえておきたいAWSの基本と運用ノウハウ AWSコスト最適化ガイドブック

blog-page_footer_336




blog-page_footer_336




-BackEnd
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

Go言語

Go言語、ゴルーチン(goroutine)で並列処理を

1 はじめに2 ゴルーチン2.1 go文2.2 ゴルーチンの終了条件2.3 WaitGroup3 チャネル3.1 チャネルの型3.2 チャネルの生成3.3 チャネルの送受信3.4 チャネルとゴルーチン ...

laravel logo

Laravelのブラウザテスト「Dusk」をシンプルなCRUDで始めてみよう

1 はじめに2 Laravel Duskのセットアップ3 新規登録のテスト3.1 テスト対象となるコード3.2 Duskのテストコード3.3 テストの実行4 更新のテスト4.1 テスト対象となるコード ...

laravel logo

[Laravel] middlewareでHTTPリクエストの前後に処理を入れる

1 はじめに2 middlewareとは3 実装3.1 middleware作成3.2 コード実装4 middleware定義4.1 常に呼び出す4.2 特定のURLにアクセスした時のみ呼び出す4.3 ...

rails

Railsで複合主キーのテーブルを扱う

1 はじめに1.1 前提条件2 実装例2.1 config2.2 マイグレーション2.3 モデル3 さいごに はじめに RailsでWebサービスを開発する際のDB設計では基本的にidが主キーになると ...

Stripe Connectを使って複合プランの継続課金を実装その2

1 はじめに2 追加プランの作成3 実装3.1 日割り金額の確認3.2 追加プランの契約4 さいごに5 おすすめ書籍 はじめに 前回の記事では、プラン(月額)とユーザ数分のID(従量課金)という2種類 ...

フォロー

blog-page_side_responsive

2023年4月
 1
2345678
9101112131415
16171819202122
23242526272829
30  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。