KIOICHO Eng.

株式会社イーウェルのエンジニアが社内エンジニア系イベント等の情報を発信するブログです。

AWSを使用したWebAPIの構築

こんにちは!
システムソリューション本部 開発第2部 開発グループです。

参画しているプロジェクトがひと段落したため、休日に自宅でWebAPIを触ってみました。丸一日はかかりませんでしたが、AWSを一からスタートしたため、設定や調べ事で半日は使いました。
始めに、AWSとは...?WebAPIとは...?

AWS(アマゾンウェブサービス):
Amazon.comにより提供されているクラウドコンピューティングサービス(ウェブサービス)である。(Wikipedia参照)

WebAPI(ウェブエーピーアイ):
Web APIとは、コンピュータプログラムの提供する機能を外部の別のプログラムから呼び出して利用するための手順・規約(APIApplication Programming Interface)の類型の一つで、HTTPなどWebの技術を用いて構築されたもののこと。(IT用語辞典参照)

ざっくり説明するとURL + データを送るとなんか処理した結果が返ってくる。
これで何ができるの?ってことですが、例えば...健康管理の為、毎日体重計に乗ってグラフで見える化したいとなった場合、実行する為には以下になります。

1.体重計に乗る
2.数値をPCに打ち込む
3.グラフ化で見る

体重計が量った数値を登録してくれたらPCに打ち込まなくて楽ですね。
その時に体重計とデータ登録で橋渡しになるのがこの「WebAPI」です! 
これらを達成する為に、AWSの「Lambda」と「API Gateway」を使用します。
※今回は構築部分のみの開発になります

イメージとしては、こんな感じです。
※ここイーウェルでは、C#での開発が中心となる為、開発言語をC#で統一したいと思います。

f:id:KIOICHOEng:20170919173148p:plain

では、早速構築していきたいと思います。構築の流れは以下になります。
1.IAMの設定→Lambdaを展開するためのAWSアカウント設定
2.Lambdaの作成→APIGatewayで受け取ったデータを処理
3.APIGatewayの作成→webAPIを受け取る窓口
4.webAPIの作成→postでデータを投げて、結果を表示


1.IAMの設定

AWSにアクセスする際に、IAMという別のユーザーを作成します。そのユーザーに必要な権限のみを付与することでセキュリティ対策になります。
1.「サービス」を押下
2.セキュリティ、アイデンティティコンプライアンスから「IAM」を押下
f:id:KIOICHOEng:20170919132811p:plain

1.「ユーザー」を押下し、新規ユーザーの作成
ユーザー作成自体は、手順に沿って行けば簡単に作れます。
※黒塗りのところはのちに使用するアカウントナンバーになります
f:id:KIOICHOEng:20170919132918p:plain

2.Lambdaの作成
Lambdaの作成は「Visual Studio」で完結出来る為「Visual Studio 2017」を使用します。
メニューバーの「ツール(T)」から「拡張機能と更新プログラム(T)...」を押下し、「AWS Toolkitfor visual Studio 2017」をダウンロード。
1.「オンライン」を押下
2.検索枠で「aws toolkit」と入力
3.「AWS Toolkit for Visual Studio 2017」の「ダウンロード(D)」を押下
※ダウンロード後はVisual Studio2017を落とすことでインストールが走ります

f:id:KIOICHOEng:20170919133111p:plain

早速作ってみたいと思います。 Visual Studioの「ファイル(F)」から「新しいプロジェクト」を押下。
1.「AWS Lambda」を押下
2.「AWS Lambda Project(.NET Core)」を選択
3.「名前(N)」と「場所(L)」、「ソリューション名(M)」を設定後、「OK」を押下
f:id:KIOICHOEng:20170919133209p:plain

これがLambdaで動かすためのソースになります。 今回はwebAPIのリクエスト、レスポンスのテストの為、処理としてはAPIで「身長」「体重」を送ることで 「BMI」と「適正体重」が返ってくる処理になります。

入力が終われば早速デプロイしたいと思います。
1.「Publish to AWS Lambda...」を押下
f:id:KIOICHOEng:20170919133346p:plain

1.アイコンを押下
「Profile Name」は自由に入力
Access Key ID」「Secret Access Key」を入力
IAMアカウント作成時に取得したのを使用します。
「Account Number」はAWSで各自に割り振られている番号を入力
※最初の方に一部黒塗した部分になります

2.Regionを設定
設定が完了したら「Next」を押下
f:id:KIOICHOEng:20170919133504p:plain

「Role Name」は事前に作成されていれば、それを入力
※ロールがなければ「AWSLambdaRole (Default policy for AWS Lambda service role.)」を設定。必要な権限を自動で設定してくれます。
選択後「Upload」を押下。
これでデプロイが完了し、AWS内でLambdaが追加されております。

f:id:KIOICHOEng:20170919133656p:plain

では次は動作確認です。
パラメータを入力後、「Invoke」を押下。結果がResponseに表示されます。
正常に数値が返ってこればLambdaの設定が完了になります。テストソースは以下になります。

{

 "body": "{\"height\": 168.0, \"weight\": 50.0}"

}

f:id:KIOICHOEng:20170919133848p:plain

3.APIGatewayの作成
ここからはAWSで設定していきます。
サービスから「コンピューティング」にある「Lambda」を押下

f:id:KIOICHOEng:20170919134004p:plain


先ほど作成したLambda関数から「トリガーを追加」を押下。

f:id:KIOICHOEng:20170919134022p:plain

Lambdaを起動させる為に、API Gatewayを選択 セキュリティを「オープン」に設定。
※オープンにするとアクセスするURLがわかると誰でもアクセスできてしまう為、 実際の業務ではオープン以外を使用になります。
これでAPI Gatewayも設定が完了になります。

f:id:KIOICHOEng:20170919134131p:plain

4.webAPIの作成
後は作ったwebAPIにデータをリクエストします。 次は「Visual Studio2015 (.NetFramework 4.5.2)」でwebAPIを作ります。ここで「result」に返ってくるのがレスポンスになります。

これでAWSのLambdaとAPI Gateway、WebAPIの構築が完了しました。後は、リクエストデータをデータベースに登録したり、 サイトを構築してデータベースに貯まったデータをグラフで出したりすれば一連の流れが出来上がると思います。

ご覧頂きありがとうございました!