あゝお腹いっぱい、次なに食べよ

iPad proで機械学習したりAWSしたり

既存の Lambdaを apex に移行

お疲れ様です、ししなみです 既存の なーんにもデプロイフローが無いλを apexでデプロイするプロジェクトについて 最低限の手順を共有します。

普通に apex lambda で 調べると、 apex init から始まりますが これやるとIAMロール作られちゃったり 後が面倒なので、こっちでお願いします。

apex をインストール

$ curl https://raw.githubusercontent.com/apex/apex/master/install.sh | sh

プロジェクトフォルダ作ります

GITは作り終わってるはずなので git から 取得してください。

git clone ssh://hurryup_github_ni_shitai.backlog.jp/git/hoge.git

必須ファイル 作成

ディレクトリ直下に functions フォルダと project.json つくってください

$ mkdir hoge/functions

$ echo '{"name":"hoge", "handler":"lambda_function.lambda_handler"}' > hoge/project.json

project.json の name について

lambdaの関数名が name + functionname になるので、既存に上書きしたい場合はなんかうまいこと考えてください。

lambda_function.py とか移動

lambda関数名に合わせてディレクトリ作って functions の下に 移動してください 上にも書きましたが、ちゃんと空気読んで プロジェクト名は抜いてください

$ cd hoge
$ mv src functions/put_s3

こんな構造になってるはず

 ~/project/hoge $  tree   
├── functions
│   └── put_s3
│       ├── lambad_function.py
│       └── vendor (内容略)
└── project.json

function.json 作成

runtime と memory と timeout 指定するファイル作ります

~/project/hoge $ cat functions/put_s3/funtison.json
{
  "runtime": "python3.6",
  "memory": 128,
  "timeout": 10
}

deploy します

$ apex deploy put_s3

とりあえずこれで 初期設定完了してるので 確認してください。

hoge_put_s3

って名前のλ関数ができているはずです。

続いて、STGとプロダクションレベルの設定いきます

λ関数ごと分離する場合

project.stg.json と project.prod.json 作成します

$ cat project.stg.json
{
  "name": "STG-hoge"
}

$ cat project.prod.json
{
  "name": "PROD-hoge"
}

# stgリリース
$ apex deploy put_s3 --env stg

# prod リリース
$ apex deploy put_s3 --env prod

alias で区別させる場合

$ apex deploy put_s3 --alias stg
$ apex deploy put_s3 --alias prod

alias で区別して なおかつ メモリ量とか変更する場合

funtison.stg.json を作成

$ cat functions/put_s3/funtison.stg.json
{
  "runtime": "python3.6",
  "memory": 1024,
  "timeout": 30
}

$ apex deploy put_s3 --alias stg --env stg

環境変数の指定

project.json でも function.json でも好きな方でいいので

  "environment": {
    "TABLE": "hoge-table"
  }

を追加してください

例えば

$ cat functions/put_s3/funtison.stg.json
{
  "runtime": "python3.6",
  "memory": 1024,
  "timeout": 30,
  "environment": {
    "TABLE": "stg-hoge-table"
  }
}

$ cat functions/put_s3/funtison.prod.json
{
  "runtime": "python3.6",
  "memory": 1024,
  "timeout": 30,
  "environment": {
    "TABLE": "hoge-table"
  }
}

ちなみに、とっとこSAM太郎は環境変数を増減させた時 よくわからないエラー吐くので、時間ないし別の機会で。

以上、よろしくお願いします。