[S3 6/7] S3 2026 신기능 — Files, Tables, Vectors, Metadata + s3fs-fuse

2026/06/13 AWS S3 7725자 · 약 23분

S3가 단순한 객체 스토리지를 넘어 파일 시스템, 테이블, 벡터 DB까지 아우르는 데이터 플랫폼으로 진화했습니다. 2026년 신기능과 오픈소스 대안을 함께 정리합니다.

TL;DR

  • S3 Files (New): S3를 POSIX 파일 시스템처럼 마운트 — NFS/SMB 호환
  • S3 Tables (New): Apache Iceberg 관리형 테이블 — 트랜잭션 쿼리
  • S3 Vectors (New): 벡터 저장 + 유사도 검색 — RAG/AI 파이프라인
  • s3fs-fuse (오픈소스): FUSE로 S3를 로컬 디렉토리에 마운트 — 무료 대안
  • S3 Metadata (Updated): Iceberg 기반 쿼리 가능 메타데이터

S3의 2026 진화

Amazon S3는 2006년 출시 이후 지속적으로 진화해 왔으며, 2026년에는 단순한 객체 스토리지를 넘어 종합적인 데이터 플랫폼으로 자리잡았습니다.

S3 진화 타임라인

2006년 객체 스토리지로 시작한 S3는 버전관리·암호화(2012), S3 Select(2018), S3 Express One Zone(2022)을 거쳐, 2026년에는 Files, Tables, Vectors, Metadata를 모두 아우르는 플랫폼이 되었습니다.

2026 S3 통합 데이터 플랫폼

핵심 변화는 파일·테이블·벡터를 하나의 S3 스토리지에서 통합 운영할 수 있게 된 점입니다. 11개 9의 내구성, 무제한 스토리지, 세분화된 액세스 제어라는 공통 기반 인프라 위에 다양한 접근 인터페이스가 올라가는 구조입니다.

1. S3 Files — S3를 파일 시스템으로

S3 Files는 S3 데이터를 파일 시스템으로 직접 마운트하여 POSIX 호환 파일 접근을 제공하는 기능입니다.

S3 Files 개요

기존에는 S3 SDK(GetObject, PutObject)를 호출하려면 코드 수정이 필요했고, 파일 시스템 의미 체계(잠금, append 등)를 사용할 수 없었습니다. S3 Files는 이를 해결합니다.

지원 컴퓨트 환경

S3 Files 지원 컴퓨트 환경

EC2, ECS, EKS, Lambda에서 모두 파일 시스템 인터페이스로 S3에 접근할 수 있습니다. 기존 파일 기반 애플리케이션 코드를 수정 없이 그대로 사용할 수 있는 것이 핵심 장점입니다.

핵심 특징

특징설명
POSIX 호환open, read, write, close, seek, append 완벽 지원
데이터 복제 불필요S3 객체를 파일처럼 직접 접근
NFS/SMB 의미 체계네트워크 파일 시스템 프로토콜 호환
강한 일관성읽기/쓰기 일관성 보장
자동 스케일링무제한 스토리지, 처리량 자동 확장

마운트 예시

# S3 Files 마운트 (EC2 인스턴스에서)
aws s3files mount \
    --bucket my-shared-data-bucket \
    --mount-point /mnt/s3-data \
    --region ap-northeast-2

# 일반 파일처럼 접근 가능
ls /mnt/s3-data/
cp large-file.csv /mnt/s3-data/

데이터 공유 연계

데이터 공유 연계

데이터 제공자가 S3 버킷에 데이터를 저장하면, 소비자가 S3 Files로 파일 시스템에 마운트하여 직접 접근할 수 있습니다. 데이터 다운로드나 동기화가 불필요하며, Access Point 정책으로 세분화된 접근 제어가 가능합니다.

실전: s3fs-fuse로 S3를 로컬 디렉토리에 마운트하기

s3fs-fuse는 FUSE(Filesystem in Userspace) 기반의 오픈소스 도구로, S3 버킷을 로컬 디렉토리처럼 마운트해 줍니다. S3 Files의 관리형 기능이 필요 없거나 비용을 절감하고 싶을 때 무료 대안으로 사용할 수 있습니다.

s3fs-fuse란? Linux/Unix에서 S3 버킷을 로컬 파일 시스템으로 마운트하는 FUSE 기반 오픈소스 프로젝트입니다. S3 API를 파일 시스템 호출로 변환하여 일반 파일처럼 읽고 쓸 수 있게 합니다.

