Amazon ECS Windows 태스크를 Fargate에서 생성하는 방법 배우기

Amazon ECS Windows 태스크를 Fargate에서 생성하는 방법 배우기

Amazon ECS가 AWS Fargate를 지원하는 리전에서 Fargate를 태스크에 사용해 Amazon ECS 작업을 시작해 보세요. 다음 단계를 완료하면 AWS Fargate에서 Amazon ECS를 시작할 수 있어요.

출처: 문서

본문

사전 준비

시작하기 전에 Set up to use Amazon ECS의 단계를 완료하고, IAM 사용자가 AdministratorAccess IAM 정책 예제에 지정된 권한을 갖고 있는지 확인하세요.

콘솔은 Fargate 태스크에 필요한 태스크 실행 IAM 역할을 자동으로 생성하려고 해요. 콘솔이 이 IAM 역할을 만들 수 있도록 하려면 다음 중 하나가 참이어야 해요.

  • 사용자에게 관리자 액세스 권한이 있어요. 자세한 내용은 Set up to use Amazon ECS를 참고하세요.
  • 사용자에게 서비스 역할을 만들 수 있는 IAM 권한이 있어요. 자세한 내용은 Creating a Role to Delegate Permissions to an AWS Service를 참고하세요.
  • 관리자 액세스 권한이 있는 사용자가 태스크 실행 역할을 수동으로 만들어 계정에서 사용할 수 있게 해 두었어요. 자세한 내용은 Amazon ECS task execution IAM role을 참고하세요.

중요: 태스크 정의로 서비스를 만들 때 선택하는 보안 그룹은 인바운드 트래픽에 대해 포트 80이 열려 있어야 해요. 보안 그룹에 다음 인바운드 규칙을 추가하세요. 보안 그룹을 만드는 방법에 대한 자세한 내용은 Amazon EC2 User Guide의 Create a security group for your Amazon EC2 instance를 참고하세요.

유형(Type) 프로토콜(Protocol) 포트 범위(Port range) 소스(Source)
HTTP TCP 80 Anywhere (0.0.0.0/0)

1단계: 클러스터 생성

기본 VPC를 사용하는 windows라는 새 클러스터를 만들 수 있어요.

AWS Management Console로 클러스터를 만들려면

  1. 콘솔을 https://console.aws.amazon.com/ecs/v2 에서 엽니다.
  2. 탐색 모음에서 사용할 리전을 선택합니다.
  3. 탐색 창에서 Clusters를 선택합니다.
  4. Clusters 페이지에서 Create cluster를 선택합니다.
  5. Cluster configuration 아래의 Cluster name에 windows를 입력합니다.
  6. (선택 사항) Container Insights를 켜려면 Monitoring을 펼치고 Use Container Insights를 켭니다.
  7. (선택 사항) 클러스터를 식별하는 데 도움이 되도록 Tags를 펼치고 태그를 구성합니다.
    • [태그 추가] Add tag를 선택하고 다음을 수행합니다: Key에 키 이름을 입력하고, Value에 키 값을 입력합니다.
    • [태그 제거] 태그의 Key와 Value 오른쪽에 있는 Remove를 선택합니다.
  8. Create를 선택합니다.

2단계: Windows 태스크 정의 등록

Amazon ECS 클러스터에서 Windows 컨테이너를 실행하려면 먼저 태스크 정의를 등록해야 해요. 다음 태스크 정의 예제는 mcr.microsoft.com/windows/servercore/iis 컨테이너 이미지로 컨테이너 인스턴스의 포트 8080에 간단한 웹 페이지를 표시해요. (참고: 위 예제 코드는 포트 80을 사용합니다.)

