note 2016-06-18T13:23:05+09:00

kanazawa.rb meetup 46に参加した

kanazawa.rb meetup 46 に参加し、AWS Lambda 管理ツール lamma を試した際のメモ。

lamma の概要

Ruby 製のシンプルな Lambda 管理ツール。

Pros

  • 1ディレクトリ = 1関数の構成でわかりやすい
  • 自動で zip 化してデプロイしてくれる

Cons

  • nodejs, python2.7 のみ対応(当時)
  • 関数の削除機能が弱い

セットアップ手順

Docker 環境で動かす場合の構成:

# Gemfile
source "https://rubygems.org"
gem "lamma"
FROM ruby
COPY Gemfile /var/app/Gemfile
WORKDIR /var/app
RUN bundle install
RUN apt-get update && apt-get install -y zip  # zip が必要
# docker-compose.yml
version: "2"
services:
  app:
    build: .
    command: sleep 3600
    environment:
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      AWS_REGION: ap-northeast-1 # 必須
    volumes:
      - ./scripts:/var/app/scripts

ハマりポイント

  • AWS_REGION を渡さないと NoMethodError が発生する
  • Dockerfile に zip を入れないとデプロイ時にエラーになる
  • IAM Role は lamma.confAWS_LAMBDA_IAM_ROLE 環境変数で指定が必要
export AWS_LAMBDA_IAM_ROLE=arn:aws:iam::000000000000:role/lambda_basic_execution
lamma deploy test

LT メモ

  • shellcheck: シェルスクリプトの文法チェックツール。各環境でパッケージとして提供されている
  • shUnit2: 対応シェルが幅広く、ダウンロードするだけで使えるユニットテストフレームワーク
  • Dokku: Heroku ライクな PaaS。nginx でコンテナにルーティングし、Heroku の buildpacks も使える