AWS CLI を通じて AWS Cloud Map でサービス検出を設定する方法

最終更新日: 2019 年 6 月 25 日

AWS コマンドラインインターフェイス (AWS CLI) を通じて AWS Cloud Map を使用してホステッドゾーンを作成する方法

簡単な説明

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

AWS SDK または AWS CLI を使用して、AWS Cloud Map でホストされたゾーンを作成できます。

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

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

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

解決方法

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

DNS 名前空間の作成

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

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

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

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

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

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

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

例:

{
    "OperationId": "igbkufld72o4vbsbwejfi6eyinfprhc3-jkwmz00b"
}

3.    オペレーションの詳細を取得するには、コマンドget-operationを次のように使用します。オプション --operation-id の値を前のステップで取得された OperationId 値に置き換えます。

aws servicediscovery get-operation --operation-id igbkufld72o4vbsbwejfi6eyinfprhc3-jkwmz00b

4.    出力を書き留めておきます。

Status 値が SUCCESS であることを確認します。

NAMESPACE 値を書き留めます。これは、サービスを作成し、インスタンスを登録するために使用される名前空間 ID です。

例:

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

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

6.    ナビゲーションペインで [Hosted zones] を選択します。

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

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

サービスの作成

1.    AWS CLI を開きます。

2.    短縮構文 でコマンドservicediscovery create-service コマンドを使用して次の通り、サービスを作成します。

重要:  コマンドのworkersを任意のサービス名で置き換えます。Route 53 では、レコードの作成時にこのサービス名が使用されます。

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

3.    出力を書き留めておきます。Id 値は作成したばかりのサービスの ID です。

注 :  CreatorRequestId はリクエストの ID であり、これは API 呼び出しが失敗した場合に、オペレーションを繰り返すために使用できます。

例:

{
    "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.    AWS CLI を開きます。

2.    コマンドservicediscovery register-instance を使用して、次のとおりインスタンスを登録します。

重要: 以下のパラメータを指定しない場合、API 呼び出しは失敗します。

  • -service-id (Route 53 が作成するリソースレコードセットの設定で使用するサービスの ID)
  • -instance-id (インスタンスに関連付けたい ID)
  • -attributes (サービスで定義されたレコードに適用される属性)

例:

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

-attributesで以下のオプションを使用できます。

  • AWS_ALIAS_DNS_NAME を使用して、AWS リソースをポイントするエイリアスレコードを作成します。サービス検出では、加重エイリアスレコードのみがサポートされるので、ご注意ください。Route 53 サービス検出を使用するときのみ、Elastic Load Balancing に対するエイリアスレコードを作成できることにもご注意ください。エイリアスレコードをポイントする場合、Route 53 はサービス ID に対して設定されたヘルスチェックをエイリアスレコードに関連付けません。
  • サービス設定が CNAME レコードを含む場合、AWS_INSTANCE_CNAME を使用します。
  • DNS クエリに応答して Route 53 が返す IPv4 の A レコードを含むときに、AWS_INSTANCE_IPv4 を使用してください。
  • サービスで Route 53 にそのポートに返させたい値をもつ SRV レコードを含むとき、AWS_INSTANCE_PORT を使用します。

重要: インスタンスを登録するリクエストを 1 つのみ (servicediscovery register-instance) と同じ -service-id および -instance-id オプションで実行 できます。

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

{
    "OperationId": "z7dfqgeadkvwwid2wa2n5ckicrxs255x-jkwr1x9f"
}

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

5.    ナビゲーションペインで [Hosted zones] を選択します。

6.    コンテンツペインのホステッドゾーンのリストで前に作成したホステッドゾーンを選択します。

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

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

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


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

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


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