AWS Hands-on for Beginners Serverless #1: サーバーレスアーキテクチャで翻訳 Web API を構築する ~ Amazon API Gateway編1/2 ~

f:id:osushi_engineer:20200821142751p:plain

hisacomです。

今回は以下のAWSのハンズオン体験記事の続きで、Amazon API Gatewayの概要とMock API作成部分をまとめたものとなります。

osushi-engineer.hatenablog.com

ハンズオン内容

f:id:osushi_engineer:20200821173003p:plain

AWS Lambda、Amazon API GatewayAmazon DynamoDBのサービスを組み合わせ、HTTPリクエストで「こんにちは」と送信すると、翻訳された「Hello」というレスポンスが返ってくるようなサーバーレスなWeb APIを作成します。

用語の補足

APIApplication Program Interface
プログラム同士が互いにやり取りするのに使用する入出力の取り決め(仕様)のこと。APIというと幅広い範囲を指すがここではWeb APIを対象としている。
Amazon API Gateway
APIを作成、公開、管理、モニタリング、保護するためのAWSサービス。AWSまたは他のウェブサービスAWSクラウドに保存されているデータにアクセスするAPIを作成できる。
REST API(REpresentational State Transfer)
RESTと呼ばれる設計原則にしたがって策定されたAPI。原則として以下の4つが存在する。
- アドレス可能性
- ステートレス性
- 接続性
- 統一インタフェース

■プロビジョニング
必要に応じてネットワークやコンピューターの設備などのリソースを提供できるよう予測し準備しておくこと。

Amazon API Gateway の概要

Amazon API Gatewayがどういうものなのかについての説明があります。

Amazon API GatewayREST API(REpresentational State Transfer)、WebSocketに対応しており、今回のハンズオンではREST APIの開発を行うようです。

API Gatewayのメリット

普通にAPIを開発する場合、サーバープロビジョニングや管理、可用性の担保、スケーリング、APIのキー管理といった開発以外の事項についても注力する必要がありますが、API Gatewayにそれらを任せることにより、開発者はビジネスの差別化に繋がる作業にのみ集中することができます。つまりAPI作成の共通作業をAPI Gatewayが担ってくれるということですね

API Gatewayのフロー

下図はAPI Gatewayの表示ですが、クライアントのリクエストからバックエンドを通って、レスポンスがクライアントに戻ってくるフローを表しています。直感的でわかりやすいです。

f:id:osushi_engineer:20200821161453p:plain
フロー内の各ポイントで以下のように設定を行うことができます。

はじめにメソッドリクエスにおいて、リクエストを受けたときに何を行うかを定義します。(必須とするHTTPヘッダーを設定したりする)
統合リクエスにおいて、バックエンド処理を行う前どのような変換を行うのか定義します。(バックエンドの種類を選択する)
統合バックエンドにおいて、裏側で処理を行う。
統合リスエス統合レスポンスにおいて、バックエンドへのInput、Outputを変換することができる。(今回はプロキシ統合という変換をおこなわないという行動をとる)

Amazon API Gateway ハンズオン① - Amazon API Gateway を単体で利用する

まずはMockデータを返すAPIを作成しながら、API Gatewayの使い方を学びます。

APIの作成ボタンを押下して以下のように設定を行います。

f:id:osushi_engineer:20200821162541p:plain

リソースの作成→アクションから「メソッドの作成」→プルダウンからGETを選択し右側のチェックボタンを押下する。で、リソースとメソッドを作成します。

f:id:osushi_engineer:20200821162918p:plain

統合リクエスのタイプをMockに設定します。

f:id:osushi_engineer:20200821164239p:plain

固定のjsonをやり取りする場合は、統合レスポンス内のマッピングテンプレートから
application/json に返却したいデータを記述します。これでレスポンスを固定したAPIが作成できました。

f:id:osushi_engineer:20200821163321p:plain

テストボタンより、APIのテストを行うことができます。レスポンス本文に統合リクエスで記述したjsonが記載されていることを確認します。

f:id:osushi_engineer:20200821164927p:plain

この時点でMock APIを作成することができました。
フロントエンドのみ行ってきた自分には開発時にMock APIがあると楽なのになーと思う場面が多かったので、こんなに簡単に作れるっていうのが分かって嬉しいです。これは開発時に活用できそうです。

まとめ

次回は、現在Mock APIだった部分をLambda 関数に変更し翻訳APIを完成させます。長くなってしまったので、次回の内容は別記事にて。

参考

公式の動画で上記のハンズオンを無料で受けることができます。

aws.amazon.com