想ひ出のへっぽこBlogⅡ from35

~ 自身の備忘録および学習促進のためにブログります。~

想ひ出29: AWS/Elastic Beanstalkに入門する/2

f:id:moqrin3:20190129001508p:plain

おはようございます、moqrinです。

前回の続きです。

今回のテーマはこちらです。

ElasticBeanstalkでLaravelアプリケーションをRDSと接続して設定する

以下、コンソールベースでゴシゴシ作成するパターンと、コマンドで叩いて作成するパターンで進めます。(途中、ズルしてコンソールも使います。。)

目次

1. ElasticBeanstalkでLaravelアプリケーションをRDSと接続して設定する(コンソールベース)

2. ElasticBeanstalkでLaravelアプリケーションをRDSと接続して設定する(EB CLIベース)

3. 宿題

4. オマケ: EB CLIのインストール


1. ElasticBeanstalkでLaravelアプリケーションをRDSと接続して設定する(コンソールベース)

それでは進めていきます。なお、RDSにMySQLのDBがあることが前提です。

① アプリケーションの作成

f:id:moqrin3:20190129002216p:plain

f:id:moqrin3:20190129002248p:plain

PHPで環境を作成

f:id:moqrin3:20190129002313p:plain

③ カスタム設定

f:id:moqrin3:20190129003337p:plain

ネットワークをカスタムVPCにします。

f:id:moqrin3:20190129003943p:plain

色々便利なので、キーペアを設定しておきましょう。

f:id:moqrin3:20190129003323p:plain

環境変数の追加やドキュメントルートを設定しておきましょう。

f:id:moqrin3:20190129003625p:plain

f:id:moqrin3:20190129003924p:plain

そしたら作成します。

f:id:moqrin3:20190129004052p:plain

思いっきりエラー出てますが、無視していいです。

④ セキュリティグループの編集

RDSへ接続するセキュリティグループ(以下SG)にEBのSGを追加します。

f:id:moqrin3:20190129003911p:plain

⑤ プロジェクト以下、public/index.phpに接続の情報を追記する

DB接続がちゃんと出来ているか確認します。

f:id:moqrin3:20190129004112p:plain

⑥vender以外の内容をzipにしてアップロードする

※ なお、ディレクトリをそのままzipするとパスがおかしくなっちゃうので注意。

f:id:moqrin3:20190129004740p:plain

f:id:moqrin3:20190129004209p:plain

OKね.

2. ElasticBeanstalkでLaravelアプリケーションをRDSと接続して設定する(EB CLIベース)

次は、.ebextensionsを利用してみたいため、Migrationできるようなアプリケーションで実践します。

こちらを素材として対応させて頂きます。

なお、RDSでMySQLが起動していること、EB CLIをインストールしていることが前提です。

環境変数やドキュメントルート設定のファイルを作成

ソースルートで.ebextensionsディレクトリと設定ファイルを作成しましょう。

mkdir .ebextensions && touch {environmentvariables,php-settings}.config

ファイルを編集しましょう。

# vim .ebextensions/environmentvariables.config

option_settings:
  - option_name: DB_USERNAME
    value: YourDBUserName
  - option_name: DB_PASSWORD
    value: YourDBPassword
  - option_name: DB_HOST
    value: YourDBEndPointURL
  - option_name: DB_DATABASE
    value: YourDBName
# vim .ebextensions/php-settings.config

option_settings:
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public

Migrationコマンドを叩くmigration.configファイルを作成しましょう。

# vim .ebextensions/migration.config

container_commands:
  key generate:
    command: "php artisan key:generate"
  migration:
    command: "php artisan migrate"

そのままプロジェクトディレクトリでPHP7.2のプラットフォームでEBアプリケーションを作成しましょう。

eb init LaravelApps -p php-7.2  --region ap-northeast-1 --keyname YOUR_KEY_NAME

カスタムVPC内にシングル構成、publicIPを持ったt2.microインスタンスで環境を作成します。

eb create PassportApp --vpc.id YOUR_VPC_ID --vpc.publicip --vpc.ec2subnets YOUR_PUBLIC_SUBNET_ID -i t2.micro --vpc.dbsubnets YOUR_DB_SUBNET_ID --single

環境が作成されたら、RDSへの接続を許可するSGに、作成されたインスタンスに付与されたSGを追加します。(環境がエラーだって怒ってますが無視します。)

f:id:moqrin3:20190129005030p:plain

f:id:moqrin3:20190129005112p:plain

(eb deployでもいいのだけども)とりあえず、Vender以外のソースをzipにしてアップロードします。

はい、成功

f:id:moqrin3:20190129005008p:plain

じゃ見に行きましょう。ちなみに、飛び先は404なので、/passportsを飛び先につけます。

/passports/createで新規作成です。作成します。

f:id:moqrin3:20190129005152p:plain

f:id:moqrin3:20190129005209p:plain

はい、ちゃんとDB接続もうまく動いているっぽいですね。

何かあったらこの辺を確認します。

tail -f /var/log/eb-activity.log

クリーンアップする際は、RDSへのSGからEBのSGを削除してから環境を削除 -> アプリケーション削除。

eb terminate

3. 宿題

色々と雑。。

CodeCommitとの連携とかやってみる。

Flaskアプリケーションでの対応が何かうまくいかなかったので再度トライするー。

4. オマケ: EB CLIのインストール

brewでのインストールがうまくいかず。。。

brew update
brew install awsebcli 

pipで対応してもエラー出まくりで、何だヨこれは・・・と困惑していた。。 これでうまくいった。以前のバージョンが邪魔してたっぽい。

pip uninstall awsebcli
pip3 uninstall awsebcli
pip3 install awsebcli

How to fix eb command not found – Mac Users

http://www.derricksherrill.com/aws/eb-command-not-found/


参考:

Elastic Beanstalk への Laravel アプリケーションのデプロイ

設定ファイル (.ebextensions) による高度な環境のカスタマイズ

Laravel 5.6 CRUD tutorial with example

CodeCommit のGitリポジトリにIAM Roleで接続する

aws:elasticbeanstalk:container:php:phpini 名前空間