アプリケーションコンポーネントの AWS Cloud Map サービスの作成 - AWS Cloud Map

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

アプリケーションコンポーネントの AWS Cloud Map サービスの作成

名前空間を作成したら、特定の目的を果たすアプリケーションのさまざまなコンポーネントを表すサービスを作成できます。例えば、支払いを処理するアプリケーション内のリソースのサービスを作成できます。

注記

大文字と小文字だけが異なる名前 ( EXAMPLEや の例など) のDNSクエリからアクセスできる複数のサービスを作成することはできません。そうしようとすると、これらのサービスDNSの名前が同じになります。API 呼び出しによってのみアクセス可能な名前空間を使用する場合、大文字と小文字だけが異なる名前を持つサービスを作成できます。

、 AWS Management Console、および SDK for Python を使用してサービスを作成するには AWS CLI、次の手順に従います。

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

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

  3. [名前空間] ページで、サービスを追加する名前空間を選択します。

  4. 名前空間: namespace-name ページで、サービスの作成を選択します。

  5. サービス名には、このサービスの使用時に登録するインスタンスを説明する名前を入力します。値は、API呼び出しまたはDNSクエリで AWS Cloud Map サービスインスタンスを検出するために使用されます。

    注記

    インスタンスの登録時に SRVレコード AWS Cloud Map を作成し、特定のSRV形式 ( などHAProxy) を必要とするシステムを使用している場合は、サービス名に以下を指定します。

    • 例えば、アンダースコア (_) で名前を開始します。例、_exampleservice

    • ._tcp のように._protocol、名前を で終了します。

    インスタンスを登録すると、 は SRVレコード AWS Cloud Map を作成し、サービス名と名前空間名を連結して名前を割り当てます。次に例を示します。

    _exampleservice._tcp.example.com

  6. (オプション) サービスの説明に、サービスの説明を入力します。ここで入力した説明は、サービスページと各サービスの詳細ページに表示されます。

  7. 名前空間がDNSクエリをサポートしている場合は、サービス検出設定で、サービスレベルで検出可能性を設定できます。API 呼び出しとDNSクエリの両方を許可するか、このサービスのインスタンスの検出のみAPIを許可するかを選択します。

    注記

    API 呼び出しを選択した場合、 はインスタンスの登録時にSRVレコードを作成し AWS Cloud Map ません。

    API と DNSを選択した場合は、以下の手順に従ってDNSレコードを設定します。DNS レコードを追加または削除できます。

    1. ルーティングポリシーでは、インスタンスの登録時に が作成するDNSレコード AWS Cloud Map の Amazon Route 53 ルーティングポリシーを選択します。加重ルーティング複数値回答ルーティングのいずれかを選択できます。詳細については、「ルーティングポリシー」を参照してください。

      注記

      コンソールを使用して、インスタンスの登録時に Route 53 エイリアスレコードを作成する AWS Cloud Map ように を設定することはできません。プログラム AWS Cloud Map でインスタンスを登録するときに Elastic Load Balancing ロードバランサーのエイリアスレコードを作成する場合は、ルーティングポリシー加重ルーティングを選択します。

    2. レコードタイプで、Route 53 がDNSクエリに応答して返すものを決定するDNSレコードタイプを選択します AWS Cloud Map。詳細については、「レコードタイプ」を参照してください。

    3. にはTTL、数値を指定して、サービスレベルで有効期限 (TTL) 値を秒単位で定義します。の値は、DNSリゾルバーが別のDNSクエリを Amazon Route 53 に転送して更新された設定を取得するまでに、リゾルバーがこのレコードの情報をキャッシュする時間TTLを決定します。

  8. ヘルスチェック設定ヘルスチェックオプションで、サービスインスタンスに適用されるヘルスチェックのタイプを選択します。ヘルスチェックを設定しないか、インスタンスの Route 53 ヘルスチェックまたは外部ヘルスチェックのいずれかを選択できます。詳細については、「AWS Cloud Map サービスヘルスチェックの設定」を参照してください。

    注記

    Route 53 ヘルスチェックは、パブリックDNS名前空間内のサービスに対してのみ設定できます。

    Route 53 ヘルスチェックを選択した場合は、次の情報を入力します。

    1. Failure しきい値には、サービスインスタンスがヘルスステータスを変更するために合格または不合格にする必要がある連続する Route 53 ヘルスチェックの数を定義する 1~10 の数値を指定します。

    2. ヘルスチェックプロトコルでは、Route 53 がサービスインスタンスのヘルスをチェックするために使用する方法を選択します。

    3. HTTP または HTTPSヘルスチェックプロトコルを選択した場合、ヘルスチェックパスに、ヘルスチェックの実行時に Amazon Route 53 がリクエストするパスを指定します。パスには、ファイル /docs/route53-health-check.html などの任意の値を指定できます。リソースが正常である場合、返される値は 2xx または 3xx 形式のHTTPステータスコードです。クエリ文字列パラメータ (/welcome.html?language=jp&login=y など) を含めることもできます。 AWS Cloud Map コンソールでは、先行するスラッシュ (/) 文字が自動的に追加されます。

    Route 53 ヘルスチェックの詳細については、「Amazon Route 53 デベロッパーガイド」の「Amazon Route 53 がヘルスチェックが正常かどうかを判断する方法」を参照してください。

  9. (オプション) タグタグを追加 を選択し、名前空間にタグを付けるキーと値を指定します。1 つ以上のタグを指定して、名前空間に追加することができます。タグを使用すると、 AWS リソースをより簡単に管理できるようにリソースを分類できます。詳細については、「AWS Cloud Map リソースのタグ付け」を参照してください。

  10. [Create service (サービスの作成)] を選択します。

