Beanstalk基本コマンドとデプロイ


[前回](https://qiita.com/Manjiii/items/6b7490fa2ac68b1a6523)
(Beanstalk基本コマンドとサンプル作成)の続き
アプリケーション上にgit上の既存ソースをデプロイする。

## リリースディレクトリを作成

これは通常の通り

    mkdir release
    cd release
    git clone XXXXXXXXXXXXXXXX
    # 必要あればブランチに切り替え
    git checkout release


## 使用するリージョンとアプリケーションを設定

eb init コマンドで設定する

    $eb init --profile manjiii

    Select a default region
    1) us-east-1 : US East (N. Virginia)
    2) us-west-1 : US West (N. California)
    3) us-west-2 : US West (Oregon)
    4) eu-west-1 : EU (Ireland)
    5) eu-central-1 : EU (Frankfurt)
    6) ap-south-1 : Asia Pacific (Mumbai)
    7) ap-southeast-1 : Asia Pacific (Singapore)
    8) ap-southeast-2 : Asia Pacific (Sydney)
    9) ap-northeast-1 : Asia Pacific (Tokyo)
    10) ap-northeast-2 : Asia Pacific (Seoul)
    11) sa-east-1 : South America (Sao Paulo)
    12) cn-north-1 : China (Beijing)
    13) cn-northwest-1 : China (Ningxia)
    14) us-east-2 : US East (Ohio)
    15) ca-central-1 : Canada (Central)
    16) eu-west-2 : EU (London)
    17) eu-west-3 : EU (Paris)
    18) eu-north-1 : EU (Stockholm)
    (default is 3):9 #<- 東京リージョンに作成するので9

    Select an application to use
    1) manjiii-app
    2) [ Create new Application ]
    (default is 2): #<- manjiii-appアプリケーション上に作成したいので1
    Do you wish to continue with CodeCommit? (y/N) (default is n): n


## 既存の環境を念の為確認

サンプルの中ではmanjiiiアプリケーション上に現在manjiii-cat環境が作成されています

eb list コマンドで確認

    $ eb list -av
    Region: ap-northeast-1
    Application: manjiii
        Environments: 1
            * manjiii-cat : ['i-XXXXXXXXXXXX'] #<- 既にある環境がデフォルトになっている

eb status コマンドでも確認

    $ eb status
    Environment details for: manjiii-cat
    Application name: manjiii
    Region: ap-northeast-1
    Deployed Version: app-before_model_refactor-XXXXXXXXXXXXXXX
    Environment ID: e-XXXXXXXXXXXXXXX
    Platform: arn:aws:elasticbeanstalk:ap-northeast-1::platform/Python 3.6 running on 64bit Amazon Linux/2.8.3
    Tier: WebServer-Standard-1.0
    CNAME: XXXXXXXXXXX.ap-northeast-1.elasticbeanstalk.com
    Updated: 2019-05-10 16:40:09.582000+00:00
    Status: Ready
    Health: Green


## 既存環境の設定を保存（必要あれば）
既存の環境と同じ設定を利用したいけどまだローカルもしくはs3に保存されていない場合に実施

 eb config listで確認

    $ eb config list
    prod1_XXXX
    prod1_YYYY <-現在の設定された設定が（作成されていれば）表示される

既存の環境をeb config saveで保存、s3にアップロード

    $ eb config save --cfg maniii-cat #<- maniii-cat環境の設定をダウンロードする

    Configuration saved at: [現在のディレクトリ]/.elasticbeanstalk/saved_configs/manjiii-cat.cfg.yml

    # 念の為確認
    $ tree -L 2  .elasticbeanstalk/
    .elasticbeanstalk/
    ├── config.yml
    └── saved_configs
        └── manjiii-cat.cfg.yml
    
    #　必要あればmanjiii-cat.cfg.ymlを編集

    # S3にアップロード
    $ eb config put manjiii-cat

    # 確認
    $ eb config list
    prod1_XXXX
    manjiii-cat # <-追加されている
    prod1_YYYY

## 環境の作成

eb createで作成。既存の保存された設定を使用する場合は--cfgオプションを使用

※cfgに指定した設定情報はローカル→s3の順番に検索される
詳しくは
[公式](https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/eb3-create.html)
を参照して下さい。（ってそもそもここに書いてあるコマンド全部書いてあるんですけどね(´ε｀；)）

デフォルトで良ければ指定無し

    $ eb create --cfg manjiii-cat #<-先程保存した設定を利用
    Enter Environment Name
    (default is napaeae-dev): manjiii-bird #<- 今回作成する環境名を指定
    Enter DNS CNAME prefix
    (default is prod-bird): manjiii-bird-XXXXXX #<- URLのプリフィックスを指定

    Select a load balancer type
    1) classic
    2) application
    3) network
    (default is 2): 2 #<- applicationバランサーを使用するので2
    Creating application version archive "app-before_mod....
    ....
    # 環境の作成が始まる
    
## エラーが出るとき

環境作成時のログに出ている場合もあるが、エラーなどで失敗する場合、以下のコマンドなどで確認する

    $ eb logs

もしくは

    $ eb ssh

で環境に入って、

    /var/log/eb-activity.log

等ログを確認する。


## 確認
eb open コマンドでブラウザで確認

    $ eb open

現在のディレクトリが新しく作成した環境に向いていることを確認
（特に作成失敗している場合など既存のものに向いている場合があるので特に注意）

    $ eb list
    * manjiii-bird #<- 「*」をよく確認
    manjiii-cat

## デプロイ
※上記作成時に行った時にデプロイされています。今後リリースしたい時に実行。


デプロイ対象となるのは
- 既存のブランチにコミットされている
- ステージ煮上げているものを対象に含めたい場合は「--staged」
なので注意（ローカルで編集しただけだと対象にならない）

また、安全を期すために対象環境を指定するのが吉

    $ eb list #<- 指定するにもかかわらずやっぱり確認
    * manjiii-bird #<- 「*」をよく確認
    manjiii-cat
    $ eb deploy manjiii-bird

  
　
 
一旦ここまで。