ecs-cli up - Amazon Elastic Container Service

ecs-cli up

Amazon ECS 클러스터가 아직 없으면 생성하고, 해당 클러스터를 설정하는 데 필요한 AWS 리소스를 만듭니다.

이 명령은 이름이 amazon-ecs-cli-setup-cluster_name인 새 AWS CloudFormation 스택을 생성합니다. AWS Management Console에서 스택 생성 진행 상황을 확인할 수 있습니다.

중요

설명된 일부 기능은 최신 Amazon ECS CLI 버전에만 제공될 수도 있습니다. 최신 버전을 가져오는 방법에 대한 자세한 내용은 Amazon ECS CLI 설치 섹션을 참조하세요.

구문

ecs-cli up [--capability-iam | --instance-role instance-profile-name] [--keypair keypair_name] [--size n] [--azs availability_zone_1,availability_zone_2] [--security-group security_group_id[,security_group_id[,...]]] [--cidr ip_range] [--port port_number] [--subnets subnet_1,subnet_2] [--vpc vpc_id] [--extra-user-data string] [--instance-type instance_type] [--image-id ami_id] [--launch-type launch_type] [--no-associate-public-ip-address] [--force] [--tags key1=value1,key2=value2] [--cluster cluster_name] [--region region] [--empty] [--verbose] [--help]

옵션

이름

설명

--capability-iam

이 명령이 IAM 리소스를 생성할 수 있다는 사실을 확인합니다.

참고

이 파라미터는 EC2 시작 유형을 사용하는 태스크에서만 지원됩니다.

이 파라미터는 --instance-role을 사용하여 인스턴스 프로파일 이름을 지정하지 않을 경우에 필요합니다. 두 옵션을 모두 지정할 수는 없습니다.

필수 항목 여부: 아니요

--keypair keypair_name

클러스터 내 EC2 인스턴스에 대한 SSH 액세스가 가능하도록 기존 Amazon EC2 키 쌍의 이름을 지정합니다.

참고

이 파라미터는 EC2 시작 유형을 사용하는 태스크에서만 지원됩니다.

키 쌍을 생성하는 방법에 대한 자세한 내용은 Linux 인스턴스에 대한 Amazon EC2 사용 설명서의 see Amazon EC2를 사용한 설정을 참조하세요.

유형: 문자열

필수 항목 여부: 아니요

--size n

클러스터를 시작 및 등록할 인스턴스의 개수를 지정합니다.

참고

이 파라미터는 EC2 시작 유형을 사용하는 태스크에서만 지원됩니다.

유형: 정수

기본값: 1

필수 항목 여부: 아니요

--azs availability_zone_1,availability_zone_2

서브넷을 생성할 VPC 가용 영역 2개의 쉼표로 구분된 목록을 지정합니다(각 영역은 반드시 available 상태여야 함). --vpc 옵션을 사용하여 VPC ID를 지정하지 않는 경우 이 옵션을 권장합니다.

주의

이 옵션을 비워 두면 무작위로 선택한 영역을 사용할 수 없을 때 컨테이너 인스턴스가 시작되지 않을 수 있습니다.

유형: 문자열

필수 항목 여부: 아니요

--security-group security_group_id[,security_group_id[,...]]

컨테이너 인스턴스와 연결할 기존 보안 그룹의 쉼표로 구분된 목록을 지정합니다. 여기서 보안 그룹을 지정하지 않으면 새 보안 그룹이 생성됩니다.

자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서보안 그룹을 참조하세요.

필수 항목 여부: 아니요

--cidr ip_range

클러스터의 컨테이너 인스턴스에 사용할 보안 그룹의 CIDR/IP 범위를 지정합니다.

참고

--security-group 옵션을 사용하여 기존 보안 그룹을 지정하는 경우 이 파라미터는 무시됩니다.

유형: CIDR/IP 범위

기본값: 0.0.0.0/0

필수 항목 여부: 아니요

--port port_number

클러스터의 컨테이너 인스턴스에 사용할 보안 그룹에서 열 포트를 지정합니다.

참고

--security-group 옵션을 사용하여 기존 보안 그룹을 지정하는 경우 이 파라미터는 무시됩니다.

유형: Integer

기본값: 80

필수 항목 여부: 아니요

--subnets subnet_1,subnet_2