설치

# Ubuntu/Debian
sudo apt install s3fs

# CentOS/RHEL
sudo yum install s3fs
Docker로 실행 (클릭하여 펼치기) ```bash # Docker 이미지 사용 docker run -d --name s3fs-mount \ --device /dev/fuse --cap-add SYS_ADMIN \ --security-opt apparmor:unconfined \ -e AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY \ -e AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY \ -v /mnt/s3data:/mnt/s3data:shared \ efrecon/s3fs \ my-bucket /mnt/s3data \ -o url=https://s3.ap-northeast-2.amazonaws.com \ -o endpoint=ap-northeast-2 \ -o allow_other \ -o use_path_request_style ```

자격 증명 설정

echo "ACCESS_KEY:SECRET_KEY" > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

마운트

mkdir /mnt/s3data
s3fs my-bucket /mnt/s3data \
  -o passwd_file=~/.passwd-s3fs \
  -o url=https://s3.ap-northeast-2.amazonaws.com \
  -o endpoint=ap-northeast-2 \
  -o allow_other \
  -o use_path_request_style

자동 마운트 (fstab)

s3fs#my-bucket /mnt/s3data fuse _netdev,allow_other,passwd_file=/home/user/.passwd-s3fs,url=https://s3.ap-northeast-2.amazonaws.com 0 0

사용 예시

ls /mnt/s3data/
cp large-file.csv /mnt/s3data/data/
echo "hello" > /mnt/s3data/test.txt
python train_model.py --data-dir /mnt/s3data/training/

한계 및 주의사항

s3fs-fuse는 편리하지만 S3 Files(Managed)와 비교해 명확한 한계가 있습니다.

한계설명
메타데이터 성능디렉토리 목록(ls) 등 메타데이터 오퍼레이션이 느림 (객체 수가 많을수록 지연 증가)
강력 일관성 미보장S3 자체는 강력 일관성을 제공하지만, s3fs의 로컬 캐시로 인해 stale read 발생 가능
랜덤 액세스 비효율대용량 파일의 부분 읽기/쓰기 시 전체 객체를 다운로드/업로드하는 비효율 발생
부분적 POSIX 호환파일 잠금, rename 등 일부 POSIX 시맨틱이 완벽히 지원되지 않음
동시 쓰기 위험다중 클라이언트에서 동일 객체 동시 쓰기 시 데이터 손상 가능

S3 Files vs s3fs-fuse vs Mountpoint 비교표

항목S3 Files (Managed)s3fs-fuse (OSS)Mountpoint for S3
관리완전 관리형직접 관리직접 설치
비용프로비저닝 요금무료무료
POSIX 호환성완전부분고성능 변형
NFS/SMB지원미지원미지원
성능최적화됨중간높음 (병렬)
강력 일관성지원캐시 의존지원
적합엔터프라이즈개발/테스트고성능 읽기

선택 가이드: 엔터프라이즈 워크로드는 S3 Files, 개발/테스트/소규모는 s3fs-fuse, 고성능 읽기 중심 ML/AI는 Mountpoint for S3가 적합합니다.

2. S3 Tables — Apache Iceberg 관리형 테이블

S3 Tables는 Apache Iceberg 기반의 관리형 테이블 서비스로, S3에 저장된 데이터를 테이블 형태로 관리하고 쿼리할 수 있습니다.

S3 Tables 개요

테이블 버킷(Table Bucket) 구조

Table Bucket 구조

테이블 버킷은 네임스페이스 → 테이블 계층 구조를 가집니다. 각 테이블은 Iceberg 포맷의 Parquet/ORC 파일로 저장되며, Compaction, Snapshot Expiry, Orphan Cleanup이 자동으로 수행됩니다.

핵심 특징

특징설명
ACID 트랜잭션데이터 무결성 보장
스키마 진화컬럼 추가/삭제 시 호환성 유지
Time Travel특정 시점 데이터 복원/쿼리
자동 Compaction파일 압축 및 스냅샷 만료 자동 관리
멀티 엔진Athena, Spark, Trino에서 동일 테이블 쿼리

테이블 생성 및 쿼리

