CodeCommit
料金
AWS CodeCommit の料金
月あたりのアクティブユーザー数単位で金額が来ます
アクティブユーザー数が増えると特典の使用量も増える
リポジトリの作成
IAMの設定
Codecommit に HTTPS 経由でコミットを行う IAM ユーザーに認証情報を作成する
認証連携
作成したリポジトリを clone し、認証情報に先程作成した情報を入力するとアクセスできる
デプロイしたい資産をプッシュしておく
デフォルトだと CodeCommit リポジトリ自体にアクセス制御的な機能が見当たらない
CodeCommit へアクセスする IAM ユーザー側で権限設定を行う必要があるようで、 CodeCommit のアカウントはちゃんと分けて発行したほうがよさそう
CodeCommit の権限リファレンス
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 設定を無効化して、 サイト表示は手動でコントロールするようにする必要がある