着物アプリのCognitoUserPoolで利用するLambdaを管理するプロジェクト
以下の環境変数を設定して下さい。
direnv/direnv 等を利用するのがオススメです。
export DEPLOY_STAGE=デプロイターゲット(.e.g. stg, prod)
export TARGET_USER_POOL_ID=ターゲットとなるUserPoolのID
export TRIGGER_USER_POOL_NAME=ターゲットとなるUserPoolの名前
export REGION=AWSのリージョン(.e.g. ap-northeast-1)
export KIMONO_APP_FRONTEND_URL=nekochans/kimono-app-frontendのURL(.e.g http://localhost:3100)
以下のように 名前付きプロファイル を作成して下さい。
~/.aws/credentials
[kimono-app-stg]
aws_access_key_id=YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key=YOUR_AWS_SECRET_ACCESS_KEY
無論このプロファイル名は好きな名前に変えてもらって問題ありません。
ただ、その場合は一時的に serverless.yml
内の custom.profiles
を全て修正して下さい。
go1.15
をインストールします。
マイナーバージョンのアップデートを積極的に行っていく方針なので、ローカルで複数のGoのバージョンを共存出来ると便利です。
そのため anyenv と goenv の利用をオススメします。
最新安定版をインストールします。
npm ci
を実行してpackageをインストールします。
Dockerコンテナを起動します。
テストの実行やLintの実行等は基本的にコンテナ内で実行します。
docker-compose up --build -d
docker-compose down
docker-compose down --rmi all --volumes --remove-orphans
make deploy
を実行すると build
, deploy
が実行されます。
deployは Serverless Framework を利用しています。
このツールを利用すると、既存のCognitoUserPoolに対してLambda関数をアタッチ出来るので、その機能を利用する事が主な目的です。
それ以外にも公式の AWS SAM と比較して痒いところに手が届くので、その点も良いと思います。
make remove
を実行します。
docker-compose exec go sh
でGoのコンテナに入ります。
Goのコンテナ内で make test
を実行します。
もしくはホストPC上で docker-compose exec go make test
を実行しても良いです。
make format
Effective Go に準拠する。(そのうちlinter入れます)
- ファイル名はスネークケース
- ディレクトリ名は基本全て小文字、単語の区切りが必要な場合のみケバブケースを利用
- package名は全てアルファベットの小文字のみ使用可能、ただし
_test
はテスト用packageに用いる事があるので許可
Cognitoをカスタマイズする為のLambdaは以下の種類が存在します。
- カスタム認証フロー
- 認証イベント
- サインアップ
- メッセージ
- トークンの作成
詳しくは こちら を見て下さい。
また serverless.yml
にトリガーにCognitoのイベントを設定する必要があります。
それに関しては下記のドキュメントが参考になります。