import boto3
s3tables = boto3.client('s3tables')
s3tables.create_namespace(
    tableBucketARN=bucket_arn,
    namespace=['sales']
)
전체 테이블 생성 코드 (클릭하여 펼치기) ```python import boto3 s3tables = boto3.client('s3tables') # 1. Table Bucket 생성 table_bucket = s3tables.create_table_bucket( name='analytics-tables', tableBucketMode='OPENQUERY' ) bucket_arn = table_bucket['arn'] # 2. Namespace 생성 s3tables.create_namespace( tableBucketARN=bucket_arn, namespace=['sales'] ) # 3. 테이블 생성 (Apache Iceberg 포맷) s3tables.create_table( tableBucketARN=bucket_arn, namespace='sales', name='orders', format='ICEBERG', tableConfiguration={ 'iceberg': { 'schema': { 'fields': [ {'name': 'order_id', 'type': 'long', 'required': True}, {'name': 'customer_id', 'type': 'long'}, {'name': 'order_date', 'type': 'timestamp'}, {'name': 'amount', 'type': 'double'}, {'name': 'region', 'type': 'string'} ] }, 'partitioning': [ {'fieldName': 'order_date', 'transform': 'month'} ] } } ) # 4. Athena로 쿼리 athena = boto3.client('athena') athena.start_query_execution( QueryString="SELECT region, SUM(amount) FROM sales.orders GROUP BY region", QueryExecutionContext={'Catalog': 'aws:s3tables:analytics-tables'}, ResultConfiguration={'OutputLocation': 's3://athena-results/'} ) # 5. PySpark에서 읽기 df = spark.read.format("iceberg") \ .load("s3tables://analytics-tables/sales/orders") ```
-- Athena 쿼리 (S3 Tables)
SELECT region, COUNT(*) AS order_count, SUM(amount) AS total
FROM sales.orders
WHERE order_date >= TIMESTAMP '2025-01-01'
GROUP BY region
ORDER BY total DESC;

데이터 공유 연계

데이터 공유 연계

제공자가 Table Bucket에 구조화된 데이터를 저장하면, 소비자가 S3 Grants로 테이블 권한을 받아 Athena, Spark, Trino로 직접 쿼리할 수 있습니다. 스키마 진화가 자동 반영되며, 스냅샷 격리로 일관된 읽기가 보장됩니다.

3. S3 Vectors — 벡터 저장 및 유사도 검색

S3 Vectors는 AI/ML 애플리케이션을 위한 기본 벡터 스토리지로, 고성능 벡터 유사도 검색을 S3 내에서 직접 수행합니다.

S3 Vectors 개요

핵심 특징

특징설명
1초 미만 쿼리수십억 벡터에서 서브초(sub-second) 검색
90% 비용 절감전용 벡터 DB 대비 운영 비용 90% 절감
Bedrock 통합Amazon Bedrock Knowledge Base와 직접 연동 (RAG)
다양한 거리 척도Cosine, Euclidean, Dot Product 지원
벡터 인덱스고속 유사도 검색을 위한 자동 인덱싱

인덱스 생성 및 벡터 쿼리

import boto3
s3vectors = boto3.client('s3vectors')

# Vector Index 생성
s3vectors.create_vector_index(
    vectorBucketName='ai-embeddings',
    indexName='document-embeddings',
    dimension=1536,
    distanceMetric='COSINE'
)
전체 벡터 저장 및 검색 코드 (클릭하여 펼치기) ```python import boto3 s3vectors = boto3.client('s3vectors') # 1. Vector Bucket 생성 bucket = s3vectors.create_vector_bucket( name='ai-embeddings', vectorBucketConfiguration={ 'dimension': 1536, 'distanceMetric': 'COSINE' } ) # 2. Vector Index 생성 s3vectors.create_vector_index( vectorBucketName='ai-embeddings', indexName='document-embeddings', dimension=1536, distanceMetric='COSINE' ) # 3. 벡터 데이터 삽입 (배치) vectors = [] for i, doc in enumerate(documents): embedding = get_embedding(doc['text']) # Bedrock/Titan 호출 vectors.append({ 'id': f'doc-{i}', 'vector': embedding, 'metadata': { 'title': doc['title'], 'source': doc['source'], 'category': doc['category'] } }) s3vectors.put_vectors( vectorBucketName='ai-embeddings', indexName='document-embeddings', vectors=vectors ) # 4. 유사도 검색 (쿼리) query_embedding = get_embedding("S3 데이터 공유 방법") results = s3vectors.query_vectors( vectorBucketName='ai-embeddings', indexName='document-embeddings', queryVector=query_embedding, topK=10, filter={'category': {'eq': 'aws-guide'}} ) for result in results['matches']: print(f" 유사도: {result['score']:.4f} | {result['metadata']['title']}") # 5. Bedrock Knowledge Base와 통합 (RAG) # Bedrock KB가 S3 Vectors를 자동으로 벡터 스토어로 사용 # → 문서 업로드만으로 RAG 파이프라인 자동 구성 ```

