はじめに
CloudFormationで少しハマったのでメモ。
結論
ターゲットグループのhealthCheckIntervalSeconds
は、5以上に設定する。
困っていること
- CodeDeployの待ち時間が遅い
- 10分位待つ
AWSの構成
- ALB
- EC2×2
- ALB、TargetGroup、EC2等はCloudFormationで一気に作成
- CodeDeployでRailsアプリケーションをデプロイ
- インプレースデプロイ
やりたいこと
- CodeDeployを高速化したい
以下の記事を参考に最小値に設定して、CloudFormationを実行してみた。
結果、怒られた。
発生したエラー
ターゲットグループのメンバーは、healthCheckIntervalSeconds
が5以上必要とのこと。
CREATE_FAILED AWS::ElasticLoadBalancingV2::TargetGroup TargetGroup 1 validation error detected: Value '2' at 'healthCheckIntervalSeconds' failed to satisfy constraint: Member must have value greater than or equal to 5 (Service: AmazonElasticLoadBalancingV2; Status Code: 400; Error Code: ValidationError; Request ID: 5f176293-14a8-11e9-9de4-d5bbd703824e)
対処
HealthCheckIntervalSeconds
に5以上の値を指定する。
TargetGroup: Type: "AWS::ElasticLoadBalancingV2::TargetGroup" Properties: VpcId: Fn::ImportValue: !Sub "${ENV}-VPC" Name: !Sub "${ENV}-tg" Protocol: "HTTP" Port: 80 HealthCheckProtocol: "HTTP" HealthCheckPath: "/healthcheck.png" HealthCheckPort: "traffic-port" # ヘルスチェックの秒数はCodeDeployの時間短縮のため最小値とする # 参考:https://qiita.com/wMETAw/items/7b814fe400cd21776ca6 # HealthCheckIntervalSecondsは5以上にしないとエラーが起きるので注意 HealthyThresholdCount: 5 UnhealthyThresholdCount: 2 HealthCheckTimeoutSeconds: 2 HealthCheckIntervalSeconds: 5 Matcher: HttpCode: "200"
おわりに
CloudFormationは動くようになりましたが、結局CodeDeployは高速化できていません。 継続調査します。