Amazon ECS용 FSx for Windows File Server 파일 시스템 구성 방법

Amazon ECS용 FSx for Windows File Server 파일 시스템 구성 방법

FSx for Windows File Server 파일 시스템과 해당 파일 시스템에 액세스할 수 있는 컨테이너를 호스팅하는 Amazon ECS-Optimized Windows 인스턴스를 시작하는 방법을 배워요. 이를 위해 먼저 Directory Service AWS Managed Microsoft Active Directory를 만든 다음, FSx for Windows File Server File Server 파일 시스템과 Amazon EC2 인스턴스 및 태스크 정의가 있는 클러스터를 만들어요.

출처: 문서

본문

컨테이너가 FSx for Windows File Server 파일 시스템을 사용하도록 태스크 정의를 구성해요. 마지막으로 파일 시스템을 테스트해요.

Active Directory 또는 FSx for Windows File Server 파일 시스템을 실행하거나 삭제할 때마다 20~45분이 걸려요. 튜토리얼을 완료하는 데 최소 90분을 예약하거나 몇 세션에 걸쳐 완료할 준비를 해 주세요.

튜토리얼 전제 조건

  • 관리 사용자. Set up to use Amazon ECS 를 참고해 주세요.
  • (선택 사항) RDP 액세스를 통해 EC2 Windows 인스턴스에 연결하기 위한 PEM 키 페어. 키 페어를 만드는 방법은 Amazon EC2 User Guide 의 Amazon EC2 key pairs and Amazon EC2 instances 를 참고해 주세요.
  • 퍼블릭 및 프라이빗 서브넷이 하나 이상 있고 보안 그룹이 하나 있는 VPC. 기본 VPC를 사용할 수 있어요. NAT 게이트웨이 또는 디바이스는 필요하지 않아요. Directory Service는 Active Directory와 함께 NAT(Network Address Translation)를 지원하지 않아요. 이 기능이 작동하려면 Active Directory, FSx for Windows File Server 파일 시스템, ECS Cluster, EC2 인스턴스가 내 VPC 내에 있어야 해요. VPC 및 Active Directory에 대한 자세한 내용은 Create a VPC 및 Prerequisites for creating an AWS Managed Microsoft AD 를 참고해 주세요.
  • IAM ecsInstanceRole 및 ecsTaskExecutionRole 권한이 내 계정과 연결되어 있어야 해요. 이러한 서비스 연결 역할은 서비스가 내 대신 API 호출을 하고 컨테이너, 시크릿, 디렉터리 및 파일 서버에 액세스할 수 있게 해 줘요.

1단계: IAM 액세스 역할 만들기 AWS Management Console로 클러스터를 만들어요. ecsInstanceRole 이 있는지 확인하고 없으면 만드는 방법을 보려면 Amazon ECS container instance IAM role 을 참고해 주세요. 실제 프로덕션 환경에서는 역할 정책을 최소 권한으로 사용자 지정할 것을 권장해요. 이 튜토리얼을 진행하려면 다음 AWS 관리형 정책이 ecsInstanceRole 에 연결되어 있는지 확인하고, 아직 없으면 정책을 연결해 주세요.

  • AmazonEC2ContainerServiceforEC2Role
  • AmazonSSMManagedInstanceCore
  • AmazonSSMDirectoryServiceAccess

AWS 관리형 정책을 연결하려면:

  1. IAM 콘솔 을 엽니다.
  2. 탐색 창에서 Roles 를 선택합니다.
  3. AWS 관리형 역할 을 선택합니다.
  4. Permissions, Attach policies 를 선택합니다.
  5. 연결할 수 있는 정책을 좁힐 때는 Filter 를 사용합니다.
  6. 적절한 정책을 선택하고 Attach policy 를 선택합니다.

ecsTaskExecutionRole 이 있는지 확인하고 없으면 만드는 방법을 보려면 Amazon ECS task execution IAM role 을 참고해 주세요. 실제 프로덕션 환경에서는 역할 정책을 최소 권한으로 사용자 지정할 것을 권장해요. 이 튜토리얼을 진행하려면 다음 AWS 관리형 정책이 ecsTaskExecutionRole 에 연결되어 있는지 확인하고, 아직 없으면 정책을 연결해 주세요. 앞 섹션에 나온 절차를 사용해 AWS 관리형 정책을 연결해 주세요.

  • SecretsManagerReadWrite
  • AmazonFSxReadOnlyAccess
  • AmazonSSMReadOnlyAccess
  • AmazonECSTaskExecutionRolePolicy

