🌧️
初めての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