🌧️

初めてのAWS Cloud Map ~概要編~

に公開

AWS Cloud Mapとは?

マイクロサービスやクラウドネイティブアプリケーションで使われる「サービスディスカバリ」を実現するマネージドサービス。
アプリケーションの各サービスを名前で登録し、動的にエンドポイントを管理することで、他のサービスから容易に接続できるようにする。

Cloud Mapの構成要素

①名前空間(Namespace)

サービスの名前を一意に管理するためのドメインスコープ。Cloud Mapで登録されるサービスやインスタンスは、必ず「名前空間」の中に存在。

名前空間の種類

種類 説明 主な用途
Private DNS 名前空間 VPC内の内部DNSとして利用。Route53のPrivate Hosted Zoneと連携し、内部からの名前解決が可能。 ECS・EKS・EC2間の通信など
Public DNS 名前空間 インターネットに公開されるDNS名を提供。Route53のパブリックホストゾーンと連携。 外部公開API、Webサービスなど
HTTP 名前空間 DNSを使用せず、APIで名前解決。DNS登録不要。 App Mesh、サードパーティアプリとの連携など

②サービス(Service)

名前空間の中に作成される論理的な単位。例えば、バックエンドやデータベース、バッチ処理など、機能別に定義。

機能 詳細
名前 例:ordersなど。DNS名になると:orders.service.local
DNS設定 A/AAAA/SRV/CNAMEレコードを選択可能。TTLやルーティングポリシー( WEIGHTED/MULTIVALUE )も設定可能
ヘルスチェック(オプション) 登録されたインスタンスの状態を監視。Route53のヘルスチェックが利用される
カスタム属性 インスタンスに追加のメタデータ(例:バージョン、環境)を付与するためのスキーマ

③インスタンス(Instance)

サービスに属する実体、実際のエンドポイント。IPアドレスやFQDN、メタ情報などが含まれる。

属性名 内容
Instance ID 一意なID。orders-1など
AWS_INSTANCE_IPV4 IPアドレス。DNS解決時に返される
AWS_INSTANCE_PORT(任意) TCPポート番号
カスタム属性 例:version=2.1env=prodなど、インスタンスごとに柔軟に付加可能
TTL 名前解決キャッシュの存続時間、短くすれば動的な変更に強くなる

登録・更新・解決の流れ

  1. 名前空間の作成:
    例:myapp.local(タイプ: Private DNS)
  2. サービスの作成:
    例:api.myapp.local
  3. インスタンスの登録:
    EC2やECSのタスクが起動したときに、自分のIPをCloud Mapに登録
  4. 名前解決:
    同じVPC内のサービスからapi.service.localにアクセスすることで、現在有効なIPが返却される
Namespace: myapp.local (タイプ: Private DNS)
   └─ Service: api.myapp.local
          ├─ Instance: api-1 → 10.0.1.2
          └─ Instance: api-2 → 10.0.1.3

CLIによるハンズオン例

名前空間の作成(Private DNS)

aws servicediscovery create-private-dns-namespace \
  --name myapp.local \
  --vpc VPC_ID \
  --region ap-northeast-1

サービス作成

aws servicediscovery create-service \
  --name api \
  --dns-config "NamespaceId=NAMESPACE_ID,RoutingPolicy=WEIGHTED,DnsRecords=[{Type=A,TTL=60}]" \
  --region ap-northeast-1

インスタンス登録

aws servicediscovery register-instance \
  --service-id SERVICE_ID \
  --instance-id "api-1" \
  --attributes "AWS_INSTANCE_IPV4=10.0.1.2" \
  --region ap-northeast-1

まとめ

AWS Cloud Mapは、動的に変化するクラウド環境において、サービスの名前解決とエンドポイント管理を効率化する強力なツール。とくに、ECSやEKS、App Meshと組み合わせることで、自動化された信頼性の高いマイクロサービス基盤を構築可能。

Discussion