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

2022-06-11

2022-06-11

6 min read

AWS

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 --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 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のサービスを確認できます。

$ aws sts get-caller-identity --profile hogehoge
{
    "UserId": "XXXXXXXXXXXXXX",
    "Account": "1234567890",
    "Arn": "arn:aws:iam::1234567890:user/yamada"
}

EB CLIの導入

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

$ brew update
$ brew install awsebcli
$ eb --version
EB CLI 3.14.8 (Python 3.7)

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

$ python3 --version
Python 3.9.13

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

$ curl -O <https://bootstrap.pypa.io/get-pip.py>
$ python3 get-pip.py --user
$ pip3 --version

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

$ 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を変更することができます。

$ eb use test-production

EB CLIでデプロイしてみる

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

$ eb status
$ eb deploy -l "test_2022061101"

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

$ eb appversion
$ eb deploy -l "test_2022061001"

余談

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