자습서: Amazon ECS CLI로 서비스 검색을 사용하는 Amazon ECS 서비스 생성 - Amazon Elastic Container Service

자습서: Amazon ECS CLI로 서비스 검색을 사용하는 Amazon ECS 서비스 생성

이 자습서에서는 서비스 검색을 사용하도록 구성된 Amazon ECS 서비스를 생성하는 간단한 연습을 보여줍니다. 서비스 검색 구성 값들은 대부분 ECS 파라미터 파일 또는 플래그로 지정할 수 있습니다. 플래그를 사용할 때 두 플래그가 모두 있다면 그 플래그는 ECS 파라미터 파일보다 우선합니다. Amazon ECS CLI를 사용하면 compose 프로젝트 이름이 ECS 서비스의 이름으로 사용됩니다.

사전 조건

계속하기 전에 다음 사전 조건을 완료해야 합니다.

  • AWS 계정을 설정합니다.

  • Amazon ECS CLI를 설치합니다. 자세한 내용은 Amazon ECS CLI 설치 섹션을 참조하세요.

  • VPC를 만듭니다. 자세한 정보는 Virtual Private Cloud 생성을 참조하십시오.

  • 선택 사항: AWS CloudShell은 고객에게 자체 EC2 인스턴스를 생성할 필요 없이 명령줄을 제공하는 도구입니다. 자세한 내용은 AWS CloudShell 사용 설명서에서 AWS CloudShell란 무엇입니까? 단원을 참조하세요.

Amazon ECS CLI 구성

이 자습서를 시작하려면 Amazon ECS CLI를 설치하고 구성해야 합니다. 자세한 내용은 Amazon ECS CLI 설치 섹션을 참조하세요.

Amazon ECS CLI가 사용자를 대신해 API 요청을 하도록 하려면 자격 증명이 필요합니다. ECS CLI는 환경 변수, 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 개발자 안내서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. 두 서비스가 DNS를 사용하여 VPC 내에서 서로를 검색할 수 있는지 확인하세요. DNS 호스트 이름은 다음의 형식을 사용합니다. <service_discovery_service_name>.<service_discovery_namespace>. 이 예에서는 frontend.tutorial에서 frontend 서비스를 검색할 수 있으며 backend.tutorial에서는 backend 서비스를 검색할 수 있습니다. 이들은 프라이빗 DNS 네임스페이스이기 때문에 지정된 VPC 내에 있을 때에만 이러한 DNS 이름을 확인합니다.

  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. 정리를 완료하려면 backend 서비스를 그와 함께 생성된 프라이빗 DNS 네임스페이스와 함께 삭제하세요. Amazon ECS CLI는 프라이빗 DNS 네임스페이스에 대한 AWS CloudFormation 스택을 그것이 생성된 Amazon ECS 서비스와 연결합니다. 서비스가 삭제되면 네임스페이스도 삭제됩니다.

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