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:createFunctionlambda:updateFunctionCodelambda:updateFunctionConfigurationlambda:deleteFunctioniam: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っぽいアレもシュッと作れちゃう.