awscli lambda
TRANSCRIPT
Operation Lab運用設計ラボ
本資料について
• AWS CLIからAWSのプロダクト理解するために自力で作成した資料です。
• なるべく公式ドキュメントを確認していますが、間違いがあったらごめんなさい(><
• ご意見、コメントなどについては、JAWS-UG CLI専門支部まで是非。 • 本資料はJAWS-UG CLI専門支部 #31 Lambda入門での発表資料です。
Operation Lab運用設計ラボ
What’s Lambda
• Amazonが提供するコンピューティングサービス
• サーバレスであることが最大の特徴
• AWSのプロダクト間をつなぐ糊みたいなもの
• 今のところAWS独自の機能 (らしい)
• 課金 =リクエスト回数 + 100ms単位 + メモリ量
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コマンドの概要 (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運用設計