ServerlessFrameworkでデプロイ時に変数を渡す方法
今回作るもの
はい👻
サーバーレスフレームワークを使って、 開発環境(dev)と本番環境(prd)をデプロイ!! デプロイのおまけとして、環境毎のS3も同時作成します。
です。
で、デプロイ方法が下記な感じ
デプロイする環境 | コマンド |
---|---|
prd | $ sls deploy --zzzz prd |
dev | $ sls deploy --zzzz dev または$ sls deploy |
zzzzは適当な変数名です。
私的に説明時に変数名をいい感じのつけてしまうと、かえってわかりにくくなる、、、とおもってます笑
例えばstageという変数にするとー、、、
$ sls deploy --stage prd
になるますが、このstage
が公式にあるオプションなのか、作ったオプションなのか、私には直感的にわかりにくく感じたのです(泣)
前提
- 作業できるAWSの環境を持っている
- ServerlessFrameworkが導入されている
では 作っていきましょう
まず適当なLamdaを用意します。今回はこんな感じにしました笑
def yyyyyy(event, context):
return {"statusCode": 200}
次にserverless.ymlを作ります。
service: demo-app-02
provider:
name: aws
runtime: python3.7
region: ap-northeast-1
stage: ${opt:zzzz, 'dev'}
functions:
XXXXX:
handler: XXXXX.yyyyyy
events:
- s3:
bucket: xxxxxxxxx-${self:provider.stage}-20200412
event: s3:ObjectCreated:*
ServerlessFrameworkのリファレンスに関しては公式 に投げるとします。
ここで大切なのは、この下記の部分です。
# 省略...
provider:
# 省略...
stage: ${opt:zzzz, 'dev'}
# 省略...
はい。${opt:zzzz, 'dev'}
の説明を軽くします。
${opt:zzzz}
がcliのコマンド入力時に設定したオプションの値です。
つまり$ sls deploy --zzzz XXXX
だった場合はこの場所に値XXXX
が入ってきます。
で右辺の'dev'
ですが、これはオプションzzzz
が指定されなかった場合の値です。
はい。上記2つのファイルを作って、下記な状態にして
カレントディレクトリ
├ serverless.yml
└ XXXXX.py
下記ーな感じで、コマンドをたたけばデプロイされます!
デプロイする環境 | コマンド |
---|---|
prd | $ sls deploy --zzzz prd |
dev | $ sls deploy --zzzz dev または$ sls deploy |
確認してみましょう。
はい。Lamdaの名前もS3のバケットもきちんと環境ごとに分かれました♪
こんな感じでしたね。
さくさく書きましたが、私はこれが苦手でよく調べ直します。。。
ではではお疲れさまでした!
削除方法
削除する環境 | コマンド |
---|---|
prd | $ sls remove --zzzz prd |
dev | $ sls remove --zzzz dev または$ sls remove |
余談
serverless.yml ← こいつの呼び名は何でしょうか?ちょっと調べたら見つからず。。。
ServerlessFrameworkの設定ファイル? プロパティリスト? う〜む、、、誰か知ってたら教えて下さい。。。