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

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

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 コマンドの実行時にエラーが発生した場合は、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.    ナビゲーションペインで、[Hosted zones] (ホストゾーン) を選択します。

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.    ナビゲーションペインで、[Hosted zones] (ホストゾーン) を選択します。

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

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

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

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


サービス検出 (Amazon ECS)

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


請求に関するサポートまたは技術サポートが必要ですか?