AWS Lambda、Amazon API Gateway、Amazon S3を利用してサーバーレス処理を構築!

インターネットを含むネットワーク上のコンピュータに接続して、ソフトウェア、インフラ、基盤などを提供してくれるクラウドサービス。そんなクラウドサービスの中でも高いシェアと多くの選択肢を提供してくれるのがAWS(Amazon Web Services)です。

AWSを利用することで様々な業務上の課題を解決することができますが、今回はサーバーレスと呼ばれる処理の実現について見てみましょう。

この記事を読むと以下の3つのことがわかります
・AWS Lambda、Amazon API Gateway、Amazon S3の概要
・サーバーレスがなぜトレンドとなっているか
・AWS Lambda、Amazon API gateway、Amazon S3を組み合わせてサーバーレスアプリの構築ができること

AWS Lambda、Amazon API Gateway、Amazon S3とは

技術市場の調査を行うCanalysの調査によれば、2020年3QにおいてAWSはクラウドサービスにおいて32%と世界トップのシェアを持っています。※注1
そのクラウドサービスの中でも、人気のあるサービスの中から、AWS Lambda、Amazon API Gateway、Amazon S3の三つにフォーカスをあてます。

AWS Lambda

AWS Lambdaはサーバーの管理を全く行わずに、ソースコードの実行が行えるサービスです。クラウド上にソースコードをアップロードしておくだけで、他のAWSのサービスをトリガーとしたり、Webやモバイルアプリケーションからも処理を起動することができます。※注2
AWS Lambdaの特徴として、AWSは下記を挙げています。
・サーバーの管理が不要
・処理の実行のためのリソースを自動的にスケーリング
・課金は実行に必要となった時間に応じて
・適切なメモリサイズを選択することで安定したパフォーマンスを実現

Amazon API Gateway

Amazon API Gatewayはアプリケーションから各種の機能へとアクセスするためのAPIを作成、公開、保守等をすることができるサービスです。作製したAPI(Application Programing Interface)は各種のアプリケーションに向けて処理を提供するフロントドアとしての役目を果たしてくれます。自分で利用するのにも、他者が利用するのにも、APIとして同じようにアクセスできるインタフェースを作成することが可能です。※注3
Amazon API Gatewayの特徴として、AWSは下記を挙げています。
・効率的な API 開発
・規模に応じたパフォーマンス
・大規模なコスト削減
・簡単なモニタリング
・柔軟なセキュリティ管理

Amazon S3

Amazon S3はオブジェクトストレージサービスです。クラウド上にデータを格納、取得することが可能となるサービスで、Amazon Simple Storage Serviceを略してS3と呼ばれています。スケーラビリティ、データ可用性、セキュリティ、およびパフォーマンスに優れ、あらゆるデータを低コストかつ高いセキュリティで格納することが可能です。また、他のAWSのサービスと組み合わせることでデータ分析のためのデータレイクとしての利用も可能です。※注4

サーバーレスとは

プログラムを作製した場合、そのプログラムを実行して利用します。プログラムの実行のための環境が必要となるのですが、一般的にはPCやサーバーが実行環境として利用されます。この実行環境の用意ですが、プログラムを動かすのに必要なメモリやCPU、ストレージといったリソースの確保、実行環境のサーバー、PCのメンテナンスなど手間がかかっていました。これらのプログラムの実行に伴って発生する手間を省くために考えられたのがサーバーレスという方式です。サーバーレスを利用することにより、利用者は手元にPCやサーバー等のプログラムの実行環境を用意せずとも、クラウドサービス上でプログラムが実行可能となります。※注5
※サーバーレスという名前ですが、クラウドサービス側にはサーバーが存在しています。利用者側はクラウドサービス側の環境は考慮する必要がないため、サーバーレスという名称になっています。

サーバーレスのメリット

サーバーレスのメリットはプログラムの実行環境に関する手間、悩みを排除できることです。クラウドサービスとして提供されたサーバーレスの環境を利用することで、永続的にプログラムの実行環境のメンテナンスを考慮する必要が無くなります。さらには、実行に必要なリソースが不足した場合にも簡単に追加することが可能です。
・サーバーを用意する必要がくなる
・サーバーのメンテナンス不要
・CPU、メモリ、ストレージの拡張などリソースの確保も随時可能

