TL;DR
- やりかた
- IAMつくる
-
.travis.yaml
のdeploy.provider
をlambda
にする - 設定を適当に書く
- pushする
- 便利
- がんばってzipしてuploadして…みたいなのがないから便利
- Lambdaだとcron的な定期処理も雑に扱えるし安いから便利
- さんぷる: izumin5210/kusa-store
- GitHubのユーザページから草状況を拾ってS3に保存するやつ
やりかた
IAM Roleつくる
マジメにやらないといけないやつならCloudFormationとか使ってイイカンジにやる(「AWS Lambdaのデプロイフロー管理 - Qiita」が参考になる).
雑でいいならAWSのweb consoleから雑に作る.
最低限だとたぶん以下の5つが許可されてればOK.DynamoDBやS3等を利用する場合は適宜追加しておく.
lambda:createFunction
lambda:updateFunctionCode
lambda:updateFunctionConfiguration
lambda:deleteFunction
iam:PassRole
.travis.yml
書く
YOUR_AWS_*
を自分のやつに置き換えるだけ.
language: node_js
node_js:
- "4.3.2"
deploy:
provider: lambda
function_name: YOUR_LAMBDA_FUNCTION_NAME
region: ap-northeast-1
module_name: index
handler_name: handler
runtime: nodejs4.3
role: YOUR_AWS_ROLE
access_key_id: YOUR_AWS_ACCESS_KEY_ID
secret_access_key: YOUR_AWS_SECRET_ACCESS_KEY
注意点
-
requiredなのは以下3つ
-
role
: IAM Role -
function_name
: lambda functionの名前 -
handler_name
: exportしてるhandler functionの名前- Travis CIのドキュメント見て
index.handler
とか書いちゃうとindex.index.handler
とかにされてつらくなる - https://github.com/travis-ci/dpl/blob/v1.8.18/lib/dpl/provider/lambda.rb#L47-L52
- Travis CIのドキュメント見て
-
-
access_key_id
やsecret_access_key
も実質required- ベタ書きするのは流石にまずいので,Travis CLIのencryptionを利用して暗号化しておく
- (roleって暗号化したほうがいいのかな?)
-
region
: デフォルトはus-east-1
-
module_name
: エントリポイントになる.js
ファイルの名前? -
runtime
: デフォルトnodejs
だが,これは0.10.12になる- Node.jsで書きたいなら
nodejs4.3
にすべき - Travis CIのNode.js(
node_js
)もあわせて4.3.2
にしとくとlintやtestが捗る
- Node.jsで書きたいなら
trigger設定する
雑でいいならweb consoleから適当に.CloudWatch Events - Schedule
とか使えばcronっぽいアレもシュッと作れちゃう.