elastic beanstalkを使ってダウンタイムなしの更新を実現するときはswap urlを使うのが一般的なようです。
参考: Deploying a new Application Version with Zero Downtime
しかし、eb deployコマンドはurlではなく環境名を指定します。
swapをすると当然、特定のurlに関連付けられた環境が入れ替わります。
人間の関心はelastic beanstalkの環境よりもurlのほうに向いているので(本番、staging用のurlなど)、更新したいurlがどちらの環境に向いているかelastic beanstalkコンソールなどから確認する手間がありました。
そこで、
aws elasticbeanstalk describe-environments --application-name $APP_NAME --environment-names $ENV1 $ENV2 | python -c "exec(\"import json,sys\\nobj=json.load(sys.stdin)\\nfor env in obj['Environments']:\\n if env['CNAME'] == '$URL': print env['EnvironmentName']\")"
eb deploy $(上記のやつ)
という感じにしました。