LoginSignup
2
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-08-25

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

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3