他メンバーが開発した Serverless Framework のサービスをデプロイする
こんにちは、筧(カケイ)です。
他のメンバーが作成した Serverless Framework のサービスをデプロイする機会があったのでブログにまとめます。
前提条件
- リモートリポジトリから端末にクローンできる
- デプロイ先の AWS 環境に対して、デプロイに必要なアクセス権限を持っている
- コードは Python で書かれており、パッケージ管理には Pipenv を利用
- 端末に Serverless Framework をインストール済み
- 端末に Pipenv をインストール済み
やってみた
以下の流れで作業します。
- リモートリポジトリからクローン
- プラグインインストール
- パッケージインストール
- Python の Version 設定
- デプロイ
1.リモートリポジトリからクローン
リモートリポジトリから端末にクローンします。
$ git clone {URL} $ cd {サービス名}
2.プラグインインストール
インストールが必要なプラグインを確認します。 例えば package.json を確認します。
{ {中略} "devDependencies": { "serverless-python-requirements": "^5.1.0", "serverless-step-functions": "^2.19.0" } }
必要なプラグインをインストールします。
$ sls plugin install -n serverless-python-requirements --stage dev && sls plugin install -n serverless-step-functions --stage dev
3.パッケージインストール
インストールが必要なパッケージを確認します。 例えば Pipfile を確認します。
[packages] boto3 = "*" requests = "*"
必要なパッケージをインストールします。
$ pipenv install requests boto3
4.Python の Version 設定
デプロイ時の Python の Version を確認します。 例えば serverless.yml の runtime を確認して、端末側のバージョンも合わせます。
provider: name: aws runtime: python3.8
以下は Python 3.8 にする場合です。
$ python -V $ pipenv --python 3.8
5.デプロイ
サービスをデプロイします。 以下ではデプロイ先の AWS アカウントに assume role してからデプロイしています。 MFA を設定している場合は、MFA が聞かれたタイミングで入力ください。
$ export AWS_SDK_LOAD_CONFIG=1 export AWS_PROFILE={プロファイル} $ aws sts get-caller-identity $ sls deploy --stage {ステージ名} {中略} Enter MFA code for arn:aws:iam::{AWS アカウント ID}:mfa/{ユーザ名}:{ワンタイムパスワード}
エラーなく終了しており、サービスがちゃんと動いていればデプロイ完了です。お疲れ様でした!
終わりに
他のメンバーが開発したサービスを自分でデプロイするのは緊張しますよね。 前提が絞られていて恐縮ですが、皆さんの役にも立つと幸いです。
以上、 筧(カケイ) がお送りしました。それでは皆さん良い一日を!