LoginSignup
4
2

More than 5 years have passed since last update.

ECSのService DiscoveryをCloudformationで組んだときに躓いた

Last updated at Posted at 2018-10-10

何がしたいか

AWSのECSでRoute53 Auto namingを利用したService Discoveryの設定を、Cloudfromationで組みたい
Service DiscoveryのHosted zoneにはPrivate DNSを使いたい

躓いたポイント

ECS Serviceでコンテナ(Task)が起動し続けてくれなかった
そのため、いつまで経ってもCloudformationのStatusがCREATE_COMPLETEにならなかった

どう解決したか

Route53のTemplateにHealthCheckCustomConfigが必要だった

これがなくともAWS::ServiceDiscovery::PrivateDnsNamespaceは作成できてしまうので、すぐに気づけなかった
といっても、コンテナが起動し続けなかったのでHealthCheckに失敗しているんだろうな、とは薄々感じていた

以下、サンプル。
これで作成された"AWS::ServiceDiscovery::Service"のARNを、ECS Serviceで使用する

AWSTemplateFormatVersion: 2010-09-09

Resources:
  Namespace:
    Type: "AWS::ServiceDiscovery::PrivateDnsNamespace"
    Properties:
      Vpc: xxxxxxxxxx
      Name: private.example.

  ServiceDiscovery:
    Type: "AWS::ServiceDiscovery::Service"
    Properties:
      HealthCheckCustomConfig:
        FailureThreshold: 1
      DnsConfig:
        DnsRecords:
          - Type: A
            TTL: 60
        NamespaceId: !GetAtt Namespace.Id
      Name: hoge

反省点

  • Cloudformationのドキュメントしか読んでいなかったこと
    • HealthCheckConfigHealthCheckCustomConfigRequired: Noだったから、書いていなかった
    • 書かなくても、Service Discoveryの設定が行えたので問題ないと思ってしまった

参考URLなど

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2