2단계: Windows Active Directory(AD) 만들기 AWS Directory Service Administration Guide 의 Creating your AWS Managed Microsoft AD 에 설명된 단계를 따라 주세요. 이 튜토리얼용으로 지정한 VPC를 사용해 주세요. Creating your AWS Managed Microsoft AD 의 3단계에서 다음 단계에 사용할 사용자 이름과 관리자 암호를 저장해 주세요. 또한 완전한 디렉터리 DNS 이름을 다음 단계를 위해 기록해 두어 주세요. Active Directory가 생성되는 동안 다음 단계를 완료할 수 있어요.

다음 단계에 사용할 AWS Secrets Manager 시크릿을 만들어 주세요. 자세한 내용은 AWS Secrets Manager User Guide 의 Get started with Secrets Manager 를 참고해 주세요.

  1. Secrets Manager 콘솔 을 엽니다.
  2. Store a new secret 을 클릭합니다.
  3. Other type of secrets 를 선택합니다.
  4. Secret key/value 에서 첫 번째 행에 키 username 값 admin 을 만듭니다. + Add row 를 클릭합니다.
  5. 새 행에서 키 password 를 만듭니다. 값에 Create Your AWS Managed AD Directory 의 3단계에서 입력한 암호를 입력합니다.
  6. Next 버튼을 클릭합니다.
  7. 시크릿 이름과 설명을 제공합니다. Next 를 클릭합니다.
  8. Next 를 클릭합니다. Store 를 클릭합니다.
  9. Secrets 목록 페이지에서 방금 만든 시크릿을 클릭합니다.
  10. 다음 단계에 사용할 새 시크릿의 ARN을 저장해 둡니다.

Active Directory가 생성되는 동안 다음 단계로 진행할 수 있어요.

3단계: 보안 그룹 확인 및 업데이트 이 단계에서는 사용 중인 보안 그룹의 규칙을 확인하고 업데이트해요. 이를 위해 VPC용으로 생성된 기본 보안 그룹을 사용할 수 있어요.

보안 그룹을 확인하고 업데이트합니다. 아래 포트로/에서 데이터를 보내려면 보안 그룹을 만들거나 편집해야 해요. 이는 FSx for Windows File Server User Guide 의 Amazon VPC Security Groups 에 설명되어 있어요. 이렇게 하려면 다음 인바운드 규칙 표의 첫 번째 행에 표시된 보안 그룹 인바운드 규칙을 만들면 돼요. 이 규칙은 보안 그룹에 할당된 네트워크 인터페이스(및 관련 인스턴스)의 인바운드 트래픽을 허용해요. 만든 모든 클라우드 리소스는 동일한 VPC 내에 있고 동일한 보안 그룹에 연결돼요. 따라서 이 규칙은 FSx for Windows File Server 파일 시스템, Active Directory, ECS 인스턴스에 트래픽을 보내고 받을 수 있게 해 줘요. 다른 인바운드 규칙은 웹사이트 제공과 ECS 인스턴스에 연결하기 위한 RDP 액세스를 위한 트래픽을 허용해요.

이 튜토리얼에 필요한 보안 그룹 인바운드 규칙은 다음과 같아요.

유형(Type) 프로토콜(Protocol) 포트 범위(Port range) 소스(Source)
All traffic All All sg-securitygroup
HTTPS TCP 443 0.0.0.0/0
RDP TCP 3389 your laptop IP address

이 튜토리얼에 필요한 보안 그룹 아웃바운드 규칙은 다음과 같아요.

유형(Type) 프로토콜(Protocol) 포트 범위(Port range) 목적지(Destination)
All traffic All All 0.0.0.0/0
  1. EC2 콘솔 을 열고 왼쪽 메뉴에서 Security Groups 를 선택합니다.
  2. 이제 표시된 보안 그룹 목록에서 이 튜토리얼에 사용하는 보안 그룹 왼쪽의 체크 상자를 선택합니다. 보안 그룹 세부 정보가 표시됩니다.
  3. Inbound rules 또는 Outbound rules 탭을 선택하고 Edit inbound rules 또는 Edit outbound rules 버튼을 선택해 인바운드 및 아웃바운드 규칙을 편집합니다. 앞의 표에 표시된 것과 일치하도록 규칙을 편집합니다. 이 튜토리얼의 뒷부분에서 EC2 인스턴스를 만든 후에는 Amazon EC2 User Guide 의 Connect to your Windows instance using RDP 에 설명된 대로 인바운드 RDP 규칙 소스를 EC2 인스턴스의 퍼블릭 IP 주소로 편집합니다.