AI 에이전트 간 벡터 공유

AI 에이전트 간 벡터 공유

AI 팀 A가 문서를 임베딩하여 S3 Vector Bucket에 PutVectors로 저장하면, AI 팀 B가 QueryVectors로 유사도 검색을 수행할 수 있습니다. Access Point 권한 제어로 팀별로 쓰기/읽기 권한을 세분화할 수 있으며, 사내 지식 베이스 공유, 멀티 에이전트 지식 전달, 부서 간 RAG 등에 활용할 수 있습니다.

4. S3 Metadata — 쿼리 가능한 메타데이터

S3 Metadata는 객체 메타데이터를 Apache Iceberg 테이블로 자동 관리하여, SQL로 객체를 검색하고 관리할 수 있게 해줍니다.

S3 Metadata

객체의 key, size, last_modified, storage_class, custom_metadata가 자동으로 Iceberg 테이블에 동기화됩니다. 객체가 변경되면 실시간으로 반영됩니다.

활용 사례

  • “1GB 이상의 PROD 환경 데이터 찾기”
  • “30일 이상 미수정 GLACIER 객체 목록”
  • “특정 날짜에 업로드된 모든 이미지 검색”

메타데이터 쿼리

-- 1GB 이상의 프로덕션 환경 데이터 찾기
SELECT key, size / 1024 / 1024 / 1024 AS size_gb,
       last_modified, storage_class
FROM s3_metadata_table
WHERE size > 1073741824
  AND custom_metadata['env'] = 'prod'
ORDER BY size DESC LIMIT 100;

통합 아키텍처: S3 as Data Platform

2026년 S3의 핵심은 Objects, Files, Tables, Vectors, Metadata가 유기적으로 연결된 통합 데이터 플랫폼이라는 점입니다.

통합 아키텍처: S3 as Data Platform

데이터 플랫폼 계층(Objects, Files, Tables, Vectors, Metadata) 위에 공유 인프라(Access Points, Data Exchange, S3 Grants, Multi-Region AP)가 올라가고, 최상위에 소비 서비스(Athena, Redshift, SageMaker, EMR, QuickSight)가 위치하는 3계층 구조입니다.

S3 플랫폼 가치

S3 플랫폼 가치

시나리오데이터 플랫폼 조합결과
데이터 분석가S3 Tables → Athena → QuickSightSQL로 즉시 분석
ML 엔지니어S3 Files → 마운트 → SageMaker 학습다운로드 없이 학습
AI 애플리케이션S3 Vectors → Bedrock KB → RAG 챗봇지능형 검색
데이터 엔지니어S3 Metadata → 데이터 검색 → 파이프라인 자동화데이터 카탈로그 구축
글로벌 팀Multi-Region AP → S3 Tables → 지역별 쿼리글로벌 복제 + 로컬 저지연

Takeaway

  1. S3는 더 이상 객체 스토리지가 아닙니다 — 파일, 테이블, 벡터를 모두 아우르는 데이터 플랫폼
  2. s3fs-fuse로 무료로 시작하세요 — S3 Files의 관리형 기능이 필요 없다면 s3fs-fuse면 충분
  3. S3 Vectors는 RAG 비용을 90% 줄입니다 — 별도 벡터 DB 없이 S3에서 직접 검색

S3 시리즈 6/7

  
S3 데이터 공유 아키텍처 — 6가지 패턴과 선택 가이드 
 VersityGW로 온프레미스에 S3 API 구축하기
HeonJe Lee | 선임연구원
게이트웨이 On-promise 제품 팀에서 시스템 모니터링 및 관리를 쉽게 다가갈 수 있도록 하기 위한 업무를 하고 있습니다.

Contact: lhjnano@gmail.com

Search

    Table of Contents