はじめに
現代のソフトウェア開発において、迅速にAPIを構築し、デプロイできるスキルは非常に貴重です。たとえば、新しいWebサービスを立ち上げるときや、既存システムに新機能を追加する際に、APIの実装スピードがプロジェクト全体の進行に大きな影響を与えます。
この記事では、数分でAWSを使ってAPIを実装する方法を紹介します。AWSのAPI GatewayとLambdaを利用して、HTTP APIを使ったシンプルなHelloWorld APIを作成する手順を解説します。
想定読者
この記事は、クラウドサービスを使ったAPI構築に興味がある方を対象としています。特に、サーバーレスアーキテクチャに興味がある方や、プロジェクトの迅速な立ち上げを目指す方に役立つ内容となっています。
この技術を身につけることで得られる利点
この技術を習得することで、次のような利点があります。
-
迅速なプロトタイピング
新しいアイデアや機能を素早く実装し、検証する能力が身につきます。
-
スケーラブルなシステム構築
AWS LambdaとAPI Gatewayを使うことで、初期設定を最低限に抑えつつ、需要に応じて自動的にスケールするAPIを構築できます。
-
コスト効率の向上
サーバーレスアーキテクチャを活用することで、インフラコストを大幅に削減し、必要なときだけリソースを使用することが可能になります。
-
柔軟なシステム設計
他のAWSサービスと組み合わせることで、複雑なビジネスロジックやワークフローをシンプルに実装できます。
これらのスキルを身につけることで、単なる技術者から、一歩先のプロフェッショナルエンジニアへと成長するための基盤を築くことができるでしょう。
使用するAWSリソースの概要
この記事で紹介する手順では、AWSの二つの主要なサービス、API GatewayとAWS Lambdaを使用します。これらのサービスは、サーバーレスアーキテクチャの基礎を構成し、APIの迅速な構築と展開を可能にします。サーバーレスアーキテクチャの利点を活かし、開発者はインフラの管理から解放され、ビジネスロジックの実装に集中することができます。
API Gateway
API Gatewayは、AWSが提供するフルマネージドのAPI管理サービスです。これを使うことで、エンドポイントの作成からトラフィック管理、セキュリティの設定まで、APIの全ライフサイクルを一元管理できます。API Gatewayを使用することで、迅速にスケーラブルなAPIをデプロイでき、リクエストごとに課金されるため、コストも最適化されます。
Lambda
AWS Lambdaは、サーバーレスでコードを実行するサービスです。インフラの管理を気にせずに、必要なときだけコードを実行できるため、リソースの無駄を省きます。API Gatewayと組み合わせることで、リクエストに応じて自動的にLambda関数がトリガーされ、コードが実行されます。これにより、スケーラブルで効率的なAPIを簡単に作成できるだけでなく、メンテナンスやスケーリングの手間も大幅に削減できます。
HTTP APIとREST API、WebSocket APIの違い
AWSのAPI Gatewayを使用してAPIを構築する際、「HTTP API」「REST API」「WebSocket API」の3つの選択肢があります。それぞれ異なるニーズに応じて使い分けることができるよう設計されており、プロジェクトに最適な選択をすることが重要です。
HTTP APIの特徴
HTTP APIは、API Gatewayが提供するAPI管理サービスの中でも、シンプルで低コストな選択肢です。パフォーマンスに優れ、低レイテンシーを実現するため、リアルタイム性が求められるアプリケーションに適しています。また、設定が容易で、シンプルなAPIを素早く実装する際に最適です。例えば、シングルページアプリケーション(SPA)やモバイルアプリケーションのバックエンドとしての利用が考えられます。
-
低コスト
HTTP APIは、REST APIに比べて使用料金が安く設定されており、予算を重視するプロジェクトに適しています。
-
高パフォーマンス
不要な機能を省いたシンプルな設計により、より高速なレスポンスを実現します。
-
シンプルな設定
必要最小限の設定でAPIを立ち上げることができるため、開発スピードが求められる場面で役立ちます。
REST APIの特徴
REST APIは、HTTP APIに比べて多機能で、複雑なAPIや大規模なアプリケーションに対応できるよう設計されています。APIキー管理やリクエストのキャッシング、モニタリング、バージョン管理など、エンタープライズレベルの機能を提供します。これにより、複数のリソースを扱うAPIの管理や、厳密なセキュリティ要件に対応する必要があるプロジェクトに適しています。
REST APIについてはこちらの記事で詳しく解説しています。
https://envader.plus/article/83
-
高度な機能
APIキーやリクエストキャッシング、各種トラフィック制御など、細かな設定が可能です。
-
拡張性
複雑なビジネスロジックを持つ大規模なAPIでも、管理が容易です。
-
セキュリティとモニタリング
詳細なログやモニタリング機能を活用し、セキュリティリスクを最小限に抑えることができます。
WebSocket APIの特徴
WebSocket APIは、リアルタイム通信が必要なアプリケーションに最適なAPIタイプです。クライアントとサーバー間で双方向の通信が可能で、リアルタイム性が求められるチャットアプリケーションや、ライブフィード、通知システムなどに利用されます。
-
リアルタイム通信
クライアントとサーバー間で常に接続が維持され、データが即時に送受信されます。
-
双方向通信
クライアントからサーバーだけでなく、サーバーからクライアントへもリアルタイムにデータを送信できます。
-
ユースケース
チャットアプリ、オンラインゲーム、ライブストリーミングなど、リアルタイムでのやり取りが必要なアプリケーションに最適です。
今回はHTTP APIを使用
今回は、シンプルかつ迅速にAPIを実装でき、コストが低いHTTP APIを使用して、HelloWorldのような基本的なAPIを構築します。シンプルなAPIが必要な場合、HTTP APIは最適な選択肢です。HTTP APIの手軽さとパフォーマンスを活かして、短時間で効果的なAPIを立ち上げましょう。
HTTP APIを使用したHelloWorldの実装手順
ここでは、AWSのAPI GatewayとLambdaを使用して、シンプルなHTTP APIを作成する具体的な手順を解説します。最終的には、リクエストを受け取ると「APIが正常に動作している」というメッセージを返すエンドポイントを構築します。この手順を通じて、サーバーレスアーキテクチャの基本を体感できるでしょう。
Lambda関数の作成
-
Lambdaコンソールにログインし、関数の作成をクリックします。
-
関数名(例:HelloWorldFunction)を入力し、ランタイムとしてNode.js 20.xを選択します。
-
関数のコードに以下を入力し、デプロイします:
exports.handler = async (event) => { const response = { statusCode: 200, body: JSON.stringify({ message: "Your API is running smoothly!" }), }; return response; };
ここで、APIが正常に動作していることを確認できるシンプルなメッセージ「Your API is running smoothly!」を返すようにしています。
API GatewayのHTTP APIの設定
- API Gatewayコンソールにログインします。
- Create APIをクリックし、HTTP APIを[構築]します。
- API GatewayのHTTP API設定画面に戻り、統合を追加をクリックします。
- Lambdaを選択し、作成したLambda関数を指定します。
- 次へをクリックし、API名(例:HelloWorldAPI)を入力して進めます。
- ルートセクションで、リソースパスに
/api
、HTTP methodにGET
を設定します。
デプロイとテスト
- 作成をクリックし、新しいステージ(例:prod)を作成します。
- デプロイが完了したら、エンドポイントURLを使ってAPIが正しく動作するか確認します。ブラウザやcurlコマンドを使用して
/api
エンドポイントにアクセスすると、設定したメッセージが返されるはずです。
実務での利用例
AWSでAPIを構築することは、多くの実務シナリオで非常に役立ちます。サーバーレスアーキテクチャを採用することで、開発スピードが向上し、インフラ管理の負担を軽減しつつ、スケーラビリティやコスト効率を最大限に引き出すことができます。以下は、API GatewayとLambdaを活用した具体的な利用例です。
Webアプリケーションのバックエンド
シンプルなWebアプリケーションを構築する際、サーバーレスアーキテクチャを導入することで、インフラの管理を最小限に抑えつつ、堅牢でスケーラブルなシステムを実現できます。API GatewayとLambdaを使えば、次のような主要なバックエンド機能を手軽に実装できます。
-
ユーザー認証
ユーザーの登録やログイン機能をAPIとして提供し、セキュリティを確保しながらシームレスなユーザー体験を実現します。
-
データベース操作
DynamoDBやRDSなどのデータベースサービスと連携し、データの読み書きやクエリ操作をサーバーレスで実行できます。
-
ファイル処理
画像やドキュメントのアップロード、変換、保存などの処理をLambda関数で行い、S3などのストレージサービスと組み合わせることで柔軟なファイル管理が可能です。
このアプローチにより、開発者はビジネスロジックに集中し、インフラの複雑な管理から解放されます。
マイクロサービスアーキテクチャ
大規模なシステムでは、機能ごとに独立したサービス(マイクロサービス)を構築し、それぞれがAPIを通じて通信することが一般的です。API GatewayとLambdaを使用することで、マイクロサービスを次のように効果的に管理できます。
-
サービスごとのAPI設計
各マイクロサービスが独立したAPIを持つことで、開発チーム間の疎結合を保ちながら、独立して開発・デプロイが可能になります。
-
スケーラビリティ
マイクロサービスごとにLambda関数をデプロイし、トラフィックの増加に応じて自動的にスケールアウトできます。
-
簡単なデータ連携
API Gatewayを使うことで、マイクロサービス間の通信が統一されたプロトコルで行われ、データの連携や処理がシンプルになります。
以上の手法により、システム全体の柔軟性と拡張性が向上し、必要に応じてサービスを迅速にスケールアップまたはダウンできるようになります。
自動化とトリガー機能
AWS Lambdaはイベント駆動型であり、API Gatewayと組み合わせることで、自動化のワークフローを構築することができます。これは、特定の条件に基づいてタスクを自動的に実行する必要があるシナリオに特に有用です。
-
定期的なデータ処理
例えば、夜間に自動的にデータを集計し、分析結果を出力するバッチ処理を構築できます。
-
外部システムとの連携
API Gateway経由で外部のシステムからリクエストを受け取り、Lambdaをトリガーしてデータを処理し、結果を返すことで、柔軟な連携が可能です。
-
通知システム
特定のイベントが発生した際に、リアルタイムでユーザーに通知を送信するシステムを構築することもできます。
これらの自動化機能を利用することで、日常の運用負荷を軽減し、システムの効率を最大限に引き上げることが可能です。
まとめ
今回は、AWSのAPI GatewayとLambdaを使用して、数分でHelloWorld APIを実装する方法を紹介しました。HTTP APIのシンプルさとコスト効率の良さを活かして、迅速にAPIを構築できることが分かりました。これを基に、実際の業務でAPIを構築し、効率的なシステム運用を目指しましょう。
参考資料
- 公式ドキュメント: AWS API Gateway ドキュメント
- AWS Lambda ドキュメント: AWS Lambda ドキュメント
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.02.07
AWSでLogstashの環境構築と使い方を学ぶ
Logstashという強力なツールを用いて、効果的なログ収集、加工、および可視化の方法を学びます。AWS上でのLogstashの設定から、基本的な使い方まで、実践的な知識を提供することを目指しています。
- インフラエンジニア
- AWS
2023.10.28
TerraformでAWS RDS/Auroraの時限起動を設定し、コストを削減
この記事では、AWSのデータベースサービスであるRDSとAuroraについて簡単に触れた後、なぜコスト削減が大事なのか、そしてそのためにどうやってTerraformを使うのかを紹介していきます。
- AWS
2024.04.14
手を動かして身につける AWSでサーバレスのハンズオン
サーバレスコンピューティングの最大のメリットは、インフラの管理から解放されることです。開発者はサーバーのプロビジョニングや保守に関する心配をする必要がなく、アプリケーションのコードの作成とその実行に専念できます。より迅速にアプリケーションを市場に投入することが可能となり、イノベーションの速度を高めることができます。
- AWS
- ハンズオン