AWS CLI
  • create-service コマンドを使用してサービスを作成します。値を独自のred値に置き換えます。

    aws servicediscovery create-service \ --name service-name \ --namespace-id ns-xxxxxxxxxxx \ --dns-config "NamespaceId=ns-xxxxxxxxxxx,RoutingPolicy=MULTIVALUE,DnsRecords=[{Type=A,TTL=60}]"

    出力:

    { "Service": { "Id": "srv-xxxxxxxxxxx", "Arn": "arn:aws:servicediscovery:us-west-2:123456789012:service/srv-xxxxxxxxxxx", "Name": "service-name", "NamespaceId": "ns-xxxxxxxxxxx", "DnsConfig": { "NamespaceId": "ns-xxxxxxxxxxx", "RoutingPolicy": "MULTIVALUE", "DnsRecords": [ { "Type": "A", "TTL": 60 } ] }, "CreateDate": 1587081768.334, "CreatorRequestId": "567c1193-6b00-4308-bd57-ad38a8822d25" } }
AWS SDK for Python (Boto3)

まだBoto3がインストールしていない場合は、[こちら]のインストール、設定、使用に関する説明をBoto3参照してください。

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

    import boto3 client = boto3.client('servicediscovery')
  2. を使用してサービスを作成しますcreate_service()。値を独自のred値に置き換えます。詳細については、「create_service」を参照してください。

    response = client.create_service( DnsConfig={ 'DnsRecords': [ { 'TTL': 60, 'Type': 'A', }, ], 'NamespaceId': 'ns-xxxxxxxxxxx', 'RoutingPolicy': 'MULTIVALUE', }, Name='service-name', NamespaceId='ns-xxxxxxxxxxx', )

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

    { 'Service': { 'Arn': 'arn:aws:servicediscovery:us-west-2:123456789012:service/srv-xxxxxxxxxxx', 'CreateDate': 1587081768.334, 'DnsConfig': { 'DnsRecords': [ { 'TTL': 60, 'Type': 'A', }, ], 'NamespaceId': 'ns-xxxxxxxxxxx', 'RoutingPolicy': 'MULTIVALUE', }, 'Id': 'srv-xxxxxxxxxxx', 'Name': 'service-name', 'NamespaceId': 'ns-xxxxxxxxxxx', }, 'ResponseMetadata': { '...': '...', }, }

次のステップ

サービスを作成したら、アプリケーションリソースを、アプリケーションがリソースを見つける方法に関する情報を含むサービスインスタンスとして登録できます。 AWS Cloud Map サービスインスタンスの登録の詳細については、「」を参照してくださいリソースを AWS Cloud Map サービスインスタンスとして登録する

サービスの作成後に、エンドポイントの重み、APIタイムアウト、再試行ポリシーなどのカスタムメタデータをサービス属性として指定することもできます。詳細については、「 AWS Cloud Map APIリファレンスUpdateServiceAttributes」のServiceAttributes「」および「」を参照してください。