Table of Contents
はじめに
FundastA Inc.の鈴木です。
現在、AWS ソリューションアーキテクトアソシエイト試験合格に向け AWS について勉強中です。
今回は Lambda と APIGateway について勉強したことを備忘録として、記述していきます。
Lambdaとは
サーバーレスコンピューティングサービスで、サーバーのプロビジョニングや管理、ワークロード対応のクラスタースケーリングロジックの作成、イベント統合の維持、ランタイムの管理を行わずにコードを実行できます。
Lambda の特徴
-
実行基盤は全て AWS が管理
-
AWS サービスと連携させることで簡単にイベントドリブンなアプリケーションを実装可能
-
Node.js/Java などで書かれたコードを実行
-
100 ミリ秒単位でコード実行時間に対しての課金でありコスト効率が非常に高い
-
オートスケール(サーバー負荷に応じて、自動的にクラウドサーバーの台数を増減させる機能)
Push モデル
-
AWS サービスもしくはアプリが直接実行する
-
順不同
-
3 回までリトライ
-
S3 にファイルが格納させる等のイベントが発生した場合に、S3 が Lambda にイベント通知するモデル
Pullモデル
-
ストリームに入ってきた順に処理
-
Lambda が自動的にデータ取得などのファンクションを実行する。
-
イベントごとに複数レコードを取得可能
-
データが期限切れになるまでリトライ
機能紹介
- ブループリント
- Lambda ファンクションをコーディングする際にサンプルコード集を利用可能にしてくれる。
- バージョニング
- ファンクションの一時点を記録管理することが可能であり、復元などが可能になる。
- VPC アクセス
- VPC 内のリソースへのアクセス
-
インターネットを経由せずにアクセスが可能
-
ENI を利用して実現:ENI には指定したサブネットの IP が DHCP で動的に割り当てられる。
-
- VPC 内のリソースへのアクセス
- アクセス制御
-
VPC 内リソースにアクセスさせたい Lambda ファンクションに対して VPC サブネットおよびセキュリティグループを指定
-
ファンクションに割り当てる IAMRole に “AWSLambdaVPCAccessExecutionRole” をアタッチしておく
-
APIGateway
API作成/管理をフルマネージド型サービスで提供されるサービス
特徴
-
最大数十万個のAPI同時呼び出し・受付が可能
-
アクセス制御の管理
-
DDoS攻撃の対応やスロットリングによるバックエンド保護
-
EC2/Lambdaのワークロード処理を実行する
-
Lambdaと密接に統合される
-
WebSocketを利用したリアルタイムかつ双方向通信のAPIも処理可能
API とは
API はアプリケーションソフトウェア開発に利用される標準的なインターフェース群のこと
APIGateway を連携口としてアプリとの連携を実現できる。
APIGateway と Lambda のユースケース
APIGateway を連携口として外部アプリとの連携を実現する形です。簡単なイメージとしてはこのような図になります。
次に EC2 の構築を例にどのようにサーバーレス化されるかを見てみます。
まず「 EC2 中心の WEB アプリケーションの構築」をしてみた図になります。
上図のように EC2 や NAT ゲートウェイなど様々な設定をして、環境を構築しています。
続いて
先ほどの「 EC2 中心の WEB アプリケーションの構築」をサーバーレス化した場合のアーキテクチャ図がこちらになります。
APIGateway と Lambda を使用することで、簡略化することができました。
Lambda と APIGateway を用いてこのような環境を構築することができます。
おわりに
APIGateway と Lambda は、私も実際に触って動作を確認しました。
みなさんも実際に触りサーバーレス化を体験してみても良いと思います。
ご覧いただきありがとうございます。