AWS CLI を介して AWS Cloud Map でサービス検出を設定するにはどうすればよいですか?

最終更新日: 2020 年 6 月 23 日

AWS コマンドラインインターフェイス (AWS CLI) を介して AWS Cloud Map を使用してホストゾーンを作成するにはどうすればよいですか?

簡単な説明

AWS Cloud Map は DNS 設定を自動化し、Amazon Elastic Container Service (Amazon ECS)、AWS Fargate、および Amazon Elastic Kubernetes Service (Amazon EKS) などのインスタンスのプロビジョンを簡素化します。

AWS SDK または AWS CLI を使用して、AWS Cloud Map でホストゾーンを作成するには、以下の操作を行います。

1.    DNS 名前空間 (ホストされたゾーンが自動的に作成される) を作成して、サービス命名スキームを定義します。

2.    サービスを作成します。

3.    サービスにインスタンスを登録します。

解決方法

先に進む前に、必ず AWS CLI の最新バージョンを インストールします

DNS 名前空間の作成

1.    AWS CLI を使用して名前空間を作成し、 example.com を使用するドメイン名 で置き換えます。

注: パブリックまたはプライベートの名前空間のどちらかを作成するのか、選択 する必要があります。パブリック名前空間は、ドメイン名が登録されている限り、インターネットで表示されます。プライベート名前空間は、Virtual Private Cloud (VPC) 内でのみ表示されます。プライベート名前空間を作成するときは、VPC ID を指定する必要があります。

パブリック名前空間を作成するには、次のコマンドを使用します。

$ aws servicediscovery create-public-dns-namespace --name example.com

プライベート名前空間を作成するには、次のコマンドを使用します。

$ aws servicediscovery create-private-dns-namespace --name example.com --vpc vpc-0c92f38bf7db24a05

2.    出力 の OperationId の値を書き留めます。

例:

{
    "OperationId": "igbkufld72o4vbsbwejfi6eyinfprhc3-jkwmz00b"
}

3.    get-operation コマンドを使用して、オペレーションの詳細を確認します。<OperationId value> は、前のステップで見つかった OperationId の値に置き換えてください。

aws servicediscovery get-operation --operation-id <OperationId value>

4.    出力結果の Status の値が SUCCESS であることを確認します。NAMESPACE の値を書き留めます。これは、サービスを作成し、インスタンスを登録するために使用される名前空間 ID です。

例:

{
    "Operation": {
        "Status": "SUCCESS",
        "CreateDate": 1534428266.699,
        "Id": "igbkufld72o4vbsbwejfi6eyinfprhc3-jkwmz00b",
        "UpdateDate": 1534428267.113,
        "Type": "CREATE_NAMESPACE",
        "Targets": {
            "NAMESPACE": "ns-f2wjnv2p7pqtz5f2"
        }
    }
}

注: 名前空間を作成すると、Route 53 がそのドメインのホストゾーンを自動的に作成します。ホストゾーンのドメイン名の値は、名前空間と同じドメイン名です。Comment 値は、Route 53 Auto Naming によって自動的に作成されます。ホストゾーンを確認するには:

1.    Route 53 コンソールを開きます。

2.    ナビゲーションペインで、[ホストゾーン] を選択します。

3.    コンテンツペインのホストゾーンのリストで、自分のホストゾーンを検索します。

サービスの作成

1.    短縮構文servicediscovery create-service コマンドを使用して、次のようにサービスを作成します。 workers を任意のサービス名に置き換えてください。Route 53 では、レコードの作成時にこのサービス名が使用されます。

$aws servicediscovery create-service --name workers --dns-config 'NamespaceId="ns-f2wjnv2p7pqtz5f2",RoutingPolicy="WEIGHTED",DnsRecords=[{Type="A",TTL="300"}]'

デフォルトのルーティングポリシーは「MULTIVALUE」です。サポートされているルーティングポリシーは「MULTIVALUE」と「WEIGHTED」です。

2.    出力を書き留めておきます。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"
    }
}

インスタンスの登録

1.    servicediscovery register-instance コマンドを使用して、インスタンスを登録します。<value> のプレースホルダーは当該の値に置き換えてください。同じ service-id オプションと instance-id オプションを持つインスタンスを登録するには、一度に 1 つのリクエストしか実行できないことに注意してください。

重要: service-idinstance-id、およびattributes パラメータを指定しない場合、API 呼び出しは失敗します。詳細については、register-instance ページの「Options」を参照してください。

$ aws servicediscovery register-instance --service-id srv-iy3d7hhlf5cjciph --instance-id i-039444aa1e2932ca3 --attributes=AWS_INSTANCE_IPV4=172.1.1.1

2.    OperationIdを含む出力を確認します。例:

{
    "OperationId": "z7dfqgeadkvwwid2wa2n5ckicrxs255x-jkwr1x9f"
}

3.    Route 53 コンソール を開きます。

4.    ナビゲーションペインで、[ホストゾーン] を選択します。

5.    前に作成したホストゾーンを選択します。

6.    [レコードセットに移動] を選択して、レコードセットがホストゾーンに作成されていることを確認します。

注: インスタンスを登録すると、Route 53 が自動的にサービス名とドメイン名を用いてレコードを作成します。

Amazon ECS と Route 53 サービス検出を使用している場合は、Route 53 の名前空間とサービス名を使用して、サービスを設定できます。Route 53 はその後、Amazon ECS コンテナ設定に従ってホストゾーンでレコードを自動的に作成、削除、または更新します。


サービス検出」(Amazon ECS)

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合