컨테이너 인스턴스를 시작할 기존 VPC 서브넷 ID의 쉼표로 구분된 목록을 지정합니다.

유형: String

필수 여부: --vpc 옵션을 사용하여 VPC를 지정하는 경우 이 옵션은 필수 항목입니다.

--vpc vpc_id

컨테이너 인스턴스를 시작할 기존 VPC의 ID를 지정합니다. VPC ID를 지정하는 경우 --subnets 옵션을 사용하여 해당 VPC 내 기존 서브넷의 목록을 지정해야 합니다. VPC ID를 지정하지 않을 경우 2개의 서브넷을 포함하는 VPC가 새로 생성됩니다.

유형: 문자열

필수 항목 여부: 아니요

--extra-user-data string

컨테이너 인스턴스에 대한 추가 사용자 데이터를 지정합니다. 파일은 shell 스크립트 또는 cloud-init 명령일 수 있습니다. 파일은 인스턴스를 클러스터에 조인하도록 지시하는 Amazon ECS CLI에서 제공한 사용자 데이터와 함께 MIME 멀티파트 아카이브에 패키지됩니다. 자세한 내용은 사용자 데이터 지정 섹션을 참조하세요.

유형: 문자열

필수 항목 여부: 아니요

--instance-type instance_type

컨테이너 인스턴스의 Amazon EC2 인스턴스 유형을 지정합니다. A1 인스턴스 유형을 지정하고(예: a1.medium) --image-id 파라미터를 생략한 경우 ECS CLI는 컨테이너 인스턴스에 Amazon ECS 최적화 Amazon Linux 2(arm64) AMI ID를 사용합니다.

참고

이 파라미터는 EC2 시작 유형을 사용하는 태스크에서만 지원됩니다.

EC2 인스턴스 유형에 대한 자세한 내용은 Amazon EC2 인스턴스를 참조하세요.

유형: String

기본값: t2.micro

필수 항목 여부: 아니요

--image-id ami_id

컨테이너 인스턴스에 사용할 Amazon EC2 AMI ID를 지정합니다.

AMI ID를 지정하지 않은 경우, Amazon ECS CLI는 클러스터 리소스 생성 프로세스 도중 Systems Manager 파라미터 스토어 API를 쿼리하여 안정적인 최신 Amazon ECS 최적화 Amazon Linux 2 AMI를 자동으로 가져옵니다. 이 경우 사용 중인 사용자 계정에 필수 Systems Manager 권한이 있어야 합니다. 자세한 내용은 Amazon ECS 최적화 AMI 메타데이터 검색 섹션을 참조하세요.

--instance-type 파라미터에 대해 A1 인스턴스 유형을 지정하고 --image-id 파라미터를 생략한 경우 ECS CLI는 컨테이너 인스턴스에 Amazon ECS 최적화 Amazon Linux 2(arm64) AMI ID를 사용합니다.

참고

이 파라미터는 EC2 시작 유형을 사용하는 태스크에서만 지원됩니다.

유형: String

기본값: 지정한 리전의 안정적인 최신 Amazon ECS 최적화 AMI

필수 항목 여부: 아니요

--no-associate-public-ip-address

이 VPC의 새 인스턴스에 퍼블릭 IP 주소를 할당하지 않습니다. 이 옵션을 지정하지 않으면 이 VPC의 새 인스턴스가 자동으로 할당된 퍼블릭 IP 주소를 수신합니다.

참고

이 파라미터는 EC2 시작 유형을 사용하는 태스크에서만 지원됩니다.

필수 항목 여부: 아니요

--force, -f

현재 구성과 일치하는 기존 리소스를 다시 생성하도록 합니다. 이 옵션은 이전에 실패한 시도에서 부실한 리소스를 정리하는 데 유용합니다.

필수 항목 여부: 아니요

--tags key1=value1,key2=value2

AWS 리소스에 적용할 메타데이터를 지정합니다. 각 태그는 키와 값(선택 사항)으로 구성됩니다. 태그는 key1=value1,key2=value2,key3=value3 형식을 사용합니다. 자세한 내용은 리소스 태그 지정 섹션을 참조하세요.

유형: 키-값 쌍

필수 항목 여부: 아니요

--instance-role, -f instance-profile-name

클러스터의 인스턴스에 사용자 지정 IAM 역할 이름을 지정합니다. 새 인스턴스 프로파일이 생성되어 이 역할에 추가됩니다.

