Skip to content

InPlace AutoScalingGroup

ot-nemoto edited this page Jan 11, 2019 · 1 revision

AutoScalingGroup

起動設定の作成

cat << EOT > instance-setup.sh
#!/bin/bash
yum -y update
yum install -y ruby
cd /home/ec2-user
curl -O https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install
chmod +x ./install
./install auto
EOT

# ami-02e680c4540db351e: Amazon Linux 2 AMI (HVM), SSD Volume Type
aws autoscaling create-launch-configuration \
  --launch-configuration-name CodeDeployDemoLaunchConfiguration \
  --image-id ami-02e680c4540db351e \
  --user-data file://instance-setup.sh \
  --instance-type t2.micro \
  --iam-instance-profile CodeDeployDemo-EC2-Instance-Profile \
  --security-groups CodeDeployDemo-Security-Group

オートスケーリンググループの作成

aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name CodeDeployDemoAutoScalingGroup \
  --launch-configuration-name CodeDeployDemoLaunchConfiguration \
  --min-size 1 \
  --max-size 1 \
  --desired-capacity 1 \
  --availability-zones $(aws ec2 describe-availability-zones --query 'AvailabilityZones[].ZoneName' --output text) \
  --tags 'ResourceType=auto-scaling-group,Key=Name,Value=CodeDeployInPlaceAutoScalingDemo'

CodeDeploy

アプリケーションの作成

aws deploy create-application \
  --application-name CodeDeployInPlaceAutoScalingDemo-App

デプロイグループの作成

aws deploy create-deployment-group \
  --application-name CodeDeployInPlaceAutoScalingDemo-App \
  --auto-scaling-groups CodeDeployDemoAutoScalingGroup \
  --deployment-group-name CodeDeployInPlaceAutoScalingDemo-DepGrp \
  --service-role-arn $(aws iam get-role --role-name CodeDeployServiceRole --query 'Role.Arn' --output text)

デプロイ

aws deploy create-deployment \
  --application-name CodeDeployInPlaceAutoScalingDemo-App \
  --deployment-config-name CodeDeployDefault.OneAtATime \
  --deployment-group-name CodeDeployInPlaceAutoScalingDemo-DepGrp \
  --github-location repository=ot-nemoto/CodeDeployDemo,commitId=e22cc3c5494cfacd9b95c6788259903350ebe0b1

デプロイされたことの確認

以下で出力されるパブリックドメイン名にブラウザでアクセス

aws ec2 describe-instances \
  --filters Name=tag:Name,Values=CodeDeployInPlaceAutoScalingDemo Name=instance-state-name,Values=running \
  --query 'Reservations[].Instances[].PublicDnsName'

Clone this wiki locally