Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

チュートリアル : Amazon ECS CLI を使用して サービス検出 を使用する Amazon ECS サービスを作成する

このチュートリアルでは、サービス検出 を使用するように設定された Amazon ECS サービスを作成作成する簡単なウォークスルーを示します。多くの サービス検出 設定値は、ECS パラメータファイルまたはフラグのいずれを使用して指定できます。両方が存在する場合、使用されているフラグは ECS パラメータファイルより優先されます。Amazon ECS CLI を使用する場合は、構成プロジェクト名が ECS サービスの名前として使用されます。

前提条件

続行する前に、次の前提条件を満たしている必要があります。

  • AWS アカウントをセットアップします。

  • Amazon ECS CLI のインストール詳細については、「Amazon ECS CLI のインストール」を参照してください。

Amazon ECS CLI を設定する

このチュートリアルを開始する前に、Amazon ECS CLI をインストールして設定する必要があります。詳細については、「Amazon ECS CLI のインストール」を参照してください。

Amazon ECS CLI では、ユーザーに代わって API リクエストを作成するために認証情報が必要です。これは、環境変数、AWS プロファイル、または Amazon ECS プロファイルから認証情報をプルできます。詳細については、「Amazon ECS CLI の設定」を参照してください。

Amazon ECS CLI 設定を作成するには

  1. クラスター設定を作成します。

    ecs-cli configure --cluster ec2-tutorial --region us-east-1 --default-launch-type EC2 --config-name ec2-tutorial
  2. アクセスキーとシークレットキーを使用してプロファイルを作成します。

    ecs-cli configure profile --access-key AWS_ACCESS_KEY_ID --secret-key AWS_SECRET_ACCESS_KEY --profile-name ec2-tutorial

    注記

    Amazon ECS CLI を初めて設定する場合は、これらの設定がデフォルトとしてマークされています。Amazon ECS CLI をすでに設定している場合は、Amazon Elastic Container Service Developer Guide の「Amazon ECS コマンドラインリファレンス」を参照して、これをデフォルト設定およびプロファイルとして設定します。

サービス検出 を使用するように設定された Amazon ECS サービスを作成する

Amazon ECS CLI で サービス検出 を使用するように設定された Amazon ECS サービスを作成するには、以下のステップを実行します。

