AWS CodePipline + Commit + Deploy で自動生活検証

CodeCommit

AWS CodeCommit とは

料金

AWS CodeCommit の料金
月あたりのアクティブユーザー数単位で金額が来ます
アクティブユーザー数が増えると特典の使用量も増える

リポジトリの作成


IAMの設定

Codecommit に HTTPS 経由でコミットを行う IAM ユーザーに認証情報を作成する



認証連携

作成したリポジトリを clone し、認証情報に先程作成した情報を入力するとアクセスできる
デプロイしたい資産をプッシュしておく

デフォルトだと CodeCommit リポジトリ自体にアクセス制御的な機能が見当たらない
CodeCommit へアクセスする IAM ユーザー側で権限設定を行う必要があるようで、 CodeCommit のアカウントはちゃんと分けて発行したほうがよさそう
CodeCommit の権限リファレンス

CodeDeploy

CodeDeploy とは

料金

AWS CodeDeploy の料金
EC2/Lambda での CodeDeploy: AWS CodeDeploy を使用した Amazon EC2 や AWS Lambda へのコードデプロイに追加料金はない

デプロイサーバ設定

CodePipline からデプロイ指定するためのデプロイグループのみ作成する
今回は EC2 にデプロイするためサーバに Agent をインストールする
事前準備として AWS Cli 、 Ruby のインストールを行っておく、Rubyのバージョンは指定があるので注意

Currently recommanded Ruby versions are 2.0.0, 2.1.8, 2.2.4 and 2.3.0, and 2.4.0.

また 実行する EC2 インスタンズ上から S3 にアクセスできるように AmazonS3ReadOnlyAccess ポリシーを最低限付与しておく
Amazon Linux または RHEL 用の CodeDeploy エージェントのインストールまたは再インストール

# wget https://aws-codedeploy-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/latest/install
# ./install auto
# systemctl status codedeploy-agent

デプロイ指示ファイルの作成

デプロイ情報を記載したファイルを作成しソースのルートに入れておく

# appspec.yml
version: 0.0
os: linux
files:
  - source: /
    destination: /opt/mkdocs

Deploy IAM Role の設定

AWS CodeDeploy で利用する IAM Role を作成しておく
CodeDeploy のサービスロールを作成する

Deployグループの作成

アプリケーション設定




グループ設定







デプロイ設定は以下から選択できる
CodeDeployDefault.AllAtOnce
一度に可能な限り多くのインスタンスへアプリケーションリビジョンをデプロイするよう試みます。

CodeDeployDefault.HalfAtATime
一度に最大半分のインスタンスにデプロイします (端数は切り捨てられます)。
デプロイ全体は、アプリケーションリビジョンが少なくとも半分のインスタンスにデプロイされた場合は成功です (端数は切り捨てられます)。

CodeDeployDefault.OneAtATime
一度に 1 つのインスタンスにのみアプリケーションリビジョンをデプロイします。

CodePupline

AWS CodePipeline とは
デプロイしたい資産を CodeCommit に登録し、 資産をデプロイしたいサーバ登録を CodeDeploy に登録し、2つを CodePipline でつなげます

料金

AWS CodePipeline 料金
月あたりのアクティブな1パイプライン単位で金額が発生、1パイプラインは無料です

Piplineの作成


ソース元の指定
CodeCommit の他に S3 、 Github 等も指定できる
事前に作成した CodeCommit のリポジトリを指定する


ブルドステージ
今回はゔビルドが必要なアプリケーションでは無いためスキップ

事前に作成したデプロイグループを指定

作成すると S3 バケットも一緒に作られるっぽい

実行

初回は自動実行される
意外と時間かかる、成功するとこんなかんじ

デプロイ中は LB 設定をしていた場合メンバーサーバに対して unhelty になっていた
デプロイ中の LB 設定を有効化していた場合、 LB へのトラフィックアウト、トラフィックインは LB のヘルスチェック設定に依存するため
デプロイが遅い時は LB のヘルスチェック設定を調整する必要がある(数分~数十分違いが出る)
それもやりたくない場合はデプロイ時の LB 設定を無効化して、 サイト表示は手動でコントロールするようにする必要がある

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)
Share Comments
comments powered by Disqus