この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、筧(カケイ)です。
他のメンバーが作成した Serverless Framework のサービスをデプロイする機会があったのでブログにまとめます。
前提条件
- リモートリポジトリから端末にクローンできる
- デプロイ先の AWS 環境に対して、デプロイに必要なアクセス権限を持っている
- コードは Python で書かれており、パッケージ管理には Pipenv を利用
- 端末に Serverless Framework をインストール済み
- 端末に Pipenv をインストール済み
やってみた
以下の流れで作業します。
- リモートリポジトリからクローン
- プラグインインストール
- パッケージインストール
- Python の Version 設定
- デプロイ
1.リモートリポジトリからクローン
リモートリポジトリから端末にクローンします。
$ git clone {URL}
$ cd {サービス名}
2.プラグインインストール
インストールが必要なプラグインを確認します。 例えば package.json を確認します。
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 を確認します。
Pipfile(抜粋)
[packages]
boto3 = "*"
requests = "*"
必要なパッケージをインストールします。
$ pipenv install requests boto3
4.Python の Version 設定
デプロイ時の Python の Version を確認します。 例えば serverless.yml の runtime を確認して、端末側のバージョンも合わせます。
serverless.yml(抜粋)
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/{ユーザ名}:{ワンタイムパスワード}
エラーなく終了しており、サービスがちゃんと動いていればデプロイ完了です。お疲れ様でした!
終わりに
他のメンバーが開発したサービスを自分でデプロイするのは緊張しますよね。 前提が絞られていて恐縮ですが、皆さんの役にも立つと幸いです。
以上、 筧(カケイ) がお送りしました。それでは皆さん良い一日を!