BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Kappa: AWS Lambdaへのデプロイを容易化する

Kappa: AWS Lambdaへのデプロイを容易化する

原文(投稿日:2015/01/15)へのリンク

Mitch Garnaat氏は、‘ラムダ関数’を、イベントに応答してコードを実行し、自動的に関連するコンピューティングリソースを管理するコンピューティングサービスであるAWS Lambdaへのデプロイを容易にする、Kappaという名前のコマンドラインツールを作成した。

Amazon Web Service (AWS) Lambdaサービスは、AWSクラウドコンピューティングプラットフォームにコードをデプロイして、Webサイトのクリック、新しいファイルがAWS S3オブジェクトストレージバケツに登場した、新しいデータがAWS Kinesisリアルタイムストリーム処理インスタンスに書き込まれたなどのイベントと関連づけることができる。

AWS Lambdaは通常、イベントが発生してから数ミリ秒以内にコードを実行し、サービスが自動的に計算能力を管理し、必要なインフラを起動し、各イベントのコードを実行することができる。現在、AWS LambdaはChromeのJavaScriptランタイム上に構築されたプラットフォームであるNode.jsで書かれたコードをサポートしている。

AWSへのインターフェイスbotoの作成者であるGarnaat氏は、ローカル開発環境からAWS Lambdaへのコードのデプロイで、それぞれ異なるAWSサービスを利用している時の複数の手動ステップがあることを発見し、Kappaを作成した。 Garnaat氏は、Amazon Kinesisインスタンスにレコードが書き込まれるたびに呼び出される、小さなJavaScript関数をAWS Lambdaにデプロイするのに必要な手順のを示した:

  • Javascript関数を書く (AWS Lambdaは、現時点ではJavaScriptのみをサポートしている)
  • 実行時に必要なAWSリソースにアクセスできるようにするために、ラムダ関数を利用することができるIAMロールを作成する
  • Javascript関数と依存関係をZipでまとめる
  • AWS Lambdaサービスへzipファイルのアップロード
  • ラムダ関数へテストデータの送信
  • ラムダ関数を呼び出すサービスによって使われるIAMロールを作成
  • Amazon CloudWatchログからラムダ関数の出力を取得
  • ラムダ関数にイベントソースを追加
  • ライブ関数の出力を監視

Garnaat氏によると、Kappaのゴールはデプロイプロセスを簡素化することでラムダ関数を容易にデプロイすることができるようにすることであり、“[Kappa]は多くの手間のかかる詳細を処理して、ラムダ関数が実際になにをするかにより注力することができるようにしようとしている。”と言う

Kappaはコマンドラインから実行し、AWS LambdaサービスはローカルファイルシステムのYAMLファイルで指定されている。 この構成ファイルには、AWS Lambdaと対話するときにKappaが利用する必要なクレデンシャルが含まれるAWSプロファイル、コードがデプロイされるAWSリージョン、ラムダ関数をドライブするイベントを参照するイベントソース属性といった特定情報を指定する。

Kappaは、関数の実行と呼び出しのためのAWS Identity Access Management (IAM)ロールを管理するためにCloudFormationテンプレートを利用することでラムダ関数と関連づけられたセキュリティ要件の処理を自動化する。 Garnaat氏は、IAM機能を処理するためにCloudFormationを使って、ロールとポリシーを作成と更新するトランザクションのアプローチを提供し、gitのようなSCMツールを使ってバージョン管理することができるようになると述べている。

Kappaはコードのデプロイと実行を編成するコマンドを提供する。‘deploy’コマンドは必要なインフラストラクチャスタックの作成をトリガーし、ローカルに作成されたラムダ関数をzipして、AWS Lambdaにアップロードする。‘add-event-source’コマンドは、CloudFormationテンプレートで指定された呼び出しロールを使用して、特定のイベントにアップロードされたラムダ関数を関連づけするために使用することができる。

Kappaは、ロググループ名と関数出力を含むCloudWatchログサービス内のストリームを探し、直近のログイベントをストリームからコンソールにプリントする’tail’コマンドも提供する。

ロールやポリシー、ラムダ関数を変更が必要な場合、必要に応じてKappa ‘deploy’コマンドを呼び出すことができ、KappaはCloudFormationスタックにアップロードし、新しいバージョンの関数をAWS Lambdaにアップロードする。

Kappaは、Python package index (PyPI)を使ってのインストールと、プロジェクトのGithubリポジトリーをクローンして、AWS Advent blogの手順に従って手動でインストールすることができる。AWS Lambdaの詳細情報はLambda製品ページを見て欲しい。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT