eb deploy には --nohang オプションがある


Elastic Beanstalk の CLI で使える eb deploy コマンド には --nohang オプションがあります。現時点ではなぜかドキュメントに書かれていないオプションですが、ヘルプに書かれています。

$ eb --version
EB CLI 3.20.2 (Python 3.7.2)

$ eb deploy --help
usage: eb deploy <environment_name> [options ...]

Deploys your source code to the environment.

positional arguments:
  environment_name      environment name

optional arguments:
  -h, --help            show this help message and exit
  --debug               toggle debug output
  --quiet               suppress all output
  -v, --verbose         toggle verbose output
  --profile PROFILE     use a specific profile from your credential file
  -r REGION, --region REGION
                        use a specific region
  --no-verify-ssl       don't verify AWS SSL certificates
  --modules [MODULES [MODULES ...]]
                        modules to deploy
  -g ENV_GROUP_SUFFIX, --env-group-suffix ENV_GROUP_SUFFIX
                        group suffix
  --version VERSION     existing version label to deploy
  -l LABEL, --label LABEL
                        label name which version will be given
  -m MESSAGE, --message MESSAGE
                        description for version
  -nh, --nohang         return immediately, do not wait for deploy to be
  --staged              deploy files staged in git rather than the HEAD commit
  --timeout TIMEOUT     timeout period in minutes
  --source SOURCE       source of code to deploy directly; example
  -p, --process         enable preprocessing of the application version

--nohang オプションを指定せずに実行すると、Ctrl+C で抜けない限り、デプロイが完了するかタイムアウトするまで待つことになります。

$ eb deploy environment_name -l label
WARNING: Deploying a previously deployed commit.
2022-01-25 08:54:10    INFO    Environment update is starting.
2022-01-25 08:54:16    INFO    Deploying new version to instance(s).
-- Events -- (safe to Ctrl+C) Use "eb abort" to cancel the command.

一方 --nohang オプションを指定して実行すると、すぐにコマンド入力待ちの状態に戻ります。デプロイが成功したかどうかは別途確認する必要がありますが、CI/CD でデプロイを実行する場合に便利です。

$ eb deploy environment_name -l label --nohang