はじめに
こんにちは、技術1課の山中です。 今回は Amazon API Gateway に関するアップデートです!
API Gateway HTTP API が 5 つの AWS のサービスとの統合を追加
HTTP API とは
HTTP API は AWS re:Invent 2019 でベータ版が発表され、今年の 3 月に GA となった Amazon API Gateway (以下、 API Gateway) の新機能です。
もともと API Gateway は、 REST API と WebSocket API をサポートしていました。
HTTP API を使用すると、 REST API よりも低レイテンシーおよび低コストで、 RESTful API を作成することができます。
ただし、旧世代の REST API の方が多くの機能を有しているため、単純に HTTP API を選択すれば良い、ということではありません。
HTTP API と REST API の機能の違いは、以下公式ドキュメントをご覧ください。
HTTP API と REST API 間で選択する - Amazon API Gateway
今回のアップデート
これまでは、 HTTP API では AWS Lambda 関数と任意の HTTP バックエンドにリクエストをルーティングすることができましたが、 AWS サービス統合はサポートされていませんでした。
よって、バックエンドとして他の AWS サービスを利用したい場合は、 AWS Lambda 関数もしくは HTTP バックエンド経由でアクセスすることが必要でした。
今回新たに以下 5 つの AWS サービスとの統合が追加されました。
- AWS AppConfig
- Amazon EventBridge
- Amazon Kinesis Data Streams
- Amazon SQS
- AWS Step Functions
サポートするアクションについては、 公式ドキュメント を参照ください。
今回のアップデートで、 API 経由で直接 AppConfig から設定情報を取得したり、 EventBridge にイベントを発行したり、 Kinesis Data Streams を介してデータを取り込んだり、 SQS にメッセージを送信したり、 Step Functions でワークフローを開始したりすることができるようになりました。
試してみる
では実際に試してみましょう。
今回は AWS AppConfig との統合を確認してみます。
AppConfig と統合することで、設定情報を HTTP API から取得することが可能です。
事前準備
今回のアップデート内容を試すために、以下を事前に作成しておきます。
- AppConfig
- IAM ロール
AppConfig には YouTube API を利用する際の設定情報 (対象プレイリストの ID) を格納しています。
IAM ロールは HTTP API を作成する際に、 Invocation role で指定します。
今回は、 AppConfig の GetConfiguration を許可するように以下ポリシーにて事前に作成しています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "appconfig:GetConfiguration", "Resource": "*" } ] }
HTTP API の作成
AWS マネジメントコンソールから API Gateway を開き、 API を作成 ボタンをクリックします。
API タイプは HTTP API を選択しましょう。
API 名に任意の名前を入力。
そのまま進めていきます。
ステージもデフォルト、自動デプロイも有効のまま進めていきます。
作成ボタンをクリックして作成しましょう。
HTTP API ができたので、左ペインから ルート を選びます。
ルートの作成画面で、 Create ボタンをクリック。
今回は GET
メソッドを選択し /appconfig
パスを入力しました。
ルートが作成されたので、 統合をアタッチする ボタンをクリックしてバックエンドリソースを定義していきましょう。
統合を作成してアタッチ ボタンをクリック。
統合ターゲットに今回追加された各 AWS サービスが存在することがわかります。 今回は AWS AppConfig を選択します。
AWS AppConfig との統合では現在 1 つのアクションのみをサポートしているので、 GetConfiguration を選択しましょう。
GetConfiguration
を指定したので、 設定情報の取得に必要なパラメータ をリクエストからマッピングする設定を行います。
今回はデモなので設定や Client ID を直接指定していますが、 $request.body.Configuration
や $request.body.ClientId
と定義することでリクエスト時に柔軟にパラメータを指定することも可能です。
これで HTTP API の作成は完了です。
API を叩いてみる
実際に作成した HTTP API を実行してみましょう。 指定したパスに対して GET リクエストを送信してみます。
$ curl -X GET https://9f2rhk00cd.execute-api.ap-northeast-1.amazonaws.com/appconfig - PLCRz5JqTKzfn5rWKSfEAceiJWeHAxHThd #30分でわかる AWS UPDATE! - サービスカット版 - - PLCRz5JqTKzfkU-mN5u13OC6OzuXrhhqc2 #30分でわかる AWS UPDATE! - PLCRz5JqTKzfkEmHYlklTY7vHY0vbXMQSE #はじめてのAWS - PLCRz5JqTKzfkAOEjtq2eniDfTCpl4-go3 #初級ハンズオン - PLCRz5JqTKzfmHYSSSQhs2Y-qPFU201s3p #毎日AWS
きちんと AppConfig に定義してある設定情報を取得することができました!!
おわりに
API Gateway から他の AWS サービスを利用する際、これまでは AWS Lambda を経由したアクセスが主流でしたが、このように直接他のサービスとの統合が簡単に低コストでできてしまうならこちらを使ったほうがよさそうですね。
ただしまだまだサポートしているサービスおよびアクションも限られているので、今後のアップデートに期待しましょう!
この内容は 2020/9/2(水) 18:00 よりYouTube にて配信する「30分でわかる AWS UPDATE!」で取り上げますので、是非ご覧ください!
チャンネル登録よろしくおねがいします!!
また、以下でも今回のアップデートに触れておりますので、あわせてご覧ください。
【毎日AWS #045】AWSのREST APIサービス次の標準へ... API Gateway HTTP API が 5つのAWSサービスとの統合を追加 他10件
参考
- 高速、低コストで、より良いAPIの構築 – HTTP APIが利用可能(GA)になりました
- Working with AWS service integrations for HTTP APIs
- Integration subtype reference