Amazon elastic beanstalkにDjangoとRailsをデプロイして独自のDBと接続&cloudwatchでリアルタイム監視

img

共通設定

環境の設定

  • eb printenvで環境変数表示
  • eb setenv key=value で設定
  • .ebextensions/01-somesetting.config でデプロイ時の設定追加。インデックス順に反映される
  • git cloneがリモート環境でできるように yumでgitを入れておく
  • migration実行コマンドはcontainer_commands: に設定
container_commands:
  01_migrate:
    command: "python manage.py migrate"
    leader_only: true
  02_collectstatic:
    command: "python manage.py collectstatic --noinput"
packages:
  yum:
    git: []
    mysql-server: []
    mysql: []

Django の場合

option_settings:
  "aws:elasticbeanstalk:application:environment":
    DJANGO_SETTINGS_MODULE: "app_django.settings"
    PYTHONPATH: "$PYTHONPATH"
  "aws:elasticbeanstalk:container:python":
    WSGIPath: "app_django/wsgi.py"
    StaticFiles: "/static/=www/static/"

Railsの設定

基本設定

.elasticbeanstalk/config.yml

global:
  application_name: app_rails
  default_ec2_keyname: app
  default_platform: arn:aws:elasticbeanstalk:ap-northeast-1::platform/Puma with Ruby
    2.5 running on 64bit Amazon Linux/2.7.1
  default_region: ap-northeast-1
  include_git_submodules: true
  instance_profile: null
  platform_name: null
  platform_version: null
  profile: null
  sc: git
  workspace_type: Application
packages:
  yum:
    git: []

yarnを入れてwebpack動くように

commands:
  02_install_yarn:
    command: "sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo && curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash - && sudo yum install yarn -y"

独自のDBと接続

以下の環境変数を設定するだけ。

RDS_HOSTNAME – DB インスタンスのホスト名。


RDS_PORT – DB インスタンスが接続を許可するポート。デフォルト値は DB エンジンによって異なります。


RDS_DB_NAME – データベース名、ebdb。


RDS_USERNAME – お客様のデータベース用に設定したユーザー名。


RDS_PASSWORD – お客様のデータベース用に設定したパスワード。

cloudwatchで監視

 eb logs -cw enable             

でOK