狠狠撸

狠狠撸Share a Scribd company logo
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
alias
version
con?guration
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
alias
version
con?guration
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
alias
version
con?guration
Operation Lab
運用設計ラボ
Lambdaの要素 (プッシュモデル)
Lambda
関数
イベントソース
プッシュモデル
非同期実行同期実行
Push
EventRequestResponse
関数のレスポンス不要関数のレスポンス必要
ユーザアプリ
S3
SNS
SES
Cognito
CloudWatchLogs
CloudFormation
API Gateway
SDK
Invocation
Role
Execution
Role
alias
version
con?guration
!
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
関数
con?guration
? 関数名
? 説明(ディスクリプション)
? 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運用設計

More Related Content

AWSCLI Lambda