AWS CodeDeploy で ELB のターゲットになっていない EC2 でも勝手に追加されてしまう
AWS CodeDeployを使っていて少しハマったのでメモとして残しておきます。
CodeDeployでデプロイする場合、どこのコードを使ってどんな方法でどこにデプロイするか色々なパターンがあります。
- EC2 or オンプレ
- GitHub or S3
- インプレース or Blue/Green
- Elastic Load Balancing タイプ or そのまま
このうち、ELBタイプは、デプロイの際にデプロイ対象のインスタンスをELBのターゲットから外した上でインストール等を行い完了したらターゲットへ戻すような方法です。
この方法によって、ユーザアクセスの瞬間にアプリケーションが壊れていたり不完全だったりといったことがなく、安全にデプロイできます。
さて、そのELBタイプのデプロイですが、デプロイグループの対象のインスタンスではあるけれど、ELBのターゲットにはなっていないインスタンスがあったときに、どうなるのか?ということがありました。
さすがに、ELBのターゲットに入っていなければ、インスタンスにとってトラフィックのブロックも何も無いわけで、デプロイの対象にならないか、もしくはただアプリケーションのインストールが行われて終わるかのどちらかかと考えていました。
そう思って実行したところ、ELBのターゲットに入っていないにも関わらず、普通にトラフィックのブロックが行われ、インストールが行われ、最後にはELBのターゲットに勝手に追加されてしまいました!
そういうものなのか微妙な感じもしますが、少しハマってしまいました。
これに関して特に記述は無いような docs.aws.amazon.com
とりあえずAuto Scaling使いますか...