🌧️
初めての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.1、env=prodなど、インスタンスごとに柔軟に付加可能 |
| TTL | 名前解決キャッシュの存続時間、短くすれば動的な変更に強くなる |
登録・更新・解決の流れ
- 名前空間の作成:
例:myapp.local(タイプ: Private DNS) - サービスの作成:
例:api.myapp.local - インスタンスの登録:
EC2やECSのタスクが起動したときに、自分のIPをCloud Mapに登録 - 名前解決:
同じ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