Serverless Framework deploy がなかなかに見づらかった話

Serverless Framework deployを実行すると、カウントアップが始まってもそれ以降何も表示されず、実行が終わらない場合があります。その時の状況の説明と求められる解決策についてまとめました。
2022.08.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

初めて Serverless Framework を使う上でつまづいた箇所があったので、他の方が同じところでつまづかないようにまとめてみました。

今回のつまづきポイントは、 Serverless Framework は作成したプロジェクトをデプロイする sls deployコマンドを使用するときのことについてです。

前提

環境

[Machine]: M1 MacbookPro

[AWS CLI v2]: aws-cli/2.7.18 Python/3.9.11 Darwin/21.3.0 exe/x86_64 prompt/off

[Serverless Framework]: Framework Core: 3.21.0 Plugin: 6.2.2 SDK: 4.3.2

AWSアカウントの設定

サーバーレスダッシュボードは用いず、ローカルのAWS認証情報を使用します。

awsの認証情報については以下の通り.aws/ディレクトリに登録してあります。

.aws/config

[default]
region=ap-northeast-1
output=json

[profile <profile_name>]
region=ap-northeast-1
mfa_serial=arn:aws:iam::***********:mfa/******
role_arn=arn:aws:iam::**********:role/******
source_profile=default

.aws/credentials

[default]
aws_access_key_id=****************
aws_secret_access_key=****************

今回接続するアカウントはdefaultのものではないので環境変数でプロファイルを指定しておきます。

# ロード時に config ファイルを自動的に検索
$ export AWS_SDK_LOAD_CONFIG=1 

# プロファイルの指定
$ export AWS_PROFILE=<profile_name>

問題

以下が、ターミナルでsls deploy --verboseコマンドを打った後の出力です。

Deploying <project-name> to stage dev (ap-northeast-1)

Enter MFA code for <mfa_serial>: Packaging
Excluding development dependencies for service package
Retrieving CloudFormation stack

 Retrieving CloudFormation stack (1s)

コマンドを打った後ここまで一気に出力されます。

最終行でカウントアップがされているので待ってみると、120s以上経っても何も表示されません

不安に思って調べてみても、「最初に行うCloudFormationのstackには時間がかかります」などと出てきます。

結論

MFAコードを打てば実行できました。

Deploying <project-name> to stage dev (ap-northeast-1)

Enter MFA code for <mfa_serial>: Packaging
Excluding development dependencies for service package
Retrieving CloudFormation stack

 Retrieving CloudFormation stack (1s)

実はターミナルにも「MFAコード入力してね」と出力されていたんです。

ただ、その行が出力されてから他の出力がなぜか続いてしまうため見逃してしまったのです。

備考

ちなみに、sls deploy listsls infoなどのコマンドを打つと

Enter MFA code for <mfa_serial>:

とだけ出力されます。

これならMFAコードを求められていることにすぐに気づくことができますね。

終わりに

以上 Serverless Framework deploy がなかなかに見づらかった話でした。

なぜsls deployコマンドだけ出力がMFAコードの入力を求める行で止まらないのか現時点ではわかりませんが、今後は気をつけてターミナルの出力を見ていきたいです。

類似ページ