クラウド図鑑 Vol.47

「AWS Lambda」は、2014年11月に発表され、ベータを経て2015年4月から正式提供された、サーバーレスのコンピューティングサービスである。プログラミング言語によって処理を記述し、Lambdaのサービスに登録すれば、AWSのクラウドで実行ができるようになり、利用者はサーバーなどのリソースを気にする必要は一切ない。例えばKinesisのストリーミング処理とLambdaを組み合わせればリアルタイムのアクティビティ追跡、注文のトランザクション処理、クリックストリーム分析、データの変換や整形処理などが可能になる。サーバーのインスタンスなどは必要ないため従来の運用タスクもほとんどなく、料金は実際に使用した処理に対してのみ発生する。一方で、Lambdaの関数や、EC2 で稼働中のワークロード、または任意のウェブアプリケーションなどの、バックエンドからのデータやビジネスロジックにアクセスするAPIを作成・管理するサービスが、2015年7月に提供開始された「Amazon API Gateway」だ。作成したREST APIは、モバイルアプリケーションやウェブアプリケーションからアクセスが可能で、料金は呼び出されたAPIと送出したデータに対して発生する。同種のサービスとして「Microsoft Azure API Management」や「IBM API Management on Cloud」などがあり、今後、社内外のシステム連携の手法としてAPIの利用が増加すると予想されるが、「Amazon API Gateway」を使用すれば、AWS上に構築したアプリケーションやデータへのアクセスが簡素化される。

ビデオ Amazon API Gateway & AWS Lambda to Build Secure and Scalable APIs


(クリックで再生)

URL  https://aws.amazon.com/jp/lambda/
https://aws.amazon.com/jp/api-gateway/

2016年2月17日 株式会社クラウディット 中井雅也
Azure API Management
IBM Bluemix API Management 

機能

 AWS Lambda では、実行する処理(Lambda関数)は Node.js / Java / Python で記述する。Node.js であれば、Lambda コンソールのインラインエディタを使ってAWSに直接コードを記述するような感覚で関数を作成できる。JavaとPythonの場合は、ローカル環境からzip形式のファイルをLambdaにアップロードする。
 サーバーやインスタンスを意識することは全くなく、インフラのプロビジョニング、拡張、デプロイ、モニタリング、運用などは Lambda が自動的に行う。オートスケール機能もサービスにあらかじめ組み込まれている。
 Lambda関数は、他の AWS サービスのイベントから自動的にトリガーして実行する、あるいは、SDKを使ってウェブやモバイルアプリケーションから直接呼び出すことも可能。
 AWSの他のサービス「S3」、「Kinesis」、「DynamoDB」、「Cognito」などと連携して、発生するイベントからLambda関数の自動実行が可能。例えばS3のストレージにデータがアップロードされたとき、KinesisやDynamoDBにデータが書き込まれたときなどのイベントからトリガーして、Lambdaの関数を自動実行させることができる。
 AWS Mobile SDKを利用すれば、Android や iOS のアプリからLambda関数をモバイルバックエンドとして実行できる。
 実行のモニタリングに関しては、ダッシュボードで、全ての関数のメトリクスを可視化できる。また、CloudWatchによってもメトリクスの監視が可能。
 Lambdaは内部的にコンテナー技術を用いており、関数はコンテナー内の隔離された環境で実行される。
 API Gateway では、コンソールを使用して、REST APIとリソースを作成し、開発用や本番用などのステージにデプロイする。APIのバックエンド処理には、Lambda の関数、あるいは、Elastic BeanstalkやEC2 の HTTP エンドポイント、あるいは、インターネット経由でアクセスできる、パブリックのAPIなどを呼び出すことができる。
 サーバーやインスタンスを意識することは全くなく、インフラのプロビジョニング、拡張、デプロイ、モニタリングなどはサービスに組み込まれている。また、キャッシュの設定によって処理の高速化が可能。
 API を公開した後は、各種メトリクスを表示するダッシュボードによって、APIの呼び出しをモニタリングできる。CloudWatch との統合によって、API 呼び出し、レイテンシーデータ、エラー率といったバックエンドのパフォーマンスを確認したり、エラーログ、アクセスログ、デバッグログを CloudWatch のログに記録させることも可能
 APIキーやAWSのIAM によって認証を行い、サービスを操作するアクセスを管理する。また、APIに対するDDoS)攻撃から自動的にバックエンドシステムを保護する。API 内のメソッドごとのスロットリング機能により、1 秒間当たりの速度制限とバースト速度制限を、それぞれの REST API に設定できる。通信はHTTPSによって暗号化される。
 ライフサイクル管理として、API を構築してから開発ステージにデプロイすることや、製品版としての準備ができたときに本番ステージにデプロイするなど、複数ステージで新バージョンのAPIの開発とテストが行える。ロールバックによって旧バージョンのAPIに戻すことも可能。
 Android および iOS によるモバイルアプリケーション向けのカスタム SDK や、JavaScript によるウェブアプリケーション向けのカスタム SDK を生成することができる。

使いやすさ

LambdaもAPI Gatewayも、Webコンソールから、さまざまな操作を行うことができる。サービスの設定はシンプルでわかりやすく、Lambda関数の設定やAPIの設定は簡単なものであれば数分程度でできる。ただし、AWSの用語や設計思想などを理解しておく必要がある。

マニュアルや書籍など

AWSによって、さまざまなWebページやドキュメントが日本語で提供されている。AWSの開発者やパートナーなどが、ネット上でさまざまな情報を提供している。

拡張性

LambdaもAPI Gatewayも、リクエストに応じて処理能力やリソースは自動的にスケールする。API Gatewayのスロットリング機能による速度制限とキャッシュの設定以外は、基本的にスケーラビリティに関することを利用者が意識する必要はない。

可用性

詳細は明らかにされていないが可用性に関してもサービスに組み込まれており、障害対策などを利用者が意識する必要はない。

SLA

2016年2月時点でSLAは定義されていない。

自動化機能

マネージドサービスとして提供されており、インフラの管理を意識することはない

セキュリティ

LambdaのコードはS3のストレージに保存され、実行時以外は暗号化される。また2016年2月の機能拡張によってVPCのリソースにアクセスが可能になった。これにより、Lambdaがアクセスするリソースをインターネット経由でアクセスさせる必要がなくなった。API Gateway では、AWS Identity、Access Management (IAM)、Amazon Cognito といった AWS の管理ツールやセキュリティツールを使用して、API に対するアクセス認証を行う。通信はHTTPSによって暗号化される。

データセンターの場所

LambdaもAPI GatewayもAWSの東京リージョンで利用可能。両サービスともに比較的新しいサービスであり、提供可能リージョンは限定されている。

実績・シェアなど

Lambdaの事例としては、Seattle Timesの画像リサイズ処理、LocalyticsのS3, Kinesisとの組み合わせ、ZillowのモバイルのトラッキングなどがAWSのWebで紹介されている。

エコシステム

AWSのパートナー各社がLambdaやAPI Gatewayのインテグレーションサービスを提供している。

価格および支払い方法

Lambda はリクエスト回数の料金とコンピューティング時間の料金の合算で課金される。また、期間を限定しない無料枠が用意されている。料金の計算方法は複雑なので、AWSのWebで確認いただきたい。API Gateway の料金は、100 万回の API 呼び出しにつき 3.50 USD のレートに、データの送出の費用をギガバイト単位で加算する。API にキャッシュをプロビジョニングするよう選択した場合、時間当たりのレートが適用される。