🚴🏻‍♀️

【AWS CodeDeploy】AWSの基礎を学ぼう 第六十回

2021/10/16に公開約4,700字

宿題未提出が溜まっている!!

概要

「AWS エバンジェリストシリーズ AWSの基礎を学ぼう」で”AWS CodeDeployのおさらい”のイベントに参加した感想ページです。

「AWS エバンジェリストシリーズ AWSの基礎を学ぼう」とは

AWS エバンジェリストシリーズ AWSの基礎を学ぼう

以下、Connpassページより引用

Amazon Web Services (AWS)は現在200を超えるサービスを提供し、日々サービスの拡充を続けています。
このAWS エバンジェリスト シリーズでは週次でAWSのサービスをひとつづつ取り上げながらその基礎を説明していく 初心者、中級者をターゲットとした講座です。午後の仕事前にスキルアップを一緒にしませんか?
毎週ありがとうございます!

整理

CodeDeploy?

https://aws.amazon.com/jp/codebuild/faqs/?nc=sn&loc=5

AWS CodeBuild は、クラウド内の完全マネージド型の継続的統合サービスです。CodeBuild では、ソースコードのコンパイル、テストの実行、デプロイ可能なパッケージの生成を行えます。CodeBuild では自分のビルドサーバーをプロビジョニング、管理、スケールする必要がありません。CodeBuild が自動的にスケールし複数のビルドを同時に処理するため、ビルドはキューで待機する必要がありません。CodeBuild のパッケージ済みのビルド環境を使用するか、ご自分のビルドツールを使用するカスタムビルド環境を作成することによりすぐに開始できます。CodeBuild の課金は、分単位です。

コンピューティングプラットフォーム


コンピューティングプラットフォームとしては

  • EC2/オンプレミス
  • AWS Lambda
  • Amazon ECS
    が用意されています。

EC2で試す

構成図

EC2起動時のUserData

やりたいのは、httpdとcodedeploy-agentを入れる事

#!/bin/bash
sudo yum update -y
sudo yum install -y httpd
sudo systemctl start httpd
sudo echo `hostname`+ver.1 > /var/www/html/index.html
sudo yum install -y ruby
sudo yum install -y wget
cd /home/ec2-user
wget https://aws-codedeploy-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
sudo service codedeploy-agent status

CurlでALB経由とEC2直接でアクセスする

実行cmd

while true
do
echo #########################
date
echo ### ALB ###
curl CodeDeploy-589250730.ap-northeast-1.elb.amazonaws.com;
echo ### IP143 ###
curl ec2-13-231-158-143.ap-northeast-1.compute.amazonaws.com;
echo ### IP162 ###
curl ec2-54-178-36-162.ap-northeast-1.compute.amazonaws.com;
echo ### IP74 ###
curl ec2-52-196-3-74.ap-northeast-1.compute.amazonaws.com;
echo ### IP243 ###
curl ec2-13-115-218-243.ap-northeast-1.compute.amazonaws.com;
sleep 5
done

実行結果

ALB、お呼びEC2にアクセスできることを確認

#########################
2021年 10月16日 土曜日 22時06分33秒 JST
### ALB ###
<h1>Ver1</h1>
### IP143 ###
<h1>Ver1</h1>
### IP162 ###
<h1>Ver1</h1>
### IP74 ###
<h1>Ver1</h1>
### IP243 ###
<h1>Ver1</h1>

デプロイを実施1

デプロイタイプ

インプレース

デプロイ設定

CodeDeployDefault.AllAtOnce

結果

流れとしては

  • ALBのターゲットが外れる
  • EC2が入れ替わる
  • ALBが再接続される
#########################
2021年 10月17日 日曜日 00時32分43秒 JST
### ALB ###
<h1>Ver1</h1>
### IP143 ###
<h1>Ver1</h1>
### IP162 ###
<h1>Ver1</h1>
### IP74 ###
<h1>Ver1</h1>
### IP243 ###
<h1>Ver1</h1>
#########################
2021年 10月17日 日曜日 00時32分48秒 JST
### ALB ###
<html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body>
<center><h1>503 Service Temporarily Unavailable</h1></center>
</body>
</html>
### IP143 ###
<h1>Ver1</h1>
### IP162 ###
<h1>Ver1</h1>
### IP74 ###
<h1>Ver1</h1>
### IP243 ###
<h1>Ver1</h1>
#########################
2021年 10月17日 日曜日 00時32分53秒 JST
### ALB ###
<html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body>
<center><h1>503 Service Temporarily Unavailable</h1></center>
</body>
</html>
### IP143 ###
<h1>Ver2!!</h1>
### IP162 ###
<h1>Ver2!!</h1>
### IP74 ###
<h1>Ver2!!</h1>
### IP243 ###
<h1>Ver2!!</h1>
#########################
2021年 10月17日 日曜日 00時33分04秒 JST
### ALB ###
<h1>Ver2!!</h1>
### IP143 ###
<h1>Ver2!!</h1>
### IP162 ###
<h1>Ver2!!</h1>
### IP74 ###
<h1>Ver2!!</h1>
### IP243 ###
<h1>Ver2!!</h1>

デプロイを実施2

デプロイタイプ

インプレース

デプロイ設定

CodeDeployDefault.HalfAtOnce

結果

流れとしては

  • ALBが旧Verに流れている間で、半分のインスタンスがデプロイされる
  • ALBが新Verに流れている間で、残り半分のインスタンスがデプロイされる。
  • ALBが全インスタンスのターゲットになる。
#########################
2021年 10月17日 日曜日 00時51分29秒 JST
### ALB ###
<h1>Ver3!!!</h1>
### IP143 ###
<h1>Ver3!!!</h1>
### IP162 ###
<h1>Ver3!!!</h1>
### IP74 ###
<h1>Ver3!!!</h1>
### IP243 ###
<h1>Ver3!!!</h1>
#########################
2021年 10月17日 日曜日 00時51分35秒 JST
### ALB ###
<h1>Ver3!!!</h1>
### IP143 ###
<h1>Ver4!!!</h1>
### IP162 ###
<h1>Ver3!!!</h1>
### IP74 ###
<h1>Ver4!!!</h1>
### IP243 ###
<h1>Ver3!!!</h1>

(略)

#########################
2021年 10月17日 日曜日 00時52分35秒 JST
### ALB ###
<h1>Ver4!!!</h1>
### IP143 ###
<h1>Ver4!!!</h1>
### IP162 ###
<h1>Ver3!!!</h1>
### IP74 ###
<h1>Ver4!!!</h1>
### IP243 ###
<h1>Ver3!!!</h1>

(略)

#########################
2021年 10月17日 日曜日 00時53分37秒 JST
### ALB ###
<h1>Ver4!!!</h1>
### IP143 ###
<h1>Ver4!!!</h1>
### IP162 ###
<h1>Ver3!!!</h1>
### IP74 ###
<h1>Ver4!!!</h1>
### IP243 ###
<h1>Ver4!!!</h1>

デプロイを実施3

デプロイタイプ

Blue/Green

デプロイ設定

CodeDeployDefault.AllAtOnce

結果

エラー中。
AutoScalingをせずにEC2を4台構成のままで、Blue/Greenがちゃんと理解できてないかも。

Discussion

ログインするとコメントできます