お疲れ様です。
タイトルの通り備忘録です。
どこかの記事を参考にしたと思ったのですが、見つからなかったので知っている方がいれば教えてください🙇♂️
用意するもの
- appspec.yml
- 紐づけ処理用のシェルスクリプト(before_allow_traffic.sh)
以上
appspec.yml
このファイルは、デプロイを管理するために CodeDeploy によって使用されるファイルです。
appspec.yml
version: 0.0
os: linux
...中略...
hooks:
BeforeAllowTraffic:
- location: scripts/before_allow_traffic.sh
timeout: 300
runas: root
トラフィックを許可する処理で before_allow_traffic.sh を実行します。
before_allow_traffic.sh
スクリプト内にTODOコメントが書いてありますが、
ターゲットグループを直接指定しています。
もしオリジナルのAuto Scalingグループから取得する方法があれば教えてください🙇♂️
before_allow_traffic.sh
#!/usr/bin/env bash
# Blue/Greenデプロイ時にAutoScalingGroupのターゲットグループが空になるので、引き継ぐ
query "TargetGroups[*].TargetGroupArn" --output text)
autoscalingGroupName=$(aws deploy get-deployment --deployment-id ${DEPLOYMENT_ID} --query "deploymentInfo.targetInstances.autoScalingGroups" --output text)
if [[ "$autoscalingGroupName" != "None" ]]
then
# TODO ターゲットグループは直接指定ではなくオリジナルから取りたい
if [[ "${DEPLOYMENT_GROUP_NAME}" == "***DEPLOYMENT_GROUP_NAME***" ]]
then
aws autoscaling attach-load-balancer-target-groups --auto-scaling-group-name "$autoscalingGroupName" --target-group-arns "arn:aws:elasticloadbalancing:ap-northeast-1:**********:targetgroup/***TARGET_GROUP_NAME***/*********" "arn:aws:elasticloadbalancing:ap-northeast-1:**********:targetgroup/***TARGET_GROUP_NAME***/*********"
fi
fi