logo
Home
About
Works
Blog
Contact

EB CLIを使ってAWS環境にデプロイする

2022-06-11

2022-06-11

6 min read

AWS

目次


  1. EB CLIやAWS CLIとは?
  2. AWS CLIの導入
  3. EB CLIの導入
  4. EB CLIでデプロイしてみる
  5. 余談

EB CLIやAWS CLIとは?

名前にもある通りCLI(コマンドラインインターフェース)で、AWSのサービスAWS Elastic Beanstalkの操作を行うものです。

  • AWS CLI
    • AWSの様々なサービスをCLIで操作できる
  • EB CLI
    • AWS Elastic BeanstalkをCLIで操作できる

ちなみにAWS Elastic Beanstalkとは、AWSが提供するサービスの1つで、実際のシステムを動かすための環境の管理をまとめて行ってくれるようなものです。

これらを用いることで、通常の管理画面からGUI(グラフィカルユーザインタフェース)操作しなくてもデプロイなどの処理が可能となります。 またCLIでの操作になるので、スクリプトで様々な作業を自動化したりもできます。

今回は、macOSインストールを例にご説明します。

LinuxやWindowsの場合も公式の手順でインストールすれば動くと思います。多分。。

AWS CLIの導入

基本的に公式にある手順でAWS CLIをインストールしていきます。

macOS pkgファイルをダウンロードできたら、そのファイルを実行してAWS CLIをインストールします。

インストールができたら、awsコマンドが動くか確認します。

awsコマンドの確認
$ aws --version
aws-cli/2.7.7 Python/3.9.11 Darwin/20.6.0 exe/x86_64 prompt/off

次にAWSと紐づけていきます。

※AWSの管理画面のIAMのサービスより、使用するユーザーのアクセスキーIDとシークレットキーIDを準備してください。

AWSのユーザーと紐づける
$ aws configure --profile hogehoge
AWS Access Key ID [None]: XXXXXXXXXXXXXX AWS Secret Access Key [None]: 〇〇〇〇〇〇〇〇 Default region name [None]: ap-northeast-1 Default output format [None]: json

これで紐づけたAWSのサービスを確認できます。

profileで紐付けたIAMユーザーの情報を確認
$ aws sts get-caller-identity --profile hogehoge
{ "UserId": "XXXXXXXXXXXXXX", "Account": "1234567890", "Arn": "arn:aws:iam::1234567890:user/yamada" }

EB CLIの導入

EB CLIも同様に公式にある手順でインストールしていきます。

EBCLIのインストール
$ brew update
$ brew install awsebcli
$ eb --version
EB CLI 3.14.8 (Python 3.7)

ここでPythonが入っていない方はエラーとなるので、Pythonのインストールしてから上記を実施します。

pythonコマンドの確認
$ python3 --version
Python 3.9.13

次にpipをインストールします。

pipのインストール
$ curl -O https://bootstrap.pypa.io/get-pip.py
$ python3 get-pip.py --user $ pip3 --version

パスが通っていない場合は通します。

bashの場合のパスの設定
$ vi ~/.bashrc

// .bashrcに下記を追加
export PATH=$PATH:{パス}

source ~/.bashrc

ではここからEB CLIの設定を行なっていきます。

今回は既にローカルで開発しているファイルをデプロイする設定します。

デプロイしたいファイルの設定
~test/app $ eb init --profile hogehoge
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) 19) eu-south-1 : EU (Milano) 20) ap-east-1 : Asia Pacific (Hong Kong) 21) me-south-1 : Middle East (Bahrain) 22) af-south-1 : Africa (Cape Town) (default is 3): 9 Select an application to use 1) test 2) [ Create new Application ] (default is 2): 1 Select the default environment. You can change this later by typing "eb use [environment_name]". 1) test-production 2) test-staging (default is 1): 2

これでapp以下のファイルがデプロイされます。

hogehogeは、AWS CLIのprofileで設定したものが入ります。

environmentには、staging環境をとりあえず設定しておきます。設定後、下記コマンドでenvironmentを変更することができます。

environmentを変更
$ eb use test-production

EB CLIでデプロイしてみる

ステータスを確認して、問題がなければデプロイを行います。

ステータスの確認
$ eb status
$ eb deploy -l "test_2022061101"

下記コマンドで、アップロードしたバージョン一覧を確認したり、既にデプロイしているバージョンのものをデプロイしたりすることも可能です。

ebコマンド例
$ eb appversion
$ eb deploy test_2022061001

余談

実際の仕事でもEB CLIを使ってデプロイしているのですが、少し前はローカルでzipファイルを作成して、AWS Elastic Beanstalkの管理画面からアップロードしていました。 そうすることになった理由として、アップロードできるzipファイルの大きさに制限があり、デプロイできなくなったからです。