18
Operation Lab 運用設計ラボ Lambda / AWSCLI 運用設計ラボ合同会社 シニアアーキテクト 波田野 裕一 2015-10-26 1.9.0

AWSCLI Lambda

Embed Size (px)

Citation preview

Operation Lab運用設計ラボ

Lambda / AWSCLI

運用設計ラボ合同会社 シニアアーキテクト 波田野 裕一

2015-10-26

1.9.0

Operation Lab運用設計ラボ

本資料について

• AWS CLIからAWSのプロダクト理解するために自力で作成した資料です。

• なるべく公式ドキュメントを確認していますが、間違いがあったらごめんなさい(><

• ご意見、コメントなどについては、JAWS-UG CLI専門支部まで是非。 • 本資料はJAWS-UG CLI専門支部 #31 Lambda入門での発表資料です。

Operation Lab運用設計ラボ

Lambdaとは

Operation Lab運用設計ラボ

What’s Lambda

• Amazonが提供するコンピューティングサービス

• サーバレスであることが最大の特徴

• AWSのプロダクト間をつなぐ糊みたいなもの

• 今のところAWS独自の機能 (らしい)

• 課金 =リクエスト回数 + 100ms単位 + メモリ量

Operation Lab運用設計ラボ

Lambdaの要素

Operation Lab運用設計ラボ

Lambdaの要素

Lambda 関数

イベントソース

Lambda 関数

イベントソース

プッシュモデル プルモデル

非同期実行同期実行

PullPush

EventRequestResponse関数のレスポンス不要関数のレスポンス必要

Invocation Role

Execution Role

Execution Role Event Source

Mapping

aliasversion

configuration

Operation Lab運用設計ラボ

LambdaとAWSプロダクト

Lambda 関数

イベントソース

Lambda 関数

イベントソース

プッシュモデル プルモデル

非同期実行同期実行

PullPush

EventRequestResponse関数のレスポンス不要関数のレスポンス必要

DynamoDB Kinesis

ユーザアプリ(SDK)

S3 SNS SES Cognito CloudWatchLogs CloudFormation API Gateway

Invocation Role

Execution Role

Execution Role Event Source

Mapping

DynamoDB Kinesis S3 SNS

CloudFormation API Gateway

ユーザアプリ(SDK)/SES/Cognito/CloudWatchLogユーザアプリ(SDK)/SES

aliasversion

configuration

Operation Lab運用設計ラボ

Lambdaの要素 (プルモデル)

Lambda 関数

イベントソース

プルモデル

非同期実行

Pull

Event関数のレスポンス不要

DynamoDB Kinesis

Execution Role

Execution Role Event Source

Mapping

• Lambdaがイベントソースをポーリングして、イベントが発生した場合に関数を呼び出す。

• 関数には以下に対するアクセス権限が必要。 • イベントリソース • 関数が処理を実行する対象のリソース

• 関数とイベントリソースを紐付けるために、Event source Mappingの設定が必要になる。

• プルモデルの場合、呼び出しタイプはEvent(非同期実行)のみになる。

Event Source Mapping

Execution Role

aliasversion

configuration

Operation Lab運用設計ラボ

Lambdaの要素 (プッシュモデル)

Lambda 関数

イベントソース

プッシュモデル

非同期実行同期実行

Push

EventRequestResponse関数のレスポンス不要関数のレスポンス必要

ユーザアプリ S3 SNS SES Cognito CloudWatchLogs CloudFormation API Gateway SDK

Invocation Role

Execution Role

aliasversion

configuration

!S3 SNS

CloudFormation API Gateway

ユーザアプリ(SDK)/SES/Cognito/CloudWatchLogユーザアプリ(SDK)/SES

• イベントソースがその内部イベントの発生に従って関数を呼び出す。

• イベントソースにはLambda関数を発動する権限が必要。

• 関数には処理を実行する対象のリソースに対するアクセス権限が必要。

• 同期実行か非同期実行はイベントソースによって異なる。(どちらでも実行できるイベントソースもある。)

Invocation Role

Execution Role

Operation Lab運用設計ラボ

Lambdaの要素 (ロール)

関数は処理を実行する対象のリソースに対する権限が必要。

Invocation Role

Execution Role

イベントソースがLambda関数を発動する権限が必要。 (プッシュモデルのみ)

• Basic Execution Role

• S3 Execution Role

• Kinesis Execution Role

• DynamoDB Basic Execution Role

• DynamoDB Event Execution Role

Operation Lab運用設計ラボ

Lambdaの要素 (共通)

Lambda 関数 configuration

• 関数名 • 説明(ディスクリプション) • IAMロール • ハンドラ (Node.jsでは "モジュール名.export") • タイムアウト (デフォルト: 3秒) • メモリサイズ (デフォルト: 128MB, 64MB単位)

Lambda関数の設定

Operation Lab運用設計ラボ

Lambdaの要素 (共通)

Lambda 関数

alias

version

特定のバージョンに対するポインタ• 特定のバージョンに対するポインタとなるARNを作成することができる。

• エイリアスの変更によって、特定のバージョンへの移行やロールバックが容易になる。

• イベントリソースからの起動許可は、明記されたARNのみに許可されるので、エイリアスに対する許可が推奨されている模様。

Lambda関数の特定のバージョン• 最初は、$LATESTのみ存在する。(関数作成時にもバージョン発行可) • 現在の関数のコードに対してバージョンを発行することができる。 • バージョン毎にARNが発行される。

• 非修飾ARN: arn:aws:lambda:aws-region:acct-id:function:helloworld • 修飾ARN: arn:aws:lambda:aws-region:acct-id:function:helloworld:$LATEST

Operation Lab運用設計ラボ

関数の実行 (invoke)

Lambda 関数

• 実行ログは、CloudWatchLogsに残る。 • CloudWatchにメトリックが生成される。

• Lambdaの実体はEC2上のコンテナ • Lambdaは関数を実行する。 • イベントはペイロードとして関数に渡される。

• Amazon Linuxの環境を利用できる。 • ファイルシステムは/tmpのみ利用できる。

Operation Lab運用設計ラボ

関数実装のベストプラクティス

Lambda 関数

http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/best-practices.html

Operation Lab運用設計ラボ

lambda / awscli 1.9.0

Operation Lab運用設計ラボ

lambdaコマンドの概要 (24コマンド)

• 関数関連 (7コマンド) • 作成、削除 (create-function, delete-function) • 情報 (list-functions, get-function, • 更新 (update-function-code) • バージョン (publish-version, list-versions-by-function)

• 関数設定関連 (2コマンド) • 情報 (get-function-configuration) • 更新 (update-function-configuration)

• 権限設定関連 (3コマンド) • 追加、削除 (add-persmission, remove-permission) • 情報 (get-policy)

1.9.0

Operation Lab運用設計ラボ

lambdaコマンドの概要 (24コマンド)

• 関数実行関連 (2コマンド) • 実行 (invoke, invoke-async)

• イベントソースマッピング関連 (5コマンド) • 追加、削除 (create-event-source-mapping, delete-event-source-mapping) • 情報 (list-event-source-mappings, get-event-source-mapping) • 更新 (update-event-source-mapping)

• 関数エイリアス設定関連 (5コマンド) • 追加、削除 (create-alias, delete-alias) • 情報 (list-aliases, get-alias) • 更新 (update-alias)

1.9.0

Operation Lab運用設計ラボ

http://www.operation-lab.co.jp/

OperationLab運用設計