Traffine I/O

日本語

2022-03-09

Amazon API Gateway概要

Amazon API Gatewayとは

Amazon API Gatewayは、開発者がアプリケーションのためのAPIを定義、展開、管理することができる柔軟なサービスです。バックエンドサービスへのリクエストの処理方法やルーティングを制御し、バックエンドサービスに対する単一の入り口として機能します。複数のバックエンドサービスを管理するための単一のエントリーポイントを提供することで、API GatewayはAPIの作成、セキュリティ、メンテナンスのプロセスを簡素化し、サービスの信頼性とパフォーマンスを確保します。

Amazon API Gateway の主要なコンポーネント

Amazon API Gatewayには、以下のコンポーネントが含まれています。

  • API
    API Gatewayの主要なリソースであり、HTTPやWebSocketプロトコルを介してアクセスできるメソッドとリソースのコレクションを表します。

  • リソース
    バックエンドサービスの特定の機能または機能を表すAPI内の論理的なエンティティです。リソースは階層的に組織され、関連するメソッドを持つことができます。

  • メソッド
    リソース上で実行されるアクションを定義するHTTPベルブ(GET、POST、DELETEなど)です。メソッドはリソースに関連付けられ、リクエストおよびレスポンスモデル、認証、および統合などのさまざまな設定を持つことができます。

  • 統合
    API GatewayのメソッドとAWS Lambda関数やHTTP/HTTPSエンドポイントなどのバックエンドサービスとの接続です。統合は、APIリクエストの処理方法とレスポンスの生成方法を定義します。

  • ステージ
    APIの特定のバージョンまたは環境(開発、テスト、本番など)を表す名前付きのデプロイメントです。ステージには、ログ記録、キャッシュ、およびスロットリングなどの設定があります。

Amazon API Gateway の API タイプ

Amazon API Gatewayは、3つの主要なAPIタイプをサポートしています。それぞれのタイプは異なるユースケースと要件に対応しています。

  • RESTful API
    RESTの原則に従い、標準的なHTTPメソッド(GET、POST、PUT、DELETEなど)をサポートする設計です。API Gateway内のRESTful APIは、リクエストとレスポンスのデフォルトデータ形式としてJSONを使用しますが、他の形式をサポートするように構成することもできます。

  • WebSocket API
    WebSocket APIは、クライアントとバックエンドサービスの間のリアルタイムかつ双方向の通信を可能にし、よりインタラクティブでレスポンシブなユーザーエクスペリエンスを提供します。API Gateway内のWebSocket APIはWebSocketプロトコルをサポートしており、接続を繰り返し開閉する必要がないため、連続的なデータ交換が可能です。

  • HTTP API
    低レイテンシでコスト効果の高いAPI開発を目的として設計されたHTTP APIは、RESTful APIに比べて簡素な構成と管理体験を提供します。HTTP APIは主にJSONペイロードをサポートし、LambdaのようなAWSサービスとシームレスに統合されるため、サーバーレスアプリケーションに最適です。

Amazon API Gateway の機能

カスタムドメイン名

カスタムドメイン名を使用すると、自分自身のドメインをAPIにマップして、ユーザーにとってプロフェッショナルで一貫したインタフェースを作成できます。カスタムドメインを設定するには、まずSSL/TLS証明書を取得し、Amazon API Gatewayで構成する必要があります。次に、カスタムドメイン名リソースを作成し、APIにマップして、ベースパスのマッピングを指定します。最後に、カスタムドメインのDNSレコードを構成して、API Gatewayにポイントする必要があります。

API キャッシュ

APIキャッシュはオプションの機能であり、リクエストのレイテンシを減らすことで、APIのパフォーマンスを大幅に向上させることができます。APIキャッシュを有効にすると、Amazon API Gatewayは指定された期間のAPIメソッドのレスポンスをキャッシュし、バックエンドサービスを繰り返し呼び出す必要がなくなります。これにより、バックエンド処理時間の短縮とサービスへの負荷低減につながります。APIキャッシュはAPIの各ステージに対して有効にすることができ、キャッシュの容量やキャッシュの有効期間など、キャッシュの設定をカスタマイズできます。

ロギングとモニタリング

Amazon API GatewayはAmazon CloudWatchと統合して、APIのロギングとモニタリング機能を提供します。ロギングを有効にすることで、APIの使用状況、パフォーマンスメトリック、エラー率をトラックできます。また、特定のイベントが発生した場合や、特定のしきい値が超えた場合に通知するアラームを設定することもできます。API Gatewayはアクセスログもサポートしており、呼び出し元のID、リクエストパラメータ、レスポンス要素など、各API呼び出しの詳細情報を提供します。

セキュリティ機能