4단계: FSx for Windows File Server 파일 시스템 만들기 보안 그룹을 확인하고 업데이트했고 Active Directory가 생성되어 활성 상태가 되면 Active Directory와 동일한 VPC에 FSx for Windows File Server 파일 시스템을 만들어요. Windows 태스크용 FSx for Windows File Server 파일 시스템을 만드는 데 다음 단계를 사용해 주세요.

첫 번째 파일 시스템 만들기:

  1. Amazon FSx 콘솔 을 엽니다.
  2. 대시보드에서 Create file system 을 선택해 파일 시스템 생성 마법사를 시작합니다.
  3. Select file system type 페이지에서 FSx for Windows File Server 를 선택한 다음 Next 를 선택합니다. Create file system 페이지가 나타납니다.
  4. File system details 섹션에서 파일 시스템 이름을 제공합니다. 파일 시스템 이름을 지정하면 찾고 관리하기가 더 쉽습니다. 최대 256개의 유니코드 문자를 사용할 수 있습니다. 허용되는 문자는 문자, 숫자, 공백 및 더하기 기호(+), 빼기 기호(-), 등호(=), 마침표(.), 밑줄(_), 콜론(:), 슬래시(/) 같은 특수 문자입니다.
  5. Deployment type 에서 단일 가용 영역에 배포되는 파일 시스템을 배포하려면 Single-AZ 를 선택합니다. Single-AZ 2 는 단일 가용 영역 파일 시스템의 최신 세대이며 SSD 및 HDD 스토리지를 지원합니다.
  6. Storage type 에서 HDD 를 선택합니다.
  7. Storage capacity 에 최소 스토리지 용량을 입력합니다.
  8. Throughput capacity 는 기본 설정으로 유지합니다.
  9. Network & security 섹션에서 Directory Service 디렉터리에 대해 선택한 것과 동일한 Amazon VPC를 선택합니다.
  10. VPC Security Groups 에서 Step 3: Verify and update your security group 에서 확인한 보안 그룹을 선택합니다.
  11. Windows authentication 에서 AWS Managed Microsoft Active Directory 를 선택한 다음 목록에서 Directory Service 디렉터리를 선택합니다.
  12. Encryption 에서 기본 Encryption key 설정인 aws/fsx (default) 를 유지합니다.
  13. Maintenance preferences 는 기본 설정으로 유지합니다.
  14. Next 버튼을 클릭합니다.
  15. Create file system 페이지에 표시된 파일 시스템 구성을 검토합니다. 참고로 파일 시스템 생성 후 수정할 수 있는 파일 시스템 설정을 기록해 둡니다. Create file system 을 선택합니다.
  16. 파일 시스템 ID를 기록해 둡니다. 이후 단계에서 사용해야 합니다.

FSx for Windows File Server 파일 시스템이 생성되는 동안 다음 단계로 진행해 클러스터와 EC2 인스턴스를 만들 수 있어요.

5단계: Amazon ECS 클러스터 만들기 Amazon ECS 콘솔을 사용해 클러스터 만들기

  1. https://console.aws.amazon.com/ecs/v2 에서 콘솔을 엽니다.
  2. 탐색 모음에서 사용할 Region을 선택합니다.
  3. 탐색 창에서 Clusters 를 선택합니다.
  4. Clusters 페이지에서 Create cluster 를 선택합니다.
  5. Cluster configuration 에서 Cluster name 에 windows-fsx-cluster 를 입력합니다.
  6. Infrastructure 를 확장하고 AWS Fargate (serverless) 를 지운 다음 Amazon EC2 instances 를 선택합니다.
  7. Auto Scaling group 을 만들려면 Auto Scaling group (ASG) 에서 Create new group 을 선택하고 그룹에 대한 다음 세부 정보를 제공합니다.
    • Operating system/Architecture 에서 Windows Server 2019 Core 를 선택합니다.
    • EC2 instance type 에서 t2.medium 또는 t2.micro 를 선택합니다.
  8. Create 를 선택합니다.

6단계: Amazon ECS에 최적화된 Amazon EC2 인스턴스 만들기 Amazon ECS Windows 컨테이너 인스턴스를 만들어요.

