Amazon EC2에 S3 파일 시스템 탑재
EC2 인스턴스에 S3 파일 시스템을 탑재하려면 S3 Files 탑재 도우미를 사용해야 합니다. 탑재 도우미를 사용하면 지원되는 배포판이 실행되는 EC2 인스턴스에 S3 파일 시스템을 탑재할 수 있습니다. 파일 시스템을 탑재할 때 탑재 도우미는 Linux의 표준 mount 명령과 완전히 호환되는 s3files라는 새로운 네트워크 파일 시스템 유형을 정의합니다. 또한 탑재 도우미는 EC2 Linux 인스턴스에 있는 /etc/fstab 구성 파일의 항목을 사용해 자동으로 인스턴스 부팅 시 인스턴스에 S3 파일 시스템을 탑재하는 것을 지원합니다. 탑재 도우미는 S3 Files 클라이언트(amazon-efs-utils)를 설치할 때 설치되는 오픈 소스 도구 모음의 일부입니다.
EC2 인스턴스에 탑재하기 위한 사전 조건
하나 이상의 탑재 대상을 사용할 수 있는 S3 파일 시스템이 있습니다.
EC2 인스턴스는 파일 시스템을 탑재하는 데 사용할 탑재 대상과 동일한 가용 영역에 있습니다.
IAM 인스턴스 프로파일은 S3 Files에 필요한 권한이 있는 EC2 인스턴스에 연결됩니다. 자세한 내용은 파일 시스템을 AWS 컴퓨팅 리소스에 연결하기 위한 IAM 역할을 참조하세요.
필요한 보안 그룹을 구성했습니다.
EC2 인스턴스에 amazon-efs-utils 패키지를 설치해야 합니다. 자세한 내용은 S3 Files 클라이언트 섹션을 참조하세요.
탑재 도우미는 어떻게 작동하나요?
탑재 명령을 실행하면 탑재 도우미가 다음 작업을 수행합니다.
EC2 인스턴스 프로파일에서 IAM 자격 증명을 검색합니다.
efs-proxy 프로세스를 초기화하여 탑재 대상에 대한 TLS 암호화 연결을 설정합니다.
TLS 탑재 상태를 모니터링하는 amazon-efs-mount-watchdog 감독자 프로세스를 시작합니다. 이 프로세스는 S3 파일 시스템을 처음 탑재할 때 자동으로 시작됩니다.
지정된 탑재 지점에 파일 시스템을 탑재합니다.
탑재 도우미는 TLS 버전 1.2를 사용해 파일 시스템과 통신합니다. TLS를 사용하기 위해서는 인증서가 필요하며, 신뢰할 수 있는 Amazon 인증 기관이 서명한 인증서여야 합니다. 암호화 작동 방식에 대한 자세한 내용은 S3 Files의 보안 섹션을 참조하세요.
탑재 도우미는 S3 Files에 최적화된 다음과 같은 탑재 옵션을 사용합니다.
| 옵션 | 값 | 설명 |
|---|---|---|
nfsvers |
4.2 | NFS 프로토콜 버전. |
rsize |
1048576 | NFS 클라이언트가 원하지 않는 성능 저하를 방지하기 위해 가능한 가장 큰 1048576(1MB)에 대한 각 네트워크 READ 요청에 대해 수신할 수 있는 최대 데이터 바이트 수를 설정합니다. |
wsize |
1048576 | NFS 클라이언트가 원하지 않는 성능 저하를 방지하기 위해 가능한 가장 큰 1048576(1MB)에 대한 각 네트워크 WRITE 요청에 대해 송신할 수 있는 최대 데이터 바이트 수를 설정합니다. |
hard |
— | NFS 요청 시간이 초과된 후에는 NFS 클라이언트의 복구 동작을 설정하여 데이터 무결성을 확인하기 위하여 서버가 응답할 때까지 NFS 요청을 무기한 재시도합니다. |
timeo |
600 | NFS 클라이언트가 600데시초(60초) 후에 재시도하기 전에 데이터 무결성을 확인하기 위하여 NFS 클라이언트가 응답을 기다리는 데 사용하는 시간 초과 값을 설정합니다. |
retrans |
2 | NFS 클라이언트가 추가 복구 작업을 시도하기 전에 요청을 재시도하는 횟수를 2로 설정합니다. |
noresvport |
— | 네트워크 연결이 다시 설정될 때 NFS 클라이언트가 새로운 권한 없는 TCP 소스 포트를 사용하도록 지시합니다. 이 noresvport 옵션을 사용하면 재연결 또는 네트워크 복구 이벤트 후에도 파일 시스템을 중단 없이 사용할 수 있습니다. |
또한 탑재 도우미는 S3 파일 시스템을 S3 Files로 탑재할 때 tls 및 iam 탑재 옵션을 자동으로 사용합니다. 연결을 설정하려면 이러한 옵션이 필요합니다. 이는 S3 Files가 항상 TLS 암호화 및 IAM 인증을 사용하여 파일 시스템을 탑재하므로 비활성화할 수 없기 때문입니다.
EC2 인스턴스에 S3 파일 시스템을 탑재하는 방법은 무엇인가요?
-
Secure Shell(SSH) 또는 EC2 콘솔의 EC2 Instance Connect를 통해 EC2 인스턴스에 연결합니다. 자세한 내용은 EC2 인스턴스에 연결을 참조하세요.
-
다음 명령을 사용하여 파일 시스템 탑재 지점으로 사용할 디렉터리
/mnt/s3files를 생성합니다.sudo mkdir /mnt/s3files -
S3 파일 시스템 탑재:
FS="{YOUR_FILE_SYSTEM_ID}" sudo mount -t s3files $FS:/ /mnt/s3files -
파일 시스템이 탑재되었는지 확인합니다.
df -h /mnt/s3files다음과 유사한 응답이 나타납니다.
Filesystem Size Used Avail Use% Mounted on{s3files-dns}8.0E 129M 8.0E 1%{path/to/mount}로컬 탑재 지점의 콘텐츠를 나열하여 파일 시스템 탑재를 확인하고 탑재 옵션을 검사할 수도 있습니다. 탑재에 성공하면 이 명령은 특정 디렉터리에 대한 탑재 옵션을 포함한 탑재 세부 정보를 표시합니다.
findmnt -T /mnt/s3files
탑재 명령에 대한 자세한 내용은 GitHub 설명서
이제 표준 파일 시스템 작업을 사용하여 로컬 탑재 경로에서 S3 객체를 파일로 읽고 쓸 수 있습니다. S3 버킷에 객체가 있는 경우 다음 명령을 사용하여 해당 객체를 파일로 볼 수 있습니다.
ls /mnt/s3files
CloudWatch 지표를 사용하여 파일 시스템 스토리지, 성능, 클라이언트 연결 및 동기화 오류를 모니터링할 수 있습니다.
액세스 포인트를 사용하여 EC2 인스턴스에 S3 파일 시스템을 탑재하는 방법
액세스 포인트를 사용하여 파일 시스템을 탑재할 때 탑재 명령에는 access-point-id 탑재 옵션이 포함됩니다.
sudo mount -t s3files -o accesspoint=access-point-idfile-system-id/mnt/s3files
여기서 각 항목은 다음과 같습니다.
access-point-id는 액세스 포인트의 ID입니다.file-system-id는 S3 파일 시스템의 ID입니다.
EC2 인스턴스가 시작될 때 S3 파일 시스템 자동 탑재
/etc/fstab 파일을 업데이트하여 인스턴스가 시작되거나 다시 시작될 때 S3 파일 시스템을 자동으로 탑재하도록 EC2 인스턴스를 구성할 수 있습니다. /etc/fstab 파일에는 파일 시스템에 대한 정보가 포함되어 있으며 운영 체제에서 부팅 시 탑재할 파일 시스템을 결정하는 데 사용됩니다.
주의
파일 시스템을 자동으로 마운트하는 경우 네트워크 파일 시스템 식별에 사용하는 _netdev 옵션을 사용합니다. _netdev이 빠진 경우 EC2 인스턴스가 응답을 중지합니다. 컴퓨팅 인스턴스가 네트워킹을 시작한 후 네트워크 파일 시스템의 초기화를 완료해야 하기 때문입니다. 자세한 내용은 자동 마운팅 실패 및 인스턴스 응답 없음을 참조하세요.
탑재 도우미를 사용하면 Amazon EC2 인스턴스가 시작될 때 S3 파일 시스템을 자동으로 탑재하도록 구성할 수 있습니다.
S3 파일 시스템에 대한 항목으로 EC2
/etc/fstab파일을 업데이트합니다.EC2 인스턴스 시작 마법사를 사용하여 새 EC2 인스턴스를 생성할 때 S3 파일 시스템을 연결합니다.
/etc/fstab 파일 업데이트
인스턴스가 다시 시작될 때 인스턴스가 탑재 도우미를 사용하여 S3 Files 파일 시스템을 자동으로 다시 탑재하도록 EC2 Linux 인스턴스에서 /etc/fstab를 수동으로 업데이트하려면 다음 단계를 수행합니다.
-
에디터에서
/etc/fstab파일을 열고 다음 줄을 추가합니다.file-system-id:/mount-directorys3files _netdev 0 0위치:
file-system-id는 S3 파일 시스템의 ID입니다(예:fs-0123456789abcdef0).mount-directory는 EC2 인스턴스의 탑재 지점 디렉터리입니다(예:/mnt/s3files)._netdev는 파일 시스템이 네트워크 파일 시스템임을 지정하여 인스턴스가 탑재를 시도하기 전에 네트워크 가용성을 대기하도록 합니다.
파일을 저장하고 편집기를 닫습니다.
-
모든 파일 시스템을 fstab에 탑재하여 fstab 항목을 테스트합니다.
sudo mount -a -
파일 시스템이 탑재되었는지 확인:
findmnt -Tmount-directory
nofail 옵션 사용
프로덕션 환경의 fstab 항목에 nofail 옵션을 추가하는 것이 좋습니다. 이 옵션을 사용하면 파일 시스템이 탑재되지 않더라도 인스턴스를 부팅할 수 있습니다.
file-system-id:/mount-directorys3files _netdev,nofail 0 0
액세스 포인트를 사용한 자동 탑재
S3 Files 액세스 포인트를 사용하여 자동으로 탑재하려면 accesspoint 옵션을 포함합니다.
file-system-id:/mount-directorys3files _netdev,accesspoint=access-point-id0 0
하위 디렉터리를 사용한 자동 탑재
파일 시스템의 특정 하위 디렉터리를 자동으로 탑재하려면 경로를 지정합니다.
file-system-id:/path/to/directorymount-directorys3files _netdev 0 0
EC2 인스턴스 시작 마법사 사용
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. 인스턴스 시작을 선택합니다.
이 설명서에 따라 AWS 콘솔에서 인스턴스 시작 마법사를 사용하여 EC2 인스턴스를 시작합니다. 인스턴스 시작을 선택하기 전에 다음 단계와 같이 네트워크를 구성하고 S3 파일 시스템을 추가합니다.
네트워크 설정에서 서브넷을 선택해야 합니다.
-
EC2 인스턴스가 S3 파일 시스템에 액세스할 수 있도록 하려면 기본 보안 그룹을 선택합니다. 이 보안 그룹을 사용하여 Secure Shell(SSH)로 EC2 인스턴스에 액세스할 수 없습니다. SSH 액세스의 경우, 나중에 기본 보안을 편집하고 SSH를 허용하는 규칙을 추가하거나 SSH를 허용하는 새 보안 그룹을 추가할 수 있습니다. 다음 설정을 사용할 수 있습니다.
유형: SSH
프로토콜: TCP
포트 범위: 22
소스: 위치 무관 0.0.0.0/0
스토리지 섹션에서 파일 시스템을 선택하고 S3 Files를 선택합니다.
파일 시스템 드롭다운 아래에는 네트워크 설정에서 이전에 선택한 서브넷을 기반으로 가용 영역에 파일 시스템이 표시됩니다. 탑재할 S3 파일 시스템을 선택합니다. 파일 시스템이 없는 경우 새 파일 시스템 생성을 선택하여 새 항목을 생성하세요.
파일 시스템을 탑재하려는 EC2 인스턴스의 로컬 탑재 경로를 입력합니다(예:
/mnt/s3files).파일 시스템을 탑재하고 fstab에 추가하는 명령이 생성됩니다. 사용자 데이터에 명령을 추가하거나 시작된 후 EC2 인스턴스에서 수동으로 실행하도록 선택할 수 있습니다. 이제 EC2 인스턴스가 시작될 때와 재부팅될 때마다 S3 파일 시스템을 탑재하도록 구성되었습니다.
인스턴스 시작을 선택합니다.
다른 VPC에서 S3 파일 시스템 탑재
VPC 피어링 연결 또는 전송 게이트웨이를 사용하여 VPC를 연결하면 하나의 VPC에 있는 Amazon EC2 인스턴스가 다른 VPC의 Amazon S3 파일 시스템에 액세스할 수 있습니다.
전송 게이트웨이는 VPC와 온프레미스 네트워크를 상호 연결하는 데 사용할 수 있는 네트워크 전송 허브입니다. 자세한 내용은 Amazon VPC 전송 게이트웨이 가이드의 전송 게이트웨이 시작하기를 참조하세요. VPC 피어링 연결은 두 VPC 간의 네트워킹 연결입니다. 이러한 유형의 연결을 사용하면 프라이빗 Internet Protocol version 4(IPv4) 또는 Internet Protocol version 6(IPv6) 주소를 사용하여 이들 간의 트래픽을 라우팅할 수 있습니다. VPC 피어링을 사용하여 동일한 AWS 리전 내 또는 다른 AWS 리전 간에 VPC를 연결할 수 있습니다. VPC 피어링에 대한 자세한 내용은 Amazon VPC 사용 설명서의 VPC 피어링이란?을 참조하세요.
다른 VPC에서 파일 시스템을 탑재할 때는 탑재 대상을 수동으로 확인해야 합니다. 다음과 같이 해당 가용 영역에 있는 탑재 대상의 IP 주소를 사용하고 mount-target-ip-address, file-system-id 및 mount-directory를 값으로 바꿔야 합니다.
sudo mount -t s3files -o mounttargetip=mount-target-ip-addressfile-system-idmount-directory
파일 시스템의 고가용성을 보장하려면 항상 NFS 클라이언트와 동일한 가용 영역에 있는 탑재 대상 IP 주소를 사용하는 것이 좋습니다.
또는 DNS 서비스로 Amazon Route 53을 사용할 수도 있습니다. Route 53에서 프라이빗 호스팅 영역과 리소스 레코드 세트를 생성하여 다른 VPC에서 탑재 대상 IP 주소를 확인할 수 있습니다. 확인하는 방법에 대한 자세한 내용은 Amazon Route 53 개발자 안내서의 프라이빗 호스팅 영역 작업을 참조하세요.
다른 VPC에서 탑재하는 방법에 대한 자세한 내용은 GitHub ReadMe
다른 AWS 리전에서 S3 파일 시스템 탑재
파일 시스템과 다른 AWS 리전에 있는 또 다른 VPC에서 S3 파일 시스템을 탑재하는 경우 s3files-utils.conf 파일을 편집해야 합니다. /etc/amazon/efs/s3files-utils.conf에서 다음 줄을 찾습니다.
#region = us-east-1
해당 줄의 주석 처리를 제거하고 파일 시스템이 위치한 리전의 ID 값을 바꾸세요(us-east-1에 없는 경우).
그런 다음 구성에서 리전을 변경한 후 탑재 명령에서 탑재 대상 IP를 지정해야 합니다.
sudo mount -t s3files -o mounttargetip=mount-target-ip-addressfile-system-idmount-directory
S3 파일 시스템 탑재 해제
Linux를 실행하는 EC2 인스턴스에 연결된 S3 파일 시스템을 탑재 해제하려면 다음과 같이 umount 명령을 사용하세요.
umountmount-directory
다른 umount 옵션은 지정하지 않는 것이 좋습니다. 기본값과 다른 그 밖의 umount 옵션은 설정하지 않는 것이 좋습니다. findmnt 명령을 실행하여 S3 파일 시스템이 탑재 해제되었는지 확인할 수 있습니다. 탑재 해제에 성공하면 탑재 디렉터리의 findmnt 명령은 출력을 생성하지 않습니다.