참고

이 파라미터는 EC2 시작 유형을 사용하는 태스크에서만 지원됩니다.

이 파라미터는 --capability-iam 옵션을 지정하지 않을 경우에 필요합니다. 두 옵션을 모두 지정할 수는 없습니다.

필수 항목 여부: 아니요

--launch-type launch_type

사용할 시작 유형을 지정합니다. 사용할 수 있는 옵션은 FARGATE 또는 EC2입니다. 시작 유형에 대한 자세한 내용은 Amazon ECS 시작 유형 섹션을 참조하세요.

이러한 옵션을 사용하면 클러스터 구성에 저장된 기본 시작 유형이 재정의됩니다.

유형: 문자열

필수 항목 여부: 아니요

--verbose, --debug

디버깅 로깅을 활성화합니다. 이렇게 하면 진단 문제를 돕기 위해 보다 세부적인 명령 출력이 제공됩니다.

필수 항목 여부: 아니요

--region, -r region

사용할 AWS 리전을 지정합니다. 기본값은 configure 명령을 이용해 구성된 클러스터입니다.

유형: 문자열

필수 항목 여부: 아니요

--cluster-config cluster_config_name

사용할 Amazon ECS 클러스터 구성의 이름을 지정합니다. 기본값은 기본값으로 설정된 클러스터 구성입니다.

유형: 문자열

필수 항목 여부: 아니요

--ecs-profile ecs_profile

사용할 Amazon ECS 프로필 구성의 이름을 지정합니다. 기본값은 configure profile 명령을 사용하여 구성된 프로필입니다.

유형: 문자열

필수 항목 여부: 아니요

--aws-profile aws_profile

사용할 AWS 프로필을 지정합니다. ~/.aws/credentials의 기존 명명된 프로필로부터 AWS 자격 증명을 사용할 수 있습니다.

유형: 문자열

필수 항목 여부: 아니요

--cluster, -c cluster_name

사용할 Amazon ECS 클러스터 이름을 지정합니다. 기본값은 configure 명령을 이용해 구성된 클러스터입니다.

유형: 문자열

필수 항목 여부: 아니요

--empty, -e

리소스 없이 ECS 클러스터를 생성하도록 지정합니다. 리소스를 생성하는 다른 플래그도 지정된 경우, 그러한 플래그는 무시되고 경고가 표시됩니다.

필수 항목 여부: 아니요

--help, -h

지정한 명령에 대한 도움말을 표시합니다.

필수 항목 여부: 아니요

사용자 데이터 지정

EC2 시작 유형을 사용하는 태스크를 시작할 때 ECS CLI는 항상 다음과 같은 사용자 데이터를 포함하는 컨테이너 인스턴스를 생성합니다.

#!/bin/bash echo ECS_CLUSTER={ clusterName } >> /etc/ecs/ecs.config

이 사용자 데이터는 컨테이너 인스턴스가 ECS 클러스터에 조인하도록 지시합니다. 필요에 따라 --extra-user-data 플래그를 사용한 추가 사용자 데이터를 포함시킬 수도 있습니다. 플래그는 여러 번 지정할 수 있습니다. 예를 들면, 추가 사용자 데이터는 shell 스크립트 또는 cloud-init 명령일 수 있습니다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서시작 시 Linux 인스턴스에서 명령 실행을 참조하세요.

Amazon ECS CLI는 사용자 데이터를 가져와 컨테이너 인스턴스의 cloud-init에서 사용할 수 있는 MIME 멀티파트 아카이브로 압축합니다. Amazon ECS CLI를 사용하면 기존의 MIME 멀티파트 아카이브를 --extra-user-data를 사용해 전달할 수 있습니다. Amazon ECS CLI는 기존 아카이브의 압축을 푼 다음, 최종 아카이브에 다시 압축합니다(모든 헤더 및 콘텐츠 유형 정보는 그대로 유지). 다음은 그 한 예입니다.

ecs-cli up \ --capability-iam \ --extra-user-data my-shellscript \ --extra-user-data my-cloud-boot-hook \ --extra-user-data my-mime-multipart-archive \ --launch-type EC2

리소스 태그 지정

Amazon ECS CLI는 AWS 리소스에 대한 리소스 태그 형식의 메타데이터 추가를 지원합니다. 각 태그는 키와 값(선택 사항)으로 구성됩니다. 리소스 태그는 비용 할당, 자동화 및 액세스 제어에 사용될 수 있습니다. 자세한 내용은 Amazon ECS 리소스 태깅 섹션을 참조하세요.

