リソースを AWS Cloud Map サービスインスタンスとして登録する - AWS Cloud Map

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

リソースを AWS Cloud Map サービスインスタンスとして登録する

アプリケーションのリソースを AWS Cloud Map サービス内のインスタンスとして登録できます。例えば、ユーザーデータを管理するすべてのアプリケーションリソースusersに対して というサービスを作成しているとします。その後、ユーザーデータをこのサービスのインスタンスとして保存するために使用する DynamoDB テーブルを登録できます。

注記

AWS Cloud Map コンソールでは、次の機能は使用できません。

  • コンソールを使用してサービスインスタンスを登録する場合は、 Elastic Load Balancing (ELB) ロードバランサーにトラフィックをルーティングするエイリアスレコードは作成できません。インスタンスを登録する場合は、AWS_ALIAS_DNS_NAME 属性を含める必要があります。詳細については、AWS Cloud Map API リファレンスRegisterInstance を参照してください。

  • カスタムのヘルスチェックを含むサービスを使用してインスタンスを登録する場合、カスタムのヘルスチェックの初期ステータスは指定できません。デフォルトでは、カスタムのヘルスチェックの初期ステータスは [正常] です。初期のヘルスステータスを [異常] にするには、プログラムでインスタンスを登録し、AWS_INIT_HEALTH_STATUS 属性を含めます。詳細については、AWS Cloud Map API リファレンスRegisterInstance を参照してください。

サービスにインスタンスを登録するには、次の手順に従います。

AWS Management Console
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/cloudmap/ で AWS Cloud Map コンソールを開きます。

  2. ナビゲーションペインで [名前空間] を選択します。

  3. [名前空間] ページで、サービスインスタンスを登録するためのテンプレートとして使用するサービスを含む名前空間を選択します。

  4. [名前空間:namespace-name] ページで、使用するサービスを選択します。

  5. [Service:service-name] ページで、[サービスインスタンスの登録] を選択します。

  6. サービスインスタンスの登録ページで、インスタンスタイプを選択します。名前空間インスタンス検出設定に応じて、IP アドレス、Amazon EC2 インスタンス ID、または IP アドレスを持たないリソースのその他の識別情報を指定できます。

    注記

    EC2 インスタンスは HTTP 名前空間でのみ選択できます。

  7. サービスインスタンス ID には、サービスインスタンスに関連付けられた識別子を指定します。

    注記

    既存のインスタンスを更新する場合は、更新するインスタンスに関連付けられた識別子を指定します。次に、次のステップを使用して値を更新し、インスタンスを再登録します。

  8. 選択したインスタンスタイプに基づいて、次の手順を実行します。

    重要

    カスタム属性を指定する場合、キーでAWS_プレフィックス (大文字と小文字を区別しない) を使用することはできません。

    インスタンスタイプ ステップ

    IP アドレス

    1. 標準属性IPv4 アドレスに、アプリケーションがこのサービスインスタンスに関連付けられているリソースにアクセスできる IPv4 アドレスがあれば指定します。

    2. IPv6 アドレスには、アプリケーションがこのサービスインスタンスに関連付けられているリソースにアクセスできる IPv6 IP アドレスがあれば指定します。

    3. ポートには、このサービスインスタンスに関連付けられているリソースにアクセスするためにアプリケーションに含める必要があるポートを指定します。サービスに SRV レコードまたは Amazon Route 53 ヘルスチェックが含まれている場合、ポートが必要です。

    4. (オプション) カスタム属性で、リソースに関連付けるキーと値のペアを指定します。

    EC2 インスタンス
    1. EC2 インスタンス ID で、 AWS Cloud Map サービスインスタンスとして登録する Amazon EC2 インスタンスの ID を選択します。

    2. (オプション) カスタム属性で、リソースに関連付けるキーと値のペアを指定します。

    別のリソースを特定するための情報
    1. 標準属性で、サービス設定に CNAME DNS レコードが含まれている場合は、CNAME フィールドが表示されます。CNAME には、DNS クエリに応答して Route 53 が返すドメイン名を指定します (例: example.com)。

    2. カスタム属性で、IP アドレスまたは Amazon EC2 インスタンス ID ではないリソースの識別情報をキーと値のペアとして指定します。例えば、 というキーを指定functionし、Lambda 関数の名前を値として指定することで、Lambda 関数を登録できます。また、 というキーを指定nameし、プログラムによるインスタンス検出に使用できる名前を指定することもできます。

  9. [サービスインスタンスの登録] を選択します。

AWS CLI
  • RegisterInstance リクエストを送信すると:

    • ServiceId で指定したサービスで定義した DNS レコードごとに、対応する名前空間に関連付けられたホストゾーンでレコードが作成または更新されます。

    • サービスに HealthCheckConfig が含まれる場合、ヘルスチェック設定の設定に基づいてヘルスチェックが作成されます。

    • ヘルスチェックは、新しいレコードまたは更新された各レコードに関連付けられます。

    register-instance コマンドでサービスインスタンスを登録します (red の値は独自の値で置き換え)。

    aws servicediscovery register-instance \ --service-id srv-xxxxxxxxx \ --instance-id myservice-xx \ --attributes=AWS_INSTANCE_IPV4=172.2.1.3,AWS_INSTANCE_PORT=808
AWS SDK for Python (Boto3)
  1. まだBoto3がインストールしていない場合は、[こちら]のインストール、設定、使用に関する説明をBoto3参照してください。

  2. Boto3をインポートしてサービスとしてservicediscoveryを使用してください。

    import boto3 client = boto3.client('servicediscovery')
  3. RegisterInstance リクエストを送信すると:

    • ServiceId で指定したサービスで定義した DNS レコードごとに、対応する名前空間に関連付けられたホストゾーンでレコードが作成または更新されます。

    • サービスに HealthCheckConfig が含まれる場合、ヘルスチェック設定の設定に基づいてヘルスチェックが作成されます。

    • ヘルスチェックは、新しいレコードまたは更新された各レコードに関連付けられます。

    register_instance() コマンドでサービスインスタンスを登録します (red の値は独自の値で置き換え)。

    response = client.register_instance( Attributes={ 'AWS_INSTANCE_IPV4': '172.2.1.3', 'AWS_INSTANCE_PORT': '808', }, InstanceId='myservice-xx', ServiceId='srv-xxxxxxxxx', ) # If you want to see the response print(response)

    レスポンスオブジェクトの例

    { 'OperationId': '4yejorelbukcjzpnr6tlmrghsjwpngf4-k95yg2u7', 'ResponseMetadata': { '...': '...', }, }