2017年4月19日水曜日

Elastic Beanstalkで開発環境はbasic認証をかけ、本番ではかけないっていうことをやる的なお話

  • このエントリーをはてなブックマークに追加

開発をしていると普通はdevelopmentとproductionみたいな感じをするわけで。
もちろんそうするとElastic Beanstalkも環境を二つ用意するけど、ソースは共通なわけで。
だけどソースが共通であるとdevelopmentだけにbasic認証をかけるというのが難しくなってくる。

なので今回はそれを解決するために、.ebextensionsにproject.configをおいてやってみよう的なお話をば。

files:
  "/tmp/deployment/create_basic_auth.sh":
    mode: "000755"
    content: |
      if [ "$RACK_ENV" == "development" ]; then
        DIR="\\nOptions FollowSymLinks\\nAllowOverride All\\nDirectoryIndex index.html index.php\\nAuthUserFile /etc/httpd/.htpasswd\\nAuthName \"Please enter your ID and password\"\\nAuthType Basic\\nRequire valid-user\\n"
        sed -i -e "s|#### End of AWS Settings ####|$DIR|" /etc/httpd/conf/httpd.conf
      fi

container_commands:
  01create_htpasswd:
    command: "htpasswd -nb username password > /etc/httpd/.htpasswd"
  02ifdevelopment:
    command: ". /tmp/deployment/create_basic_auth.sh"
  03ifdevelopment:
    command: "sudo service httpd restart"

とりあえずやっていることとしては、http.confを上書きしてbasic認証を作るシェルスクリプトを作成。
.htpasswdをコマンドから作成。
シェルスクリプトを走らせる。
サーバの再起動。
ってな感じ。

ちなみにdevelopmentかどうかを判断するために、elastic beanstalkのソフトウェア設定 > 環境プロパティにRACK_ENVというのを入れている。
これでdevelopment環境の場合はbasic認証がかかるので大丈夫だよ的なみたいな。

Adsense