S3 Files 동기화 사용자 지정
S3 Files 동기화 사용자 지정 (Customizing synchronization for S3 Files)
S3 Files는 동기화 구성을 통해 파일 시스템과 연결된 S3 버킷 간 데이터 흐름을 제어할 수 있게 해줘요. 기본 설정은 대부분의 워크로드에서 지연 시간과 비용의 균형을 맞춰 주지만, 액세스 패턴에 맞게 조정할 수 있어요. 더 많은 데이터를 미리 가져오면 읽기 지연 시간이 줄어드는 대신 저장 및 쓰기 비용이 높아져요. 더 적은 데이터를 가져오면 저장 비용은 낮게 유지되지만 더 많은 읽기가 S3에서 더 높은 지연 시간으로 처리돼요. 각 구성에는 가져오기 데이터 규칙(import data rules)과 만료 데이터 규칙(expiration data rules)이라는 두 가지 구성 요소가 있어요. 가져오기 데이터 규칙은 어떤 데이터를 언제 파일 시스템에 복사할지 제어하고, 만료 데이터 규칙은 사용하지 않는 데이터가 파일 시스템에 얼마나 오래 남아 있는지 제어해요. AWS Management Console 또는 PutSynchronizationConfiguration API를 사용해 이러한 규칙을 업데이트할 수 있어요.
출처: 문서
본문
가져오기 데이터 규칙 (Import data rules)
가져오기 데이터 규칙은 데이터가 버킷에서 파일 시스템으로 복사되는 방식을 제어해요. 파일 시스템당 최대 10개의 가져오기 데이터 규칙을 가질 수 있어요. 각 가져오기 데이터 규칙에는 다음 파라미터가 있어요.
- prefix – 규칙이 적용되는 S3 프리픽스예요. 전체 버킷(파일 시스템 범위)에는 빈 문자열(
"")을 지정하고, 파일 시스템 내의 특정 프리픽스(예:"data/ml/")에는 해당 프리픽스를 지정하세요. 프리픽스는""로 전체 버킷을 지정하지 않는 한 슬래시(/)로 끝나야 해요. 루트 디렉터리에는 정확히 하나의 가져오기 규칙을 포함해야 해요. 기본값:""(전체 버킷 또는 파일 시스템 범위). - trigger – 데이터를 가져올 시점이에요.
ON_DIRECTORY_FIRST_ACCESS또는ON_FILE_ACCESS. 기본값:ON_DIRECTORY_FIRST_ACCESS.ON_DIRECTORY_FIRST_ACCESS– 디렉터리에 처음 액세스할 때 파일 데이터가 가져와져요. 예를 들어 디렉터리의 내용을 나열하거나 그 안의 파일을 열어 처음 액세스하면 sizeLessThan 임계값보다 작은 해당 디렉터리의 모든 직계 자식 파일에 대한 데이터가 가져와져요. 이 옵션은 파일에 처음 액세스할 때 낮은 지연 시간이 필요한 워크로드에 유용해요.ON_FILE_ACCESS– 파일 데이터는 파일이 처음 읽힐 때만 가져와져요. 이 옵션은 첫 읽기의 더 높은 지연 시간을 대가로 가져오는 데이터를 최소화해요.
- sizeLessThan – 자동으로 가져올 최대 파일 크기(바이트)예요. S3 Files는 모든 파일의 메타데이터를 가져오지만 데이터는 이 임계값보다 작은 파일에 대해서만 가져와요. 최소: 0바이트(데이터 미가져오기, 메타데이터는 여전히 가져옴). 최대: 52,673,613,135,872바이트(48 TiB). 기본값: 131,072바이트(128 KiB).
프리픽스 매칭 동작
여러 가져오기 데이터 규칙이 파일과 일치하면 S3 Files는 가장 구체적인 프리픽스를 가진 규칙을 적용해요. 예를 들어 세 개의 규칙이 있다고 가정해 보세요.
- 규칙 1: prefix =
""(전체 버킷), sizeLessThan = 64 KiB, trigger = ON_FILE_ACCESS - 규칙 2: prefix =
"hot/", sizeLessThan = 1 MiB, trigger = ON_DIRECTORY_FIRST_ACCESS - 규칙 3: prefix =
"hot/largeData/", sizeLessThan = 256 KiB, trigger = ON_DIRECTORY_FIRST_ACCESS
hot/largeData/data.txt의 파일에는 S3 Files가 규칙 3을 적용해요. hot/data.txt의 파일에는 규칙 2를 적용해요. cold/data.txt의 파일에는 cold/ 프리픽스에 대한 특정 규칙이 없으므로 규칙 1을 적용해요.
만료 데이터 규칙 (Expiration data rules)
만료 데이터 규칙은 저장 비용을 최적화하기 위해 사용하지 않는 데이터를 파일 시스템에서 언제 제거할지 제어해요. S3 Files는 데이터가 지정된 기간 동안 읽히지 않고 변경 사항이 이미 S3 버킷에 동기화된 후에 해당 데이터를 제거해요. 파일이 읽힐 때마다 만료 타이머가 재설정되어 데이터가 파일 시스템에 남아 있는 시간이 연장돼요. 만료 데이터 규칙에서 다음 파라미터를 지정할 수 있어요.
- daysAfterLastAccess – 마지막 읽기 후 데이터가 파일 시스템에서 제거되는 일 수예요. 최소: 1일. 최대: 365일. 기본값: 30일.
같은 데이터를 자주 액세스하는 장기 실행 워크로드가 있다면 더 긴 만료 기간(3090일)을 고려하세요. 임시 데이터에는 더 짧은 기간(17일)을 고려하세요.
예시 구성
일반 목적 파일 공유(기본 구성) – 개발자와 데이터 과학자 팀이 S3 파일 시스템을 마운트해 코드, 구성 파일, 소규모 데이터셋을 공유해요. 대부분의 파일은 128 KiB 미만이며 하루 종일 반복적으로 읽혀요. 기본 구성은 이 워크로드에 잘 작동해요. 디렉터리의 파일에 처음 액세스할 때 ON_DIRECTORY_FIRST_ACCESS가 메타데이터와 작은 파일 데이터를 가져오며, 이는 프로젝트의 소스 파일이나 배포의 구성 파일처럼 같은 디렉터리의 파일을 함께 액세스할 가능성이 높을 때 잘 작동해요. 이후 모든 사용자의 액세스는 빠르게 이루어져요. 사용자가 로그 보관 파일 같은 대용량 파일을 열면 S3 Files는 높은 처리량을 위해 S3에서 직접 자동으로 스트리밍해요. 30일 만료 기간은 수동 정리 없이 적극적으로 사용되는 파일을 파일 시스템에 유지해요.
반복 읽기가 있는 ML 학습 – 학습 작업이 여러 에포크에 걸쳐 수천 개의 작은 파일(<10 MiB)을 반복적으로 읽어요. 지연 시간을 최소화하려면 ON_DIRECTORY_FIRST_ACCESS와 함께 높은 sizeLessThan 임계값(예: 10 MiB)을 설정해 학습 스크립트가 각 디렉터리를 처음 나열할 때 파일 데이터가 미리 로드되도록 해요. 학습 작업이 완료된 후 데이터가 파일 시스템에서 신속히 제거되도록 짧은 만료 기간(예: 3일)을 설정하세요.
광범위한 파일 탐색이 있는 에이전트 워크로드 – AI 에이전트가 관련 컨텍스트를 검색하면서 많은 작은 파일을 찾기 위해 대규모 문서, 코드 또는 지식 베이스 파일 저장소를 탐색하고 많은 작은 파일을 한 번씩 읽어요. sizeLessThan을 0으로 설정해 파일 시스템에 데이터가 가져와지지 않도록 해요. 에이전트는 파일을 발견하기 위해 낮은 지연 시간으로 전체 디렉터리 트리를 탐색할 수 있으며, 각 파일 읽기는 S3에서 직접 처리돼요. 이는 예측할 수 없이 많은 파일을 건드리지만 같은 파일을 거의 다시 방문하지 않는 워크로드에 비용을 낮게 유지하고, 병렬로 읽는 에이전트를 더 추가할수록 자연스럽게 확장돼요.
핫 및 콜드 프리픽스 – 파일 시스템에 config/ 아래의 자주 액세스하는 구성 파일과 archive/ 아래의 거의 액세스하지 않는 보관 데이터가 모두 포함되어 있어요. 두 개의 가져오기 규칙을 만드세요. 하나는 높은 sizeLessThan과 ON_DIRECTORY_FIRST_ACCESS를 가진 config/용이고, 다른 하나는 sizeLessThan이 0이고 ON_FILE_ACCESS인 archive/용이에요. 이렇게 하면 구성 파일을 파일 시스템에 유지해 빠른 액세스를 제공하면서 거의 읽지 않는 보관 데이터에 대한 저장 비용을 피할 수 있어요.