Edited at

Travis CIからLambda Functionをシュッとデプロイする

More than 1 year has passed since last update.


TL;DR


  • やりかた


    1. IAMつくる

    2. .travis.yamldeploy.providerlambdaにする

    3. 設定を適当に書く

    4. pushする

    5. 便利


      • がんばって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つ




  • access_key_idsecret_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が捗る




trigger設定する

雑でいいならweb consoleから適当に.CloudWatch Events - Scheduleとか使えばcronっぽいアレもシュッと作れちゃう.


References