Amazon ECS 인스턴스를 만들려면

  1. aws ssm get-parameters 명령을 사용해 VPC를 호스팅하는 Region의 AMI 이름을 검색합니다. 자세한 내용은 Retrieving Amazon ECS-Optimized AMI metadata 를 참고해 주세요.
  2. Amazon EC2 콘솔을 사용해 인스턴스를 시작합니다.
  3. https://console.aws.amazon.com/ec2/ 에서 Amazon EC2 콘솔을 엽니다.
  4. 탐색 모음에서 사용할 Region을 선택합니다.
  5. EC2 Dashboard 에서 Launch instance 를 선택합니다.
  6. Name 에 고유한 이름을 입력합니다.
  7. Application and OS Images (Amazon Machine Image) 에서 검색 필드에 검색한 AMI 이름을 입력합니다.
  8. Instance type 에서 t2.medium 또는 t2.micro 를 선택합니다.
  9. Key pair (login) 에서 키 페어를 선택합니다. 키 페어를 지정하지 않으면...
  10. Network settings 에서 VPC 및 Subnet 에 내 VPC와 퍼블릭 서브넷을 선택합니다.
  11. Network settings 에서 Security group 에 기존 보안 그룹을 선택하거나 새로 만듭니다. 선택한 보안 그룹에 튜토리얼 전제 조건 에 정의된 인바운드 및 아웃바운드 규칙이 있는지 확인합니다.
  12. Network settings 에서 Auto-assign Public IP 에 Enable 을 선택합니다.
  13. Advanced details 를 확장하고 Domain join directory 에서 만든 Active Directory의 ID를 선택합니다. 이 옵션은 EC2 인스턴스가 시작될 때 AD에 도메인 조인을 수행합니다.
  14. Advanced details 에서 IAM instance profile 에 ecsInstanceRole 을 선택합니다.
  15. 다음 user data로 Amazon ECS 컨테이너 인스턴스를 구성합니다. Advanced Details 에서 User data 필드에 다음 스크립트를 붙여 넣고 cluster_name 을 클러스터 이름으로 바꿉니다.
    <powershell>
    Initialize-ECSAgent -Cluster windows-fsx-cluster -EnableTaskIAMRole
    </powershell>
    
  16. 준비가 되면 확인 필드를 선택한 다음 Launch Instances 를 선택합니다.
  17. 확인 페이지에서 인스턴스가 시작 중임을 알려 줍니다. View Instances 를 선택해 확인 페이지를 닫고 콘솔로 돌아갑니다.
  18. https://console.aws.amazon.com/ecs/v2 에서 콘솔을 엽니다.
  19. 탐색 창에서 Clusters 를 선택한 다음 windows-fsx-cluster 를 선택합니다.
  20. Infrastructure 탭을 선택하고 인스턴스가 windows-fsx-cluster 클러스터에 등록되었는지 확인합니다.

7단계: Windows 태스크 정의 등록 Amazon ECS 클러스터에서 Windows 컨테이너를 실행하려면 먼저 태스크 정의를 등록해야 해요. 다음 태스크 정의 예제는 간단한 웹 페이지를 표시해요. 태스크는 FSx 파일 시스템에 액세스할 수 있는 두 컨테이너를 시작해요. 첫 번째 컨테이너는 HTML 파일을 파일 시스템에 써요. 두 번째 컨테이너는 파일 시스템에서 HTML 파일을 다운로드해 웹페이지를 제공해요.

  1. https://console.aws.amazon.com/ecs/v2 에서 콘솔을 엽니다.
  2. 탐색 창에서 Task definitions 를 선택합니다.
  3. Create new task definition , Create new task definition with JSON 을 선택합니다.
  4. JSON 편집기 상자에서 태스크 실행 역할과 FSx 파일 시스템에 대한 세부 정보 값을 바꾼 다음 Save 를 선택합니다.
{
    "containerDefinitions": [
        {
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "portMappings": [],
            "command": ["New-Item -Path C:\\fsx-windows-dir\\index.html -ItemType 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>It Works!</h2> <p>You are using Amazon FSx for Windows File Server file system for persistent container storage.</p>' -Force"],
            "cpu": 512,
            "memory": 256,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "essential": false,
            "name": "container1",
            "mountPoints": [
                {
                    "sourceVolume": "fsx-windows-dir",
                    "containerPath": "C:\\fsx-windows-dir",
                    "readOnly": false
                }
            ]
        },
        {
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "portMappings": [
                {
                    "hostPort": 443,
                    "protocol": "tcp",
                    "containerPort": 80
                }
            ],
            "command": ["Remove-Item -Recurse C:\\inetpub\\wwwroot\\* -Force; Start-Sleep -Seconds 120; Move-Item -Path C:\\fsx-windows-dir\\index.html -Destination C:\\inetpub\\wwwroot\\index.html -Force; C:\\ServiceMonitor.exe w3svc"],
            "mountPoints": [
                {
                    "sourceVolume": "fsx-windows-dir",
                    "containerPath": "C:\\fsx-windows-dir",
                    "readOnly": false
                }
            ],
            "cpu": 512,
            "memory": 256,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "essential": true,
            "name": "container2"
        }
    ],
    "family": "fsx-windows",
    "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole",
    "volumes": [
        {
            "name": "fsx-windows-dir",
            "fsxWindowsFileServerVolumeConfiguration": {
                "fileSystemId": "fs-0eeb5730b2EXAMPLE",
                "authorizationConfig": {
                    "domain": "example.com",
                    "credentialsParameter": "arn:arn-1234"
                },
                "rootDirectory": "share"
            }
        }
    ]
}