ecs-cli up 명령을 사용할 때 리소스 태그를 지정하면 AWS CloudFormation 스택에서 생성된 다음 리소스와 Amazon ECS 클러스터에 태그를 지정할 수 있습니다.

  • 컨테이너 인스턴스

    참고

    컨테이너 인스턴스에서 태그를 허용하려면 새로운 Amazon ECS 리소스 ARN 형식을 선택해야 합니다. 자세한 내용은 Amazon 리소스 이름(ARN) 및 ID 섹션을 참조하세요.

  • VPC

  • 서브넷

  • 인터넷 게이트웨이

  • 라우팅 테이블

  • 보안 그룹

  • Autoscaling 그룹

참고

Autoscaling 그룹의 경우 ECS CLI는 Name 태그를 추가합니다. 이 태그의 값은 ECS Instance - <CloudFormation stack name>이며 컨테이너 인스턴스로 전파됩니다. Name 태그를 지정하여 이 동작을 재정의할 수 있습니다.

예제

EC2 시작 유형을 사용하는 태스크에 대한 클러스터 생성

이 예제에서는 c4.large 컨테이너 인스턴스 네 개로 된 클러스터를 호출하여 id_rsa라는 EC2 키 쌍을 사용하도록 구성합니다.

ecs-cli up --keypair id_rsa --capability-iam --size 4 --instance-type c4.large --launch-type EC2

출력:

INFO[0001] Using recommended Amazon Linux AMI with ECS Agent 1.17.3 and Docker version 17.12.1-ce INFO[0000] Created cluster cluster=ecs-cli-ec2-demo INFO[0000] Waiting for your cluster resources to be created INFO[0001] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0061] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0121] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0181] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS Cluster creation succeeded. VPC created: vpc-abcd1234 Security Group created: sg-abcd1234 Subnets created: subnet-abcd1234 Subnets created: subnet-dcba4321

Amazon ECS 최적화 Amazon Linux 2(arm64) AMI를 사용하는 컨테이너 인스턴스로 클러스터 생성

이 예시는 Amazon ECS 최적화 Amazon Linux 2(arm64) AMI를 사용하게 될 a1.medium 컨테이너 인스턴스 하나로 구성된 클러스터를 가져옵니다.

ecs-cli up --capability-iam --instance-type a1.medium --launch-type EC2 --region us-east-2

출력:

WARN[0000] You will not be able to SSH into your EC2 instances without a key pair. INFO[0000] Using Arm ecs-optimized AMI because instance type was a1.medium INFO[0001] Using recommended Amazon Linux 2 AMI with ECS Agent 1.25.3 and Docker version 18.06.1-ce INFO[0000] Created cluster cluster=ecs-cli-ec2-demo INFO[0000] Waiting for your cluster resources to be created INFO[0001] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0061] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0121] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0181] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS Cluster creation succeeded. VPC created: vpc-abcd1234 Security Group created: sg-abcd1234 Subnets created: subnet-abcd1234 Subnets created: subnet-dcba4321

Fargate 시작 유형을 사용하는 태스크에 대한 클러스터 생성

이 예제에서는 Fargate 태스크를 위한 클러스터를 호출하고 서브넷 두 개를 포함하는 새 VPC를 생성합니다.

ecs-cli up --launch-type FARGATE

출력:

INFO[0001] Created cluster cluster=ecs-cli-fargate-demo region=us-west-2 INFO[0003] Waiting for your cluster resources to be created... INFO[0003] Cloudformation stack status stackStatus="CREATE_IN_PROGRESS" INFO[0066] Waiting for your cluster resources to be created... INFO[0066] Cloudformation stack status stackStatus="CREATE_IN_PROGRESS" VPC created: vpc-abcd1234 Subnets created: subnet-abcd1234 Subnets created: subnet-dcba4321 Cluster creation succeeded.

빈 클러스터 생성

이 예제에서는 리소스가 없는 ecs-cli-empty-demo라는 빈 클러스터를 생성합니다.

ecs-cli up --empty --cluster ecs-cli-empty-demo

출력:

INFO[0000] Created cluster cluster=ecs-cli-empty-demo region=us-east-1 Cluster creation succeeded.