AWS Cloud Map と AWS コマンドラインインターフェイス (AWS CLI) を使用してホストゾーンを作成したいと考えています。
解決策
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」をご参照ください。また、AWS CLI の最新バージョンを使用しているかどうかを確認してください。
DNS 名前空間を作成する
-
AWS CLI を使用して、example.com を使用するドメイン名に置き換えて名前空間を作成します。
-
パブリック名前空間とプライベート名前空間のどちらを作成するかを選択する必要があります。パブリック名前空間は、ドメイン名が登録されている限り、インターネットで表示されます。プライベート名前空間は、仮想プライベートクラウド (VPC) 内でのみ表示されます。プライベート名前空間を作成するときは、VPC ID を指定する必要があります。
パブリック名前空間を作成するには、次のコマンドを実行します。
$ aws servicediscovery create-public-dns-namespace --name example.com
プライベート名前空間を作成するには、次のコマンドを実行します。
$ aws servicediscovery create-private-dns-namespace --name example.com --vpc vpc-0c92f38bf7db24a05
**注:**名前は DNS クエリで公開されるので、この名前には機密情報を含めないでください。
-
出力の OperationId の値は、次の例ように書き留めてください。
{
"OperationId": "igbkufld72o4vbsbwejfi6eyinfprhc3-jkwmz00b"
}
-
オペレーションの詳細を確認するには、get-operation コマンドを実行します。OPERATION_VALUE は、前のステップで見つかった OperationId の値に置き換えてください。
aws servicediscovery get-operation --operation-id OPERATION_VALUE
-
出力結果の Status の値が SUCCESS であることを確認します。NAMESPACE の値も書き留めます。これは、サービスを作成し、インスタンスを登録するために使用される名前空間 ID です。
{
"Operation": {
"Status": "SUCCESS",
"CreateDate": 1534428266.699,
"Id": "igbkufld72o4vbsbwejfi6eyinfprhc3-jkwmz00b",
"UpdateDate": 1534428267.113,
"Type": "CREATE_NAMESPACE",
"Targets": {
"NAMESPACE": "ns-f2wjnv2p7pqtz5f2"
}
}
}
注: 名前空間を作成すると、Amazon Route 53 がそのドメインのホストゾーンを自動的に作成します。ホストゾーンのドメイン名の値は、名前空間と同じドメイン名になります。コメント値は、Route 53 Auto Naming によって自動的に作成されます。
ホストゾーンを確認するには、次の手順に従います。
- Route 53 コンソールを開きます。
- ナビゲーションペインで [ホストゾーン] を選択します。
- コンテンツペインのホストゾーンのリストからホストゾーンを探します。
サービスの作成
サービスを作成するには、次の手順に従います。
-
短縮構文の servicediscovery create-service コマンドを使用して、次のようにサービスを作成します。WORKERS を任意のサービス名に置き換えてください。Route 53 は、レコードを作成する際にこのサービス名を使用します。
$aws servicediscovery create-service --name WORKERS--dns-config 'NamespaceId="ns-f2wjnv2p7pqtz5f2",RoutingPolicy="WEIGHTED",DnsRecords=[{Type="A",TTL="300"}]'
**注:**パブリック DNS クエリで名前空間を検出できる場合は、その名前空間に機密情報は含めないでください。DNS クエリがアクセスできるサービスでは、大文字と小文字のみが異なる名前 (EXAMPLE や exampleなど) で複数のサービスを作成することはできません。ただ、API 呼び出しでのみアクセスできる名前空間を使用する場合は、大文字と小文字だけが異なる名前サービスを作成することができます。
デフォルトのルーティングポリシーは MULTIVALUE です。サポートされているルーティングポリシーは、MULTIVALUE と WEIGHTED です。
-
出力を書き留めます。Id 値は、いま作成したサービスの ID です。
注: CreatorRequestId はリクエストの ID です。API 呼び出しが失敗した場合は、** CreatorRequestId** を使用して操作を繰り返します。
{
"Service": {
"DnsConfig": {
"NamespaceId": "ns-f2wjnv2p7pqtz5f2",
"DnsRecords": [
{
"Type": "A",
"TTL": 300
}
]
},
"CreatorRequestId": "93e0a17a-230b-4c58-b986-f03f3217869f",
"Id": "srv-iy3d7hhlf5cjciph",
"Arn": "arn:aws:servicediscovery:eu-west-1:356906700443:service/srv-iy3d7hhlf5cjciph",
"Name": "workers"
}
}
インスタンスの登録
インスタンスを登録するには、次の手順に従ってください。
-
servicediscovery register-instance コマンドを実行します。service-id、instance-id、attributes の値のプレースホルダーを対応する値に置き換えます。これらのパラメータがないと、API 呼び出しは失敗します。同じ service-id オプションと instance-id オプションを持つインスタンスを登録するには、一度に 1 つのリクエストしか実行できないことに注意してください。
$ aws servicediscovery register-instance --service-id srv-iy3d7hhlf5cjciph --instance-id i-039444aa1e2932ca3 --attributes=AWS_INSTANCE_IPV4=172.1.1.1
**警告:**同じサービス ID とインスタンス ID を使用して別のリクエストを送信する前に、1 つの register-instance リクエストが完了するまで待つ必要があります。
-
出力を確認します。これには、OperationId が含まれます。例:
{
"OperationId": "z7dfqgeadkvwwid2wa2n5ckicrxs255x-jkwr1x9f"
}
-
Route 53 コンソールを開きます。
-
ナビゲーションペインで [ホストゾーン] を選択します。
-
前に作成したホストゾーンを選択します。
-
[レコードセットに移動] を選択し、レコードセットがホストゾーンに作成されているかどうかを確認します。
**注:**インスタンスを登録すると、Route 53 が自動的にサービス名とドメイン名を用いてレコードを作成します。
Amazon エラスティックコンテナサービス (Amazon ECS) と Route 53 サービス検出 を使用している場合は、Route 53 名前空間とサービス名を使用して、サービスを設定することができます。Route 53 はその後、Amazon ECS コンテナ設定に従って、ホストゾーンでレコードを自動的に作成や削除、更新します。