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

  • 1
    いいね
  • 0
    コメント

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