diff --git a/_posts/2026-04-09-aws-s3-files.md b/_posts/2026-04-09-aws-s3-files.md new file mode 100644 index 0000000..140dc30 --- /dev/null +++ b/_posts/2026-04-09-aws-s3-files.md @@ -0,0 +1,230 @@ +--- +layout: post +title: "[AWS] Amazon S3 Files - S3 버킷을 파일 시스템으로 마운트하기" +description: "S3 Files로 S3 버킷을 NFS 파일 시스템으로 마운트하는 방법" +author: chhanz +date: 2026-04-09 +tags: [aws, linux] +categories: [aws] +--- + +--- + +![S3 Files EC2 dataflow](https://docs.aws.amazon.com/images/AmazonS3/latest/userguide/images/S3Files_EC2_dataflow.png) + +# 개요 +Amazon S3 버킷을 NFS 파일 시스템으로 마운트하여 일반 파일 명령어(`ls`, `cp`, `cat` 등)로 접근할 수 있는 **Amazon S3 Files** 기능이 2026년 4월에 출시되었습니다. +이번 포스트에서는 S3 Files 의 개념과 EC2 에서 마운트하는 방법을 기록하도록 하겠습니다. + +# S3 Files 란? +S3 Files 는 S3 버킷을 **NFS v4.1/v4.2** 파일 시스템으로 마운트할 수 있게 해주는 기능입니다. +내부적으로 Amazon EFS 기반의 고성능 스토리지를 활용하며, 활성 데이터에 대해 약 **~1ms** 수준의 지연시간을 제공합니다. + +데이터는 S3 를 떠나지 않으며, **S3 API 와 파일 API 를 동시에 사용**할 수 있습니다. + +## 지원하는 컴퓨팅 서비스 +- Amazon EC2 +- Amazon ECS +- Amazon EKS +- AWS Lambda + +## 성능 스펙 + +| 항목 | 수치 | +|------|------| +| 지연시간 (활성 데이터, 소파일) | ~1ms | +| 최대 읽기 IOPS (파일시스템당) | 250,000 | +| 최대 쓰기 IOPS (파일시스템당) | 50,000 | +| 집계 읽기 처리량 | 수 TB/s | +| 집계 쓰기 처리량 | 1~5 GiB/s (리전별) | +| 최대 클라이언트당 읽기 처리량 | 3 GiB/s | +| 동시 연결 | 최대 25,000개 | + +# 파일 시스템 기능 +S3 Files 는 아래와 같은 파일 시스템 기능을 지원합니다. + +- **NFS v4.1 / v4.2** 프로토콜 지원 +- POSIX 권한 (UID/GID 를 오브젝트 메타데이터에 저장) +- NFS close-to-open 일관성 +- 파일 잠금(locking) 지원 +- 디렉토리 / 서브디렉토리 탐색 + +# 작동 원리 + +## 읽기 +- **소파일 (< 128KB)** → 고성능 스토리지에서 저지연 서빙 +- **대파일 (≥ 128KB, S3 동기화된 데이터)** → S3 에서 직접 스트리밍 (S3 Files 요금 없음) + +## 쓰기 +- 고성능 스토리지에 먼저 기록 → **60초 배치 윈도우** 후 S3 자동 동기화 +- 60초 내 연속 쓰기는 단일 S3 PUT 으로 통합 + +## 미접근 데이터 +- **30일** (기본값, 1~365일 설정 가능) 동안 접근이 없으면 고성능 스토리지에서 자동 삭제 +- 이후 접근 시 S3 에서 다시 로드 + +## 보안 +- 전송: TLS 1.3 +- 저장: SSE-S3 / SSE-KMS +- 접근 제어: IAM + POSIX 권한 +- 모니터링: CloudWatch / CloudTrail + +# 파일 시스템 생성 + +## 콘솔에서 생성 +S3 콘솔에서 파일 시스템을 생성하는 방법은 아래와 같습니다. + +**1)** S3 콘솔 좌측 메뉴에서 **파일** → **파일 시스템** 을 클릭합니다. + +![S3 콘솔 파일 시스템 메뉴](/assets/images/post/2026-04-09-aws-s3-files/1.png) + +**2)** **파일 시스템 생성** 버튼을 클릭한 후, 범용 버킷 또는 접두사를 입력합니다. +형식: `s3://버킷명` 또는 `s3://버킷명/접두사/` + +![파일 시스템 생성 화면](/assets/images/post/2026-04-09-aws-s3-files/2.png) + +**3)** VPC 를 선택하고 **파일 시스템 생성** 을 클릭합니다. +생성 완료 후 모든 AZ 에 마운트 타겟이 자동으로 생성됩니다. (수 분 소요) + +![생성된 파일 시스템 및 탑재 대상 목록](/assets/images/post/2026-04-09-aws-s3-files/3.png) + +위와 같이 파일 시스템이 생성되고, 탑재 대상(Mount Target) 목록을 확인 할 수 있습니다. + +# EC2 에서 마운트하기 + +## 사전 조건 +EC2 에서 S3 Files 파일 시스템을 마운트하기 위해서는 아래 조건이 필요합니다. + +- **amazon-efs-utils 버전 3.0.0 이상** 필요 (S3 Files 지원) + - ⚠️ Amazon Linux 2023 기본 패키지 버전은 `2.4.2` 로 **S3 Files 를 지원하지 않습니다.** + - 별도의 efs-utils 전용 리포지토리에서 설치해야 합니다. +- **S3 버킷 Versioning 활성화** 필요 (S3 Files 필수 요건) +- EC2 IAM Role 에 `AmazonS3FilesClientFullAccess` 정책 추가 +- 보안 그룹 설정 (아래 참조) + +## 보안 그룹 설정 +EC2 인스턴스와 마운트 타겟 간 NFS 통신을 위해 보안 그룹을 아래와 같이 설정해야 합니다. + +| 대상 | 방향 | 프로토콜 | 포트 | 소스/대상 | +|------|------|----------|------|-----------| +| EC2 보안 그룹 | Outbound | TCP | 2049 | 마운트 타겟 보안 그룹 | +| 마운트 타겟 보안 그룹 | Inbound | TCP | 2049 | EC2 보안 그룹 | + +![탑재 대상 보안 그룹 설정](/assets/images/post/2026-04-09-aws-s3-files/4.png) + +위와 같이 마운트 타겟의 보안 그룹에서 EC2 보안 그룹으로부터의 TCP 2049 Inbound 를 허용해야 합니다. + +## amazon-efs-utils 3.0.0 이상 설치 +앞서 언급한 바와 같이 Amazon Linux 2023 기본 패키지는 `amazon-efs-utils 2.4.2` 버전이므로 S3 Files 를 지원하지 않습니다. +아래 두 가지 방법 중 하나로 3.0.0 이상 버전을 설치할 수 있습니다. + +### 방법 1: 전용 installer 스크립트 사용 + +```bash +curl https://amazon-efs-utils.aws.com/efs-utils-installer.sh | sudo sh -s -- --install +``` + +### 방법 2: efs-utils 리포지토리 추가 후 직접 설치 +installer 스크립트 실행 후 전용 리포지토리가 추가됩니다. 아래와 같이 패키지를 확인하고 설치합니다. + +```console +$ yum list | grep efs-utils +amazon-efs-utils.x86_64 3.0.1-1.amzn2023 efs-utils + +$ sudo yum install amazon-efs-utils-3.0.1-1.amzn2023 +``` + +설치가 완료되면 아래와 같이 확인 할 수 있습니다. + +```console +$ rpm -qa | grep efs +amazon-efs-utils-3.0.1-1.amzn2023.x86_64 +``` + +## 마운트 +마운트 디렉토리를 생성하고 `mount` 명령어로 S3 Files 파일 시스템을 마운트합니다. + +```bash +mkdir ./s3files +sudo mount -t s3files fs-0f6284xxxxxxxxx:/ /root/s3files +``` + +마운트가 완료되면 `df -hT` 명령어로 확인 할 수 있습니다. + +```console +$ df -hT /root/s3files/ +Filesystem Type Size Used Avail Use% Mounted on +127.0.0.1:/ nfs4 8.0E 0 8.0E 0% /root/s3files +``` + +`mount` 명령어로도 NFS4 프로토콜로 마운트된 것을 확인 할 수 있습니다. + +```console +$ mount | grep s3files +127.0.0.1:/ on /root/s3files type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,...,addr=127.0.0.1) +``` + +위와 같이 `nfs4` 타입으로 마운트되었으며, NFS v4.2 프로토콜을 사용하는 것을 확인 할 수 있습니다. + +## 파일 생성 및 S3 동기화 확인 +마운트된 디렉토리에서 파일을 생성하면 S3 버킷에 자동으로 동기화됩니다. + +```console +$ touch s3files/s3-test.txt + +$ ls -l s3files/ +total 4 +-rw-r--r-- 1 root root 0 Apr 10 00:53 s3-test.txt +``` + +S3 콘솔에서 확인하면 `s3-test.txt` 오브젝트가 자동으로 생성된 것을 확인 할 수 있습니다. + +![S3 버킷에서 오브젝트 동기화 확인](/assets/images/post/2026-04-09-aws-s3-files/5.png) + +위와 같이 파일 시스템에서 생성한 파일이 S3 버킷에 자동으로 동기화되는 것을 확인 할 수 있습니다. + +# 기술 제약 및 참고 사항 +S3 Files 사용 시 아래 사항을 참고하시기 바랍니다. + +- 내부적으로 **Amazon EFS** 기반으로 구현 +- **Linux 기반 컴퓨팅만 지원** (Windows 미지원) +- 파일 크기 임계값 기본값: **128KB** (설정 가능) +- 데이터 보존 기간: **1~365일** (기본 30일, 설정 가능) +- VPC 내 마운트 타겟 필요 (**AZ 당 최대 1개**) +- S3 버킷 변경 → 파일 시스템 반영: **수 초 ~ 수 분** +- 파일 시스템 변경 → S3 동기화: **수 분 이내** (60초 배치 윈도우) + +# 기존 서비스와 비교 +S3 Files 와 기존 AWS 파일 스토리지 서비스를 비교하면 아래와 같습니다. + +| 서비스 | 주요 용도 | 프로토콜 | 적합한 워크로드 | +|--------|-----------|----------|-----------------| +| **S3 Files** | S3 데이터를 파일로 접근 | NFS v4.1/v4.2 | AI/ML, 데이터 분석, S3 데이터 파일 접근 | +| **EFS** | 일반 공유 파일 스토리지 | NFS v4.0/v4.1 | 웹 서버, CMS, 공유 홈 디렉토리 | +| **FSx for Lustre** | 고성능 병렬 파일 시스템 | Lustre | HPC, GPU 클러스터, 대규모 연산 | +| **FSx for NetApp ONTAP** | 엔터프라이즈 NAS | NFS, SMB, iSCSI | 온프레미스 NAS 마이그레이션 | + +S3 Files 의 핵심 장점은 기존에 S3 와 파일 시스템을 이중으로 관리하던 워크로드에서 파일 시스템 복사본을 제거할 수 있다는 점입니다. +AWS 에 따르면 기존 S3 ↔ 파일 시스템 이중 관리 대비 **최대 90% 비용 절감**이 가능하다고 합니다. + +# 주요 활용 사례 + +## AI 에이전트 워크플로우 +여러 AI 에이전트가 Python 라이브러리, CLI 도구, 쉘 스크립트를 사용하여 공유 S3 데이터에 동시 접근하고, 중간 결과를 교환하거나 컨텍스트를 유지할 수 있습니다. + +## ML 훈련 파이프라인 +- **기존 방식**: S3 → 로컬 파일 시스템으로 복사 → 전처리 → 훈련 → 결과를 S3 에 업로드 +- **S3 Files 사용**: S3 데이터를 그대로 파일 시스템으로 접근 → 복사 단계 제거 + +## 데이터 분석 / 공동 작업 +연구원, 분석가, 데이터 과학자가 최대 25,000개 동시 연결로 동일한 S3 버킷 데이터에 접근하여 협업할 수 있습니다. + +## 미디어 제작 +VFX 스튜디오, 렌더팜에서 기존 파일 기반 도구를 그대로 사용하면서 S3 에 저장된 영상 및 에셋에 직접 접근할 수 있습니다. + +# 참고 자료 +- [AWS Blog - Launching S3 Files](https://aws.amazon.com/ko/blogs/aws/launching-s3-files-making-s3-buckets-accessible-as-file-systems/) +- [S3 Files Prerequisites](https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/s3-files-prereq-policies.html) +- [Mounting S3 file systems on EC2](https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/s3-files-mounting.html) +- [S3 Files Documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files.html) +- [S3 Pricing](https://aws.amazon.com/s3/pricing/) diff --git a/assets/images/post/2026-04-09-aws-s3-files/1.png b/assets/images/post/2026-04-09-aws-s3-files/1.png new file mode 100644 index 0000000..e43fc9a Binary files /dev/null and b/assets/images/post/2026-04-09-aws-s3-files/1.png differ diff --git a/assets/images/post/2026-04-09-aws-s3-files/2.png b/assets/images/post/2026-04-09-aws-s3-files/2.png new file mode 100644 index 0000000..f3d47b2 Binary files /dev/null and b/assets/images/post/2026-04-09-aws-s3-files/2.png differ diff --git a/assets/images/post/2026-04-09-aws-s3-files/3.png b/assets/images/post/2026-04-09-aws-s3-files/3.png new file mode 100644 index 0000000..da0543c Binary files /dev/null and b/assets/images/post/2026-04-09-aws-s3-files/3.png differ diff --git a/assets/images/post/2026-04-09-aws-s3-files/4.png b/assets/images/post/2026-04-09-aws-s3-files/4.png new file mode 100644 index 0000000..6716d25 Binary files /dev/null and b/assets/images/post/2026-04-09-aws-s3-files/4.png differ diff --git a/assets/images/post/2026-04-09-aws-s3-files/5.png b/assets/images/post/2026-04-09-aws-s3-files/5.png new file mode 100644 index 0000000..86e9827 Binary files /dev/null and b/assets/images/post/2026-04-09-aws-s3-files/5.png differ