AWS Management Console로 샘플 태스크 정의를 등록하려면

  1. 탐색 창에서 Task definitions를 선택합니다.
  2. Create new task definition, Create new task definition with JSON을 선택합니다.
  3. 다음 예제 태스크 정의를 상자에 복사해서 붙여 넣은 다음 Save를 선택합니다.
{
    "containerDefinitions": [
        {
            "command": ["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"],
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "essential": true,
            "cpu": 2048,
            "memory": 4096,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "name": "sample_windows_app",
            "portMappings": [
                {
                    "hostPort": 80,
                    "containerPort": 80,
                    "protocol": "tcp"
                }
            ]
        }
    ],
    "memory": "4096",
    "cpu": "2048",
    "networkMode": "awsvpc",
    "family": "windows-simple-iis-2019-core",
    "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
    "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"},
    "requiresCompatibilities": ["FARGATE"]
}
  1. 정보를 확인하고 Create를 선택합니다.

3단계: 태스크 정의로 서비스 생성

태스크 정의를 등록한 후에는 이를 사용해 클러스터에 태스크를 배치할 수 있어요. 다음 절차는 태스크 정의로 서비스를 만들고 클러스터에 태스크 하나를 배치해요.

콘솔로 태스크 정의에서 서비스를 만들려면

  1. 탐색 창에서 Clusters를 선택한 다음, 1단계에서 만든 클러스터를 선택합니다.
  2. Services 탭에서 Create를 선택합니다.
  3. Deployment configuration 아래에서 애플리케이션이 배포되는 방식을 지정합니다.
  4. Task definition에서 2단계에서 만든 태스크 정의를 선택합니다.
  5. Service name에 서비스 이름을 입력합니다.
  6. Desired tasks에 1을 입력합니다.
  7. Networking 아래에서 보안 그룹을 만들거나 기존 그룹을 선택할 수 있어요. 사용하는 보안 그룹에 사전 준비 항목에 나열된 인바운드 규칙이 있는지 확인하세요.
  8. Create를 선택합니다.

4단계: 서비스 보기

서비스가 클러스터에 태스크를 실행한 후, 서비스를 보고 브라우저에서 IIS 테스트 페이지를 열어 컨테이너가 실행 중인지 확인할 수 있어요.

참고: 컨테이너 인스턴스가 Windows 컨테이너 기본 레이어를 다운로드하고 추출하는 데 최대 15분이 걸릴 수 있어요.

서비스를 보려면

  1. 콘솔을 https://console.aws.amazon.com/ecs/v2 에서 엽니다.
  2. 탐색 창에서 Clusters를 선택합니다.
  3. 서비스를 실행한 클러스터를 선택합니다.
  4. Services 탭의 Service name에서 3단계에서 만든 서비스를 선택합니다.
  5. Tasks 탭을 선택한 다음 서비스의 태스크를 선택합니다.
  6. 태스크 페이지의 Configuration 섹션에서 Public IP 아래의 Open address를 선택합니다.

5단계: 정리(Clean Up)

Amazon ECS 클러스터 사용을 마쳤다면, 사용하지 않는 리소스에 대해 요금이 부과되지 않도록 연결된 리소스를 정리해야 해요. 태스크, 서비스, 클러스터, 컨테이너 인스턴스 같은 일부 Amazon ECS 리소스는 Amazon ECS 콘솔로 정리돼요. Amazon EC2 인스턴스, Elastic Load Balancing 로드 밸런서, Auto Scaling 그룹 같은 다른 리소스는 Amazon EC2 콘솔에서 수동으로 정리하거나 이를 생성한 CloudFormation 스택을 삭제해야 해요.

  1. 탐색 창에서 Clusters를 선택합니다.
  2. Clusters 페이지에서 이 튜토리얼을 위해 만든 클러스터를 선택합니다.
  3. Services 탭을 선택합니다.
  4. 서비스를 선택한 다음 Delete를 선택합니다.
  5. 확인 프롬프트에서 delete를 입력하고 Delete를 선택합니다. 서비스가 삭제될 때까지 기다립니다.
  6. Delete Cluster를 선택합니다. 확인 프롬프트에서 delete cluster-name을 입력하고 Delete를 선택합니다. 클러스터를 삭제하면 클러스터와 함께 생성된 연결 리소스(Auto Scaling 그룹, VPC, 로드 밸런서 포함)가 정리돼요.