share facebook facebook twitter menu hatena pocket slack

2014.11.29 SAT

Check! AWS Lambda を理解しよう ~ 2つの動作モデル (pushモデル/pullモデル)

大平 かづみ

WRITTEN BY 大平 かづみ

こんばんは、cloudpack@dz_ こと大平かづみです。

Prologue – はじめに

AWS Lambda は、コードさえ書けば、あとはイベントとの連携を設定することで、指定したいイベントを契機にそのコードを実行する仕組みを提供してくれます。コードが動作する環境は、AWS Lambda が管理してくれるので、冗長化やスケーリングはお任せして、コードに集中できるサービスなのです。

それでは、AWS Lambda をいち早く使えるように、準備を進めましょう!
まずは、AWS Lambda ディベロッパーガイド をチェック!

AWS Lambda の大事なポイント

AWS Lambda を扱うときに、大事なポイントは以下の3つのようです。

  • Lambdaファンクション
  • pushモデルpullモデル という利用形態
  • 呼び出し側 (invocation role) と 実行側 (excution role) のIAMロールの設定

この記事では、導入の流れと、主にモデルについて読み進めます。

手始めに、ドキュメントの手順に素直に従います

AWS Lambda にはじめて触れるあなたへ(意訳) の手順を確認しました。

  1. 製品の概要や提案、価格を把握するために、製品詳細ページを参照しよう
  2. AWS Lambda: 動作の仕組みを読もう
  3. コンソールの「はじめに」セクションのサンプルに従って進めよう (Getting Started with AWS Lambda を参照)
  4. AWS Lambda API を把握するために、Lambda CLI のチュートリアルを実践しよう

さらに学ぶには、以下のトピックも参照するとよいそうです。

どう動作するの?

私は製品詳細ページは目を通したので、AWS Lambda: 動作の仕組みを読んでみます。

AWS Lambda can execute your custom code, also referred as a “Lambda function,” in response to events in other AWS services or events generated by user applications.

AWS Lambda は、"Lambda funciton" として、あなたがカスタムしたコードを実行できます。他のAWSサービスで発生したイベントやユーザアプリケーションが生成したイベントへの応答が契機です。

2つの利用モデル

AWS Lambda を利用するユースケースとして、以下の2つのモデルが紹介されています。

モデル分類 ユースケース
pushモデル Amazon S3 でバケット通知を AWS Lambda へ向けて設定して、コードを実行する
ユーザのアプリケーションから AWS Lambda へ向けてイベントを発行し、コードを実行する
pullモデル あなたのアプリケーションからストリーム(Amazon DynamoDBストリームKinesisストリームなど) へイベントを発行し、AWS Lambdaはそのストリームからイベントを取り出し、コードを実行する

モデルについて、さらに読み解きます

pushモデル

  • AWSサービスや独自アプリケーションから、AWS Lambda へイベント通知して、コードを実行する
  • コード実行の順序は保証されない
大事そうな部分をクイック和訳: pushモデル

In both these cases, you must grant Amazon S3 or the custom application permission to invoke a function on your behalf. You do this by creating an invocation role, discussed in the following section.

(2つのユースケース図のについて)これらのケースでは、あなたは Amazon S3、またはカスタムアプリケーションに、ファンクションを実行するパーミッションを与える必要があります。これは、invocation role を作ることにより行えます。(後述のセクションで話します。)

The “push” model is an unordered model. That is, the order in which Lambda processes events is undeterministic.

“push”モデルは、順序がないモデルです。すなわち、Lambda の処理における順序は、決まっていません。

pullモデル

  • イベントをストリームに流し、AWS Lambda はストリームからイベントを取り出し、コードを実行する
  • 一度ストリームに入れることによって、イベントの順序を保つことができる
大事そうな部分をクイック和訳: pullモデル

This is also referred as the “pull model” where AWS Lambda pulls the updates from the stream and invokes your function. In this case, you must grant permission to both pull from the stream (invocationrole) and execute (executionrole). The IAM roles are further explained in the following sections.

これは、pullモデルと呼んでおり、 AWS Lambda は、その更新をストリームから引っ張ってきて、あなたのファンクションを実行します。この場合、ストリーム側 (invocation role) と、実行側 (excution role) の両方のパーミッションが必要です。この IAMロールについては後述のセクションで説明します。

The “pull” model is an ordered model. That is, Lambda processes events in order they are published to the stream. For example, the order in which Amazon DynamoDB publishes updates to the stream is the same order in which Lambda processes the events.

“pull”モデルは、順序が保証されるモデルです。すなわち、 AWS Lambda は、イベントを、ストリームへ発行された順番で処理します。例えば、Amazon DynamoDB はストリームへ更新を発行した順序と、AWS Lambda が処理するイベントの順序は同じになります。

Epilogue – おわりに

ここまで学習して、思ったより、AWS Lambda: 動作の仕組みのボリュームが多いことに気づき、モデルまででいったん休憩です。(苦笑)
引き続き、私は Component: Lambda Function を読み進めますっ (o’ω’)ノ

Check! AWS Lambda を理解しようシリーズ (続きはこちら!)

Check! AWS Lambda を理解しよう ~ 2つの動作モデル (pushモデル/pullモデル)」(本記事)
Check! AWS Lambda を理解しよう(2) ~ Lambdaファンクションとコンソール

大平 かづみ

大平 かづみ