セキュリティはどのAPIにおいても重要な要素であり、Amazon API GatewayはAPIを保護するためのいくつかの組み込み機能を提供しています。主なセキュリティ機能には以下があります:

  • AWS Identity and Access Management (IAM)
    特定のユーザーやグループに対して許可されるアクションを定義するIAMポリシーを作成して、APIへのアクセスを制御します。

  • Amazon Cognito
    Amazon Cognitoユーザープールを使用して、ユーザーの認証と承認を行い、APIを保護します。

  • カスタム認証
    カスタムLambda認証プログラムを作成して、独自の認証と承認ロジックを実装します。

  • リソースポリシー
    リソースレベルでAPIへのアクセスポリシーを定義し、IPアドレス、VPCなどの基準に基づいてアクセスを制限します。

  • API キー
    サードパーティの開発者やアプリケーションのためにAPIキーを生成して管理し、アクセスと使用を制限します。

統合

Amazon API Gatewayは、さまざまなAWSサービスと統合することができ、強力でスケーラブルなアプリケーションを作成できます。一般的な統合には、以下があります。

  • AWS Lambda
    API GatewayをLambda関数にリンクして、カスタムコードを実行することで、サーバーレスアプリケーションを構築します。

  • Amazon S3
    API経由でAmazon S3バケットから静的コンテンツ(画像やHTMLファイルなど)を直接提供します。

  • Amazon DynamoDB
    API GatewayとAWS Lambdaを使用して、DynamoDBテーブルのデータにアクセスして操作します。

  • AWS Step Functions
    API GatewayとStep Functionsを併用して、複雑なワークフローやマイクロサービスを管理します。

Amazon API Gateway と AWS Lambda のタイムアウト

Amazon API GatewayをAWS Lambdaと統合する場合、両サービスのタイムアウトを理解することは重要です。タイムアウトは、リクエストが失敗したと見なされる前にサービスがレスポンスを待機する時間を制限するために使用されます。API GatewayとLambda統合の文脈では、次の2つの主要なタイムアウト設定を考慮する必要があります。

  • Amazon API Gateway のタイムアウト
    API Gatewayは、着信リクエストのデフォルトタイムアウトが29秒に設定されています。これは、Lambda関数が29秒以上かかって実行して応答を返す場合、API Gatewayがクライアントにエラーを返すことを意味します。API Gatewayの最大設定可能なタイムアウトは30秒です。

  • AWS Lambda 関数のタイムアウト
    Lambda関数には、3秒のデフォルトタイムアウトが設定されており、最大900秒(15分)まで設定可能です。Lambda関数が指定されたタイムアウト内に実行を完了しない場合、関数は中止され、API Gatewayにエラーが返されます。

Amazon API Gateway の価格

Amazon API Gatewayは、APIタイプごとに異なる料金モデルを採用しており、さまざまな追加機能に関連するコストがあります。

主要なAPIタイプ(RESTful、WebSocket、HTTP)は、以下のように異なる料金構造を採用しています。

  • RESTful APIs
    API呼び出しの総数、送信されたデータ量、およびAPIで有効になっているキャッシュの期間に基づいて料金が発生します。月間100万回までは無料で、それ以降はAWSリージョンに応じて1,000万回あたりのコストが発生します。

  • WebSocket APIs
    WebSocket APIの価格は、送受信されるメッセージ数と接続時間の総数に基づいています。メッセージは送受信される個別のデータ単位であり、最大サイズは128 KBです。接続時間は、クライアントがWebSocket APIに接続している合計時間に基づいて計算されます。

  • HTTP APIs
    RESTful APIsに比べて1,000万回のAPI呼び出しあたりのコストが低く、多くのユースケースにおいてよりコスト効率が高い選択肢となっています。RESTful APIsと同様に、API呼び出しの総数とデータ送信量に応じて料金が発生します。

APIタイプに関連するコストに加えて、カスタムドメイン名、APIキャッシュ、データ転送などのオプション機能に対するコストがあります。

  • カスタムドメイン名
    Amazon API Gatewayでカスタムドメイン名を使用する場合、カスタムドメインに対するリクエストの総数に基づいて料金が発生します。月間100万件のリクエストまでは無料で、それ以降は1,000万件あたりのコストが発生します。

  • API キャッシュ
    APIキャッシュを有効にする場合、キャッシュ容量とキャッシュが有効な期間に基づいて料金が発生します。キャッシュ容量はギガバイト(GB)で計測され、ニーズに合わせて複数のキャッシュサイズから選択できます。

  • データ転送
    Amazon API Gatewayは、APIからインターネット上のクライアントに送信されるデータに対する料金が発生します。API Gatewayと同じリージョン内の他のAWSサービス間でのデータ転送には料金はかかりません。

https://aws.amazon.com/api-gateway/pricing/

参考

https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html
https://aws.amazon.com/api-gateway/pricing/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!