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.confかAWS_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 も使える