近頃は brefphp/bref を使い、 AWS Lambda でサーバレスな PHP アプリケーションを動かす、なんかもしています。

この brefphp/bref はデプロイに Serverless Framework を採用しているのですが、今回はここで調べたことをまとめます。

やりたかったこと

Stage の選択時にいろいろと切り替えたい。


設定関係は serverless.yml に基本書きますね。

そして、開発環境でチェックしたものを本番デプロイする場合などは次のようにオプションで Stage を指定します。

1serverless deploy --stage=prod

オペレーションの誤操作に備えて、「開発と本番ではプロファイルを分けている」というのが理想で、これを素直にやると Profile オプションを追加する感じですね。

1serverless deploy --stage=prod --aws-profile prodProfile

しかしながら、これを都度手動でやったりすると、やっぱりどこかでミスをする懸念が残りますよね。

ですから、指定した Stage に従って、他のパラメーターも差し替え、極力オプションを少なくしたかった、というのがやりたかったことです。

やったこと

Serverless Framework のドキュメントに、しっかり説明がありました。

serverless docs
AWS - Credentials - Per Stage Profiles
https://serverless.com/framework/docs/providers/aws/guide/credentials#per-stage-profiles

ですね。

コードを上記から引用します。

 1service: new-service
 2provider:
 3  name: aws
 4  stage: ${opt:stage, self:custom.defaultStage}
 5  profile: ${self:custom.profiles.${self:provider.stage}}
 6custom:
 7  defaultStage: dev
 8  profiles:
 9    dev: devProfile
10    prod: prodProfile
  • カスタムフィールドで Stage 別に Profile を入れ
  • 指定した Stage にしたがって Profile が動的に変わるように

している感じですね。

ミスったときも、冷静に

上記と同様の方法で Region なども Stage と連動させることができます。

私は実際に Stage x Region を連動させたのですが、デプロイされていないなと思ったら、最初設定をミスしていて、デフォルトの us-east-1 にデプロイされてました。

そんなときも、スッと remove すれば打てば取り下げができますので、冷静に対処することが肝心です。

もちろん、オプションは変更せずに

1serverless deploy --stage=prod

を打ってミスしたのならば

1serverless remove --stage=prod

で打ち消す感じですね。


Serverless Framework、 Lambda 、すごく楽しいです。