8단계: 태스크 실행 및 결과 보기 태스크를 실행하기 전에 FSx for Windows File Server 파일 시스템의 상태가 Available 인지 확인해 주세요. 사용 가능해지면 만든 태스크 정의로 태스크를 실행할 수 있어요. 태스크는 파일 시스템을 사용해 컨테이너 간에 HTML 파일을 옮기는 컨테이너를 만드는 것으로 시작해요. 순환 후 웹 서버가 간단한 HTML 페이지를 제공해요.

참고 VPN 내에서는 웹사이트에 연결하지 못할 수 있어요.

Amazon ECS 콘솔로 태스크를 실행하고 결과를 봅니다.

  1. https://console.aws.amazon.com/ecs/v2 에서 콘솔을 엽니다.
  2. 탐색 창에서 Clusters 를 선택한 다음 windows-fsx-cluster 를 선택합니다.
  3. Tasks 탭을 선택한 다음 Run new task 를 선택합니다.
  4. Launch Type 에서 EC2 를 선택합니다.
  5. Deployment configuration 에서 Task Definition 에 fsx-windows 를 선택한 다음 Create 를 선택합니다.
  6. 태스크 상태가 RUNNING 이 되면 태스크 ID를 선택합니다.
  7. Containers 에서 container1 상태가 STOPPED 가 되면 container2 를 선택해 컨테이너 세부 정보를 봅니다.
  8. container2 의 Container details 에서 Network bindings 를 선택한 다음 컨테이너와 연결된 외부 IP 주소를 클릭합니다. 브라우저가 열리면서 다음 메시지가 표시됩니다.
Amazon ECS Sample App
It Works! 
You are using Amazon FSx for Windows File Server file system for persistent container storage.

참고 메시지가 표시되는 데 몇 분이 걸릴 수 있어요. 몇 분 후에도 이 메시지가 보이지 않으면 VPN에서 실행 중이 아닌지 확인하고 컨테이너 인스턴스의 보안 그룹이 포트 443에서 인바운드 네트워크 HTTP 트래픽을 허용하는지 확인해 주세요.

9단계: 정리 참고 FSx for Windows File Server 파일 시스템 또는 AD를 삭제하는 데 20~45분이 걸려요. AD 삭제 작업을 시작하기 전에 FSx for Windows File Server 파일 시스템 삭제 작업이 완료될 때까지 기다려야 해요.

  • FSx for Windows File Server 파일 시스템 삭제:
    1. Amazon FSx 콘솔 을 엽니다.
    2. 방금 만든 FSx for Windows File Server 파일 시스템 왼쪽의 라디오 버튼을 선택합니다.
    3. Actions 를 선택합니다.
    4. Delete file system 을 선택합니다.
  • AD 삭제:
    1. Directory Service 콘솔 을 엽니다.
    2. 방금 만든 AD 왼쪽의 라디오 버튼을 선택합니다.
    3. Actions 를 선택합니다.
    4. Delete directory 를 선택합니다.
  • 클러스터 삭제:
    1. https://console.aws.amazon.com/ecs/v2 에서 콘솔을 엽니다.
    2. 탐색 창에서 Clusters 를 선택한 다음 windows-fsx-cluster 를 선택합니다.
    3. Delete cluster 를 선택합니다.
    4. 문구를 입력한 다음 Delete 를 선택합니다.
  • EC2 인스턴스 종료:
    1. Amazon EC2 콘솔 을 엽니다.
    2. 왼쪽 메뉴에서 Instances 를 선택합니다.
    3. 만든 EC2 인스턴스 왼쪽의 상자를 선택합니다.
    4. Instance state , Terminate instance 를 클릭합니다.
  • 시크릿 삭제:
    1. Secrets Manager 콘솔 을 엽니다.
    2. 이 워크스루를 위해 만든 시크릿을 선택합니다.
    3. Actions 를 클릭합니다.
    4. Delete secret 을 선택합니다.

더 알아보기 (Learn more)