26
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS はじめてのCodeDeploy

Last updated at Posted at 2020-08-31

CodeDeployを設定したので備忘録的に残そうと思います。

#IAM作成
毎回悩まされる権限周り
CodeDeployに必要なIAMとデプロイ先のEC2インスタンス用のIAMをそれぞれ作成する

#CodeDeploy用のIAM
AWSCodedeployをアタッチ
AutoScalingを利用する場合には、AutoScaling関連の権限もアタッチ。
・ロールタイプ
 AWSサービスロール→EC2
・ポリシーのアタッチ
 AWSCodeDeployRole

#EC2用のIAM
AmazonS3ReadOnlyAccessをアタッチ
・ロールタイプ
 AWSサービスロール→EC2
・ポリシーのアタッチ
 AmazonS3ReadOnlyAccess

#EC2のセットアップ
#EC2インスタンス用意
デプロイするEC2インスタンスを作成。
この時、上記で作成したEC2用のIAMロールを割り当てる
(ロールを割り当てていないとデプロイ失敗のもととなる。体験談。。)

#CodeDeploy-agentの導入
EC2インスタンスを立てたら、次はCodeDeploy-agentの導入。
OSはAmazon Linuxを利用している。基本的に以下の通りに進めれば問題ない。
[Install the CodeDeploy agent for Amazon Linux or RHEL][]
[Install the CodeDeploy agent for Amazon Linux or RHEL]:https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-linux.html

東京リージョンで利用する場合は、以下の通り。


$ sudo yum update
$ sudo yum install ruby
$ sudo yum install aws-cli
$ cd /home/ec2-user
$ aws s3 cp s3://aws-codedeploy-ap-northeast-1/latest/install . --region ap-northeast-1
$ chmod +x ./install
$ sudo ./install auto

導入後agentが起動しているか確認。以下の結果が返ってこればOK

$ sudo service codedeploy-agent status
The AWS CodeDeploy agent is running as PID 12491

#appspec作成
デプロイ内容を記載するappspec.ymlを作成。
作成後は、リポジトリの直下に配置する。

設定の内容は以下の感じ

項目 説明
version デプロイバージョン
os デプロイ先のサーバのOS(linux or windows)
files:source どこのディレクトリのコードを持ってくるか。全ファイルを持ってきたい時は"/"にする
files:destination デプロイ先のサーバのどこのディレクトリにコードを配置するかを指定する
hooks デプロイの過程で実行するスクリプトの配置先などを指定する

あとはコンソールでCodeDeployの設定
#CodeDeploy設定
#はじめにアプリケーションの作成
CodeDeploy→アプリケーション→アプリケーションの作成
image.png

項目 説明
アプリケーション名 任意
コンピューティングプラットフォーム EC2/オンプレミス、AWS Lambda、Amazon ECSから選択

#デプロイグループの作成
CodeDeploy→アプリケーション→作成したアプリケーション名→デプロイグループの作成

項目 説明
デプロイグループ名 任意
サービスロール はじめの方に作成したCodeDeploy用のIAMを選択
デプロイタイプ アプリケーションのデプロイ方法をインプレースBlue/Greenのどちらかを選択(違いについては今回説明しない)
環境設定 EC2インスタンス AutoScalingグループオンプレミスインスタンスの任意の組み合わせを選択
デプロイ設定 OneAtATime(1回に1個のインスタンスにデプロイ)、AllAtOnce(1回に最大ですべてのインスタンスにデプロイ)、HalfAtATime(1回に最大で半分のインスタンスにデプロイ)を選択
ロードバランサー デプロイプロセス中に着信トラフィックを管理するロードバランサーを選択(今回は使ってないので、使う機会がある時に調べてみる)

#デプロイの作成&デプロイ実行
CodeDeploy→アプリケーション→作成したアプリケーション名→デプロイの作成

項目 説明
リビジョンタイプ アプリケーションの格納先をS3GitHubから選択
リビジョンの場所 上記から保存されている場所をしていする
デプロイの説明 デプロイについて簡単な説明を記入(任意)
追加のデプロイ動作設定 ApplicationStop ライフサイクルイベントの障害、配置先のインスタンスに同じファイルがあった場合の対処方法について選択(任意)デプロイタイプをインプレース選択時にコンテンツ上書きを選択してなかったことがありつまづいた(体験談。。)
デプロイグループのオーバーライド 上記デプロイ設定と同じ(OneAtATimeAllAtOnceHalfAtATime)から選択
ロールバック設定の上書き デプロイ失敗時のロールバックや、アラームのしきい値を超えた場合のロールバックについて選択可能

デプロイ作成ボタンを押すとデプロイが実行される

#結果を確認
成功!やったね♪
image.png

デプロイのライフライクルイベント→Vieweventsから詳細を確認することも可能
image.png

お疲れさまでしたー

参考:
[EC2デプロイのためにCodeDeployを導入する][]
[EC2デプロイのためにCodeDeployを導入する]:https://qiita.com/yukofeb/items/e077fc8755416c904032

26
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?