« 【AWS発表】さらに大容量で高速なElastic Block Store(EBS)ボリューム | メイン | 【AWS発表】コンピューティングに最適化されたインテルHaswellプロセッサ搭載の新EC2インスタンス »

【AWS発表】AWS Lambda – クラウド上でのコード実行

私たちはクラウドで実行するアプリケーションのビルドをより簡単にしたいと考えています。コードに集中できるようになって欲しいですし、スケーラビリティや信頼性、ランタイム効率が当たり前のことのように十分に高いクラウド中心の環境で働いて欲しいと思います!

AWS Lambdaのプレビューを本日ローンチすることを発表させて頂きます。AWS Lambdaはクラウドでアプリケーションをビルドして実行する新たなプラットフォームで、既存のプログラミングスキルやAWSに関する知識を活用することができます。 Lambdaを用いて、シンプルにLambda functionを作成し、特定のAWSリソースへのアクセス許可を与え、そしてLambda functionをAWSリソースへと接続します。Lambdaは変更をAmazon Simple Storage Service (S3)のバケットにアップロードされたファイルへの変更やAmazon Kinesisのストリームに届いたメッセージ、Amazon DynamoDBにおけるテーブルの更新を受けてあなたが用意したコードを自動的に実行します。

Lambdaは全く管理が要らないコンピューティングプラットフォームです。EC2インスタンスを設定したり、起動、監視したりする必要はありません。OSやプログラミング言語の環境をインストールする必要もありません。スケールや耐障害性を考慮する必要もないですし、キャパシティをリクエストしたり確保したりする必要もありません。新たに作られたLambda functionはユーザ側で全く何もすることなく、また非常に高い費用対効果に基づいて1時間あたり数万のリクエストを扱うことができるようになっています。

もう少しLambdaの中身を掘り下げて見ていきましょう。プログラミングモデルとランタイム環境を少し見てから、プログラミング例をひと通り見ていきます。今回のポストを読むことで、Lambdaのロードマップ上にはたくさんの項目があるということと、今日皆さんに共有できることはこれからずっと続く機能に満ちた旅のほんの最初の一歩であるということを心に留めて置いてください。

Lambda のコンセプト

1

Lambdaの最も重要なコンセプトはLambda functionです(単にfunctionという場合もあります)。Node.jsJavaScriptのイベントドリブンなサーバサイド実装です)でLambda functionを記述します。

コードをアップロードし、Lambda functionを作成するためAmazon Lambdaに対してコンテキスト情報を設定します。コンテキスト情報では実行環境(言語、必要なメモリ量、タイムアウト期間やIAM role)を指定し、コード内で実行したい関数を示します。コードとメタデータはAWS上で永続的に保存され、後から名前やARN (Amazon Resource Name)で参照可能です。必要なサードパーティライブラリもアップロードに含めます(Lambda functionごとに単一のZIPファイル形式となります)。

アップロード後、自分のLambda functionと特定のAWSリソース(特定のS3バケット、DynamoDBテーブルもしくはKinesisストリーム)を紐付けます。LambdaはLambda functionに対してイベント(一般的にはリソースが変更されたことを意味します)をルーティングするようにします。

リソースに変更があると、Lambdaはそのリソースに紐付けられたLambda functionを実行します。受信リクエストを処理するため必要に応じてコンピュートリソース(EC2インスタンス)を起動し管理します。何も気にしなくて大丈夫です、Lambdaがあなたの代わりにリソースの管理を行いますし、必要なくなればそれらのシャットダウンも行います。

Lambda はAWS Management Console,  AWS SDK, そして AWS Command Line Interface (CLI)からアクセス可能です。Lambda APIは全てドキュメント化されており、既存のコードエディタやその他の開発ツールをLambdaに接続するのに使うことができます。

Lambda のプログラミングモデル

Lambda functionは紐付けられたリソースが変更された後、有効化されます。指定されたNode.jsの関数で実行が開始され、そこから処理が進みます。関数は(POSTと一緒に渡されたパラメータを通して)JSON形式のデータ構造にアクセスします。このデータ構造にはLambda functionが有効化されるきっかけとなる 変更(もしくはその他のイベント)に関する詳細な情報を含みます。

Lambdaはリソース変更のペースに遅れをとらないよう必要に応じてLambda functionの追加コピーを有効化します。Lambda functionはコンピュートインスタンス上に永続的な状態を保存することはできないので、代わりにS3もしくはDynamoDBを使用する必要があります。