AWS Lambda、Amazon API Gateway、Amazon S3を組み合わせてサーバーレスのアプリ構築

それでは、具体的にどのようにサーバーレス処理を構築すればよいのでしょうか。以下のAWS Lambdaを利用したサーバーレス処理の構築の例を参照しましょう。利用シーンに合わせてAWSの各サービスを組み合わせることで、サーバーレス処理の実現が可能なイメージをつかむことができます。

Amazon API GatewayとAWS Lamdaの組み合わせで各種デバイスからアクセス可能なAPIの構築

例えば、同じ処理に対して、ネットワーク上の端末やWebアプリ、モバイルアプリ、IoTデバイスなどからアクセスを行いたい場合、Amazon API Gatewayを利用してAPI化します。その処理の窓口としてAPIが用意されることで、各種の端末やアプリが同じように処理にアクセスすることができるようになります。また、APIへのアクセスをトリガーとしてAWS Lambda上のコードを実行するように設定すれば、サーバーレスでAPIの実現が可能です。※注6

画像出典:”API Gateway の仕組み” Amazon API Gateway https://aws.amazon.com/jp/api-gateway/

Amazon S3とAWS Lambdaで写真の自動リサイズ処理

例えばデジタル写真の保存先をAmazon S3上としている場合、画像をweb、モバイル、タブレット向けに自動的にリサイズする処理をサーバーレスで実現できます。S3への画像の保存をトリガーとしてAWS Lambda上に画像をリサイズするコードを配置して実行されるように設定しておけば、リアルタイムで画像のリサイズが行われる仕組みが構築できます。※注7

画像出典:”ユースケース リアルタイムファイル処理” AWS Lambda https://aws.amazon.com/jp/lambda/

Amazon S3とAmazon API Gateway、AWS LambdaでWebアプリケーションを構築

Amazon S3、Amazon API Gateway、AWS Lambdaを組み合わせることでWebアプリケーションの作成も可能です。Amazon S3では静的ウェブサイトのホスティングが可能ですので、Webサイトのフロントエンドのページの表示ができます。フロントエンドのページからAmazon API Gatewayを経由してAWS Lambdaに設定した処理を実行することで、サーバーレスでWebサイトを構築できてしまいます。※注8

画像出典:”ユースケース ウェブアプリケーション” AWS Lambda https://aws.amazon.com/jp/lambda/

まとめ

Amazonの提供するクラウドサービスAWSにはサーバーレスな環境でプログラムを実行できるAWS LambdaやAPIを作成できるAmazon API Gateway、クラウドストレージを提供するAmazon S3など様々なサービスが存在しています。
各種のAWSのサービスを組み合わせることによりサーバーレスで処理、アプリケーションを構築できます。サーバーレスは自前でプログラム実行環境を用意せずともよく、環境のメンテナンスも不要、リソースも簡単に追加できるといったメリットがあります。




エンジニア募集中

株式会社キャパでは中途エンジニアの募集をしています。
私たちと一緒に働きませんか?
募集概要について詳しくは


◆参考URL
注1 canalys Global cloud infrastructure market Q3 2020
https://www.canalys.com/newsroom/worldwide-cloud-market-q320
注2 AWS AWS Lambda
https://aws.amazon.com/jp/lambda/
注3 AWS Amazon API Gateway
https://aws.amazon.com/jp/api-gateway/
注4 AWS Amazon S3
https://aws.amazon.com/jp/s3/
注5 AWS builders.flash AWS サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説
https://aws.amazon.com/jp/builders-flash/202003/awsgeek-serverless/
注6 AWS Amazon API Gateway
https://aws.amazon.com/jp/api-gateway/
注7 AWS AWS Lambda
https://aws.amazon.com/jp/lambda/
注8 AWS AWS Lambda
https://aws.amazon.com/jp/lambda/
AWS Amazon S3 での静的ウェブサイトのホスティング
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/WebsiteHosting.html

関連記事一覧