LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

ラックピープル | 

Hello from Lambda in API Gateway!AWSでサーバーレスに触ってみた #4

こんにちは。クラウドサービス部の小池です。

サーバーがない状態でどうやってシステムを構築するのか想像できない、実際に手を動かしてみないとピンと来ないという、スキルシフト仲間の声にお答えしたサーバーレス初心者向けの連載第4回です。今回は、API GatewayとLambdaを組み合わせて、APIを作成する方法を体験します。

API GatewayとLambdaを組み合わせて、APIを作成する

インフラエンジニア歴20年目にして、APIというものを初めて作ってみます。果たしてまともに動くものが作れるのでしょうか......。(AWSのハンズオン手順は疑っていませんが、自分のアプリ開発力は疑っている私です)

ここからは、AWSが公開しているハンズオンのセクション4をもとに実際に手を動かした結果や、前提知識が足りなくて迷ったところ、理解を深めるポイントを詳しく解説します。画面遷移は多少変わっていますが、ハンズオン手順の通りに構築は問題なくできます。「サーバーレス構築とは何なのか」について理解し、公式ハンズオンの隙間を埋める手がかりとして、この記事をご覧ください。

サービス連携の体験ハンズオン

Hello from Lambda in API Gateway!

API GatewayでREST APIを新たに作成し、連載第1回で作成したLambda関数とWebブラウザに連携してみます。

作業環境

Webブラウザ Firefox
作業するリージョン AWS東京リージョン[アジアパシフィック(東京) ap-northeast-1 ]
利用するサービス AWS Lambda(イベント発生時にコードを実行)| AWS (amazon.com)
Amazon API Gateway(規模に応じた API の作成、維持、保護)| AWS

API Gatewayとは

Amazon API Gatewayについて、公式によると「Amazon API Gatewayを利用すれば、規模にかかわらず簡単にAPIの作成、公開、保守、モニタリング、保護を行えます」とのことです。APIとは、「Application Programming Interface」の略で、ソフトウェアやプログラム、Webサービスをつなぐインターフェースを意味します。

今回のハンズオンではAPI GatewayをWebブラウザ(フロント)とLambda(バック)を連携させることに使っています。連載第3回のSQSに続き、サーバーレスな連携にはこのサービスも重要そうですね!

ちなみに、Google Cloudにも「API Gateway」という名のサービスがあるので確認してみましょう。こちらも、「Google Cloud サーバーレス バックエンド向けAPIを作成、セキュリティ保護、モニタリングすることができます。」とされており、ほぼ同じにみえます。いずれ詳細比較してみたいところです。

API Gateway | API ゲートウェイ | Google Cloud

API GatewayでREST APIを作ってみる

ハンズオン手順に従い、API Gateway画面にて以下を入力しREST APIを作成してみます。前回まで(Lambda・SNS・SQS)と異なり、今回はタグを有効化する画面がないので、リソース削除時にうっかり忘れないよう注意が必要です。

APIタイプ REST API 選択
API名 rkoike-handson-api
※ 冒頭部はユーザ固定読み替えしてください
入力
エンドポイント
タイプ
リージョン デフォルト
メソッド メソッド
タイプ
GET 選択
統合タイプ Lambda 関数 選択
rkoike-handson-function
(連載第1回で作成したLambda関数を指定)
検索+選択
デフォルトタイムアウト チェックする デフォルト
メソッドリクエスト
の設定
(特に設定しない) デフォルト
URLクエリ文字列
パラメータ
(特に設定しない) デフォルト
HTTPリクエストヘッダー (特に設定しない) デフォルト
リクエスト
本文
(特に設定しない) デフォルト

ハンズオンシナリオはLambdaですが、他の選択肢は画像の通りです。

メソッドの詳細画面

ここでちょっと寄り道。ここでいう「メソッド」とは、リソース(ツリー構造になっているAPIのパス)に対するアクションで、GET、POST、PUT、DELETEなどのHTTPメソッドを指します。完全にプログラミングの世界ですね。この連載はサーバーレス触ってみたというシリーズですが、API Gatewayにいたってはサーバーレスであることが、もはや大前提にもみえます。

メソッドをテストしてみる

連載第1回で作成した「Hello from Lambda!」のLambda関数を、REST APIのメソッドとして動かしてみます。

メソッドの実行

テストタブのオレンジ色の「テスト」ボタンを押すと、ご挨拶が表示されました!ちゃんとメソッドにLambdaが組み込めているようです。

メソッドテストの結果

APIをデプロイしてみた

メソッドGETの「アクション」メニューから、APIのデプロイを選択すると、「ステージ」を定義する画面が出てきました。ハンズオンに従って、ステージ名のみ定義してデプロイを進めます。そうそう、最初に作る画面には出てこないのですが、ステージ定義の画面にはタグの有効化メニューがあるので、これまで通りタグ付けはしておきましょう。

「ステージ」を定義する画面
ステージ名 beta 入力
タグの有効化 UserName 個人名入力

Webブラウザからアクセスしてみる

デプロイ画面の下の方にある「URLを呼び出す」からURLをコピーしてWebブラウザに貼り付けて「Enter」を押します。おや!JSONタブでLambdaのご挨拶が表示されましたね。大成功!

JSONタブ

ついでに生データのタブを開いてみます。

生データのタブ

そうでした、Lambda関数のデフォルトはこれでした。(連載第1回のコードと比べてみた)

ハンズオンのメイン手順はここまでです。やったー!コンプリートしました!

API Gatewayのお財布事情

例によって実際利用するにあたって気になるのは、費用の問題です。

料金 - Amazon API Gateway | AWS

最初の課金しきい値が大きいですね......。3億リクエストまで、100万リクエスト単位で同じ課金方式でしょうか?

Create estimate: Configure Amazon API Gateway

検証用に、月間1,000回単位で10ユニット、キャッシュメモリもいらないとして試算するとこちらになりました。

REST APIのコスト(毎月):0.04 USD

2024年9月3日現在の料金表だと、だいたい10円くらいですね。このシリーズで使ってみた中では一番お高い!いやいや、業務利用をするとなると、このリクエスト数に収まるわけがありません。実際にかかる費用は、扱うデータ量と処理内容、処理する頻度によると考えてください。

おわりに

もともとのハンズオンシナリオは、ここまでで終了です。あとは作成したリソースのお片付け(削除)をすればいいのですが、そのまえに!ここまで動かしてみたログを、あとから確認するやり方について確認しておきましょう。次回もぜひお楽しみに。

ハンズオンで動かしてみたログをあとから確認する

なお、ラックはセキュリティの会社ですが、筆者のようなスキルシフト中のエンジニアだけでなく、経験豊富なクラウド技術者やコンサルタントが多数在籍しています。AWSだけではなく、OCI、Azure、Google Cloudも取り扱い、クラウド移行からクラウドネイティブ支援、サーバーレス構築まで、幅広くサポートしますので、お気軽にご相談ください。

関連記事

プロフィール

小池 玲子

小池 玲子
外国語学部出身でIBM Power/AIX/PowerHA育ちのインフラエンジニア。
現場でマネジメント修業を積み、PMP取得を経て、クラウド系PMへ移行中。

関連サービス
AWSインテグレーション

この記事は役に立ちましたか?

はい いいえ
関連サービス
AWSインテグレーション