サービス検出 を使用するように設定された Amazon ECS サービスを作成するには

  1. backend という名前の Amazon ECS サービスを作成し、VPC 内で tutorial という名前のプライベート DNS 名前空間を作成します。この例では、タスクが awsvpc ネットワークモードを使用しているため、container_namecontainer_port の値は必須ではありません。

    ecs-cli compose --project-name backend service up --private-dns-namespace tutorial --vpc vpc-04deee8176dce7d7d --enable-service-discovery

    出力:

    INFO[0001] Using ECS task definition                     TaskDefinition="backend:1"
    INFO[0002] Waiting for the private DNS namespace to be created...
    INFO[0002] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
    WARN[0033] Defaulting DNS Type to A because network mode was awsvpc
    INFO[0033] Waiting for the Service Discovery Service to be created...
    INFO[0034] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
    INFO[0065] Created an ECS service                        service=backend taskDefinition="backend:1"
    INFO[0066] Updated ECS service successfully              desiredCount=1 serviceName=backend
    INFO[0081] (service backend) has started 1 tasks: (task 824b5a76-8f9c-4beb-a64b-6904e320630e).  timestamp="2018-09-12 00:00:26 +0000 UTC"
    INFO[0157] Service status                                desiredCount=1 runningCount=1 serviceName=backend
    INFO[0157] ECS Service has reached a stable state        desiredCount=1 runningCount=1 serviceName=backend
  2. 同じプライベート DNS 名前空間に frontend という名前の別のサービスを作成します。名前空間がすでに存在しているため、 Amazon ECS CLI は新しい名前空間を作成する代わりにそれを使用します。

    ecs-cli compose --project-name frontend service up --private-dns-namespace tutorial --vpc vpc-04deee8176dce7d7d --enable-service-discovery

    出力:

    INFO[0001] Using ECS task definition                     TaskDefinition="frontend:1"
    INFO[0002] Using existing namespace ns-kvhnzhb5vxplfmls
    WARN[0033] Defaulting DNS Type to A because network mode was awsvpc
    INFO[0033] Waiting for the Service Discovery Service to be created...
    INFO[0034] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
    INFO[0065] Created an ECS service                        service=frontend taskDefinition="frontend:1"
    INFO[0066] Updated ECS service successfully              desiredCount=1 serviceName=frontend
    INFO[0081] (service frontend) has started 1 tasks: (task 824b5a76-8f9c-4beb-a64b-6904e320630e).  timestamp="2018-09-12 00:00:26 +0000 UTC"
    INFO[0157] Service status                                desiredCount=1 runningCount=1 serviceName=frontend
    INFO[0157] ECS Service has reached a stable state        desiredCount=1 runningCount=1 serviceName=frontend
  3. 2 つのサービスが DNS を使用して VPC 内で互いを検出できることを確認します。DNS ホスト名は、<service_discovery_service_name>.<service_discovery_namespace> の形式を使用します。この例では、frontend サービスは frontend.tutorial で検出され、backend サービスは backend.tutorial で検出されます。これらはプライベート DNS 名前空間であるため、これらの DNS 名は指定された VPC 内でのみ解決されます。

  4. サービス検出 設定を更新するには、frontend サービスの設定を更新します。更新可能な値は、DNS TTL およびヘルスチェックのカスタム設定失敗しきい値の値です。

    ecs-cli compose --project-name frontend service up --update-service-discovery --dns-type SRV --dns-ttl 120 --healthcheck-custom-config-failure-threshold 2

    出力:

    INFO[0001] Using ECS task definition                     TaskDefinition="frontend:1"
    INFO[0001] Updated ECS service successfully              desiredCount=1 serviceName=frontend
    INFO[0001] Service status                                desiredCount=1 runningCount=1 serviceName=frontend
    INFO[0001] ECS Service has reached a stable state        desiredCount=1 runningCount=1 serviceName=frontend
    INFO[0002] Waiting for your Service Discovery resources to be updated...
    INFO[0002] Cloudformation stack status                   stackStatus=UPDATE_IN_PROGRESS
  5. クリーンアップするには、Amazon ECS サービスと サービス検出 リソースを削除します。frontend サービスが削除されると、Amazon ECS CLI は関連する サービス検出 サービスを自動的に削除します。

    ecs-cli compose --project-name frontend service rm
    INFO[0000] Updated ECS service successfully              desiredCount=0 serviceName=frontend
    INFO[0001] Service status                                desiredCount=0 runningCount=1 serviceName=frontend
    INFO[0016] Service status                                desiredCount=0 runningCount=0 serviceName=frontend
    INFO[0016] (service frontend) has stopped 1 running tasks: (task 824b5a76-8f9c-4beb-a64b-6904e320630e).  timestamp="2018-09-12 00:37:25 +0000 UTC"
    INFO[0016] ECS Service has reached a stable state        desiredCount=0 runningCount=0 serviceName=frontend
    INFO[0016] Deleted ECS service                           service=frontend
    INFO[0016] ECS Service has reached a stable state        desiredCount=0 runningCount=0 serviceName=frontend
    INFO[0027] Waiting for your Service Discovery Service resource to be deleted...
    INFO[0027] Cloudformation stack status                   stackStatus=DELETE_IN_PROGRESS
  6. クリーンアップを完了するには、サービスを作成したプライベート DNS 名前空間と共に backend を削除します。Amazon ECS CLI は、プライベート DNS 名前空間の AWS CloudFormation スタックを、作成された Amazon ECS サービスと関連付けます。サービスが削除されると、名前空間も削除されます。

    ecs-cli compose --project-name backend service rm --delete-namespace