AWS CodePipleline CodeDeployごとにやりたいことを分ける

AWS

えー、前回下記のような投稿をしましたが、

CodePipeline Githubにコミットしたら自動的にデプロイするまでの道のり①
CodePipeline Githubにコミットしてテスト環境で確認の後デプロイする

今回はみんなやりたい!環境やサーバー、テスト、リリースなどによって「何か」を変えたいというのをやります。

たとえば、テスト環境ではこのファイル表示したい、とか、エラーログレベルを調整したいとか、そういうのですね。
これを自動でやるのが、デプロイツールのだいご味ではないでしょうか!!

さて、わかってしまえば単純な仕組みですが、AWSのドキュメントの場所がわからず悩みました。

ずばり、下記を見ればそれができます。

AppSpec ‘hooks’ Section

CodeDeployで作った、デプロイグループの名前を変数として使えます。

まずは、超単純ですが、テスト環境の場合、index2.htmlというファイルを作って、aaabbbという文字列を表示します。

  • テスト環境へのデプロイを、”DeployTest”という名前のデプロイグループに保存します。
  • change_as_serverというファイル名で下記を書いて保存します。
 #!/bin/bash
 if [ "$DEPLOYMENT_GROUP_NAME" == "DeployTest" ]
 then
    echo aaabbb > /var/www/html/index2.html
 fi

CodeDeployで利用する、appspec.ymlで、

 hooks:
   BeforeInstall:

に、上記で作ったスクリプトを走らせるように書きます。
アプリケーションのインストール前に何をするかってことですね。
appspec.ymlの全体が下記です。

 version: 0.0
 os: linux
 files:
  - source: /
    destination: /var/www/html/
 hooks:
  BeforeInstall:
    - location: scripts/start_server
      timeout: 300
      runas: root
    - location: scripts/change_as_server
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop_server
      timeout: 300
      runas: root
  • 前回CodePipeline Githubにコミットしてテスト環境で確認の後デプロイするにて作ったパイプラインの様子が下記です。

今回もこのフローにのってやります。

codepipeline2.png

  • StagingでのCodeDeployにはDeployTestのデプロイを、ReleaseでのCodeDeployにはDeployReleaseのデプロイを利用します。
  • appspec.ymlとscripts/change_as_serverをGithubにコミットすると、ちょうどCodePipelineが走り始めます。
  • テスト環境だけ、index2.htmlができていると思います!⊂(^-^)⊃
  • 今回、bashでやりましたけども、Pythonとかも使えるようなので、柔軟にいろんなことができると思います。
カテゴリーAWS

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です