コードではNode.jsおよびLinuxの環境下で本来備わっている機能を利用可能です。その他のAWSサービスを呼び出すためにAWS SDK for JavaScript in Node.jsを利用することもできます。

Lambda の実行環境

各Lambda functionに指定したコンテキスト情報はファンクションの最大実行時間を指定します。これは一般的に短めにセットされますが(数秒でも多くの処理ができるはずです)、必要に応じて最大60秒まで指定することが可能です。

Lambdaは複数のIAM roleを用いてLambda functionへのアクセスとAWSリソースを管理します。Invocation roleはLambdaに特定のLambda functionを実行する権限を与えます。Execution roleはLambda functionに特定のAWSリソースへのアクセス権限を与えます。きめ細かい権限の組み合わせを実現するためにそれぞれのファンクションに対して別個のIAM roleを使用することが可能です。

Lambdaは各Lambda functionの実行を監視し、リクエスト数、遅延、可用性とエラー率のメトリクスをAmazon CloudWatch内に保存します。メトリクスは30日間保持され、コンソール上で見ることができます。 

どのようにLambdaを使うか考えはじめるときに考慮すべき点がいくつかあります。

  •  Lambda functionのコンテキスト情報では実行に必要なメモリ量も指定します。128MBから1GBまでの間で好きな値を指定可能です。メモリ設定に応じてLambda functionが利用可能なインスタンスのCPU能力、ネットワーク帯域、IO帯域が決まります。
  • 各Lambda functionの起動は最大で256のプロセスもしくはスレッドを使用できます。最大512MBのローカルストレージと1024までのファイルディスクリプタも使用できます。また、最大で10の同時アウトバウンド 接続も生成します。
  • Lambdaは各AWSアカウントにおいて一連の管理上の制限を課します。プレビュー期間中は同時進行の起動リクエストを25個まで処理することが可能です 。 

Lambda入門

それではマネージメントコンソールを使ってシンプルなLambda functionを作成するプロセスを見て行きましょう。先だって述べた通り、これらはSDKCLIから実施することも可能です。以下のコンソールでは私の全Lambda functionを表示しています。

2

手始めにシンプルに「Create a Lambda function」をクリックします。それから詳細について全て入力します。

3

 次のように自分のLambda functionに名前を付け、説明書きを加えます: 

4

それから、コードを直接入力するかZIPファイルをアップロードします。コンソール上では始めるのに役立つサンプルのコードスニペットの選択もできます。

5

どのLambda functionを実行するか、実行時にどのIAM roleを利用するかを指定します。 

6

メモリ要件の微調整と実行時間の制限も設定できます。

7

Lambda functionの作成後、コンソール上で繰り返し編集しテストすることができます。見て分かるとおり、左ペインにはLambda functionに渡されるJSONデータのサンプルが表示されています。

8

Lambda functionが期待通りに動いているならば、Amazon S3 event notificationのようなイベントソースをアタッチできます。Lambda functionの起動のために必要となる権限をS3に与えるため、Invocation roleを指定します。

9

前述の通り、Lambdaは各Lambda functionごとにメトリクス情報を収集し、それらをAmazon CloudWatchに送ります。コンソール上でメトリクスを見ることができます。

10

ロードマップ

私たちはLambdaに関する素晴らしいロードマップを持っています。今日はその全てを伝えることはしませんが 、さらなるAWSサービスと言語のサポートを追加する予定であることをお伝えします。いつものように、私達はお客様からのフィードバックを非常に大切にしています。ぜひLambda Forumにコメントを残してください。

料金と利用可能なリージョン

まとめに入る前に料金について少し話しましょう!Lambdaはきめ細やかな料金体系となっています。100ミリ秒単位のコンピュート時間と個々のリクエストに対する支払いとなります。 Lambdaの無料枠は一月あたり100万リクエストと一月あたり最大320万秒のコンピュート処理時間が含まれます。コンピュート処理時間はLambda functionごとに割り当てられたメモリの合計量によります。 Lambdaは本日よりUS East (Northern Virginia), US West (Oregon), と Europe (Ireland)リージョンで限定プレビューが利用可能です。使い始めるには今すぐ登録をお願いします!

 

-- 西谷

コメント

トラックバック

この記事のトラックバックURL:
http://www.typepad.com/services/trackback/6a00d8341c534853ef01b8d08ec249970c

【AWS発表】AWS Lambda – クラウド上でのコード実行 を参照しているブログ:

Featured Event

2016年3 月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31