S3 Files 모범 사례
S3 Files 모범 사례 (S3 Files best practices)
이 페이지에서는 S3 파일 시스템 작업을 위한 권장 모범 사례를 설명해요.
출처: 문서
본문
성능 및 비용 최적화
워크로드 병렬화 – S3 Files는 고도로 병렬화된 워크로드를 지원하도록 설계되었어요. 여러 파일과 여러 컴퓨팅 인스턴스에 읽기를 분산하면 총 처리량을 극대화하는 데 도움을 줘요. 또한 전체 버킷 위에 하나의 파일 시스템을 만드는 대신 같은 버킷 내의 서로 다른 특정 프리픽스로 범위가 지정된 여러 파일 시스템을 만들어 수평 확장하고 총 처리량을 개선할 수 있어요.
워크로드가 필요로 하는 가장 작은 프리픽스로 파일 시스템 범위 지정(이름 변경 영향 최소화) – S3에는 기본적인 디렉터리 개념이 없어요. 디렉터리 이름을 바꾸거나 이동하면 S3 Files는 해당 디렉터리의 모든 파일에 대해 업데이트된 키를 가진 새 객체로 데이터를 쓰고 원본을 삭제해야 해요. 수천만 개의 파일이 있는 디렉터리 이름을 바꾸면 S3 요청 비용과 동기화 시간이 크게 늘어날 수 있어요. 활성 데이터셋으로 파일 시스템 범위를 지정하거나, 이름을 바꿀 것으로 예상되는 디렉터리가 더 적은 파일을 포함하도록 데이터를 구성하세요. 자세한 내용은 이름 변경 및 이동 작업의 영향 이해하기를 참고하세요.
큰 IO 크기 사용 – S3 Files는 각 읽기 및 쓰기 작업을 최소 32KB로 측정해요. 더 큰 IO 크기(1MB 이상)를 사용하면 작업당 오버헤드가 상각되어 작은 읽기나 쓰기를 여러 번 하는 것보다 비용 효율적이에요. 마운트 헬퍼를 사용할 때 최적의 성능을 위해 기본 NFS 읽기 및 쓰기 버퍼 크기는 1MB로 설정돼요.
파일 크기에 맞게 가져오기 구성의 sizeLessThan 값 조정 – 기본적으로 S3 Files는 디렉터리에 처음 액세스할 때 128KB보다 작은 파일의 데이터를 캐시해요. 이 임계값보다 큰 파일은 S3에서 직접 읽혀요. 워크로드가 더 큰 파일에 대해 작고 저지연에 민감한 읽기를 수행한다면 sizeLessThan 임계값을 높여 저지연 액세스를 위해 파일 시스템의 고성능 스토리지에 필요한 파일 크기에 맞추세요. 자세한 내용은 S3 Files 동기화 사용자 지정을 참고하세요.
워크로드 수명주기에 맞게 만료 기간 설정 – 만료 기간 내에 읽히지 않은 데이터는 파일 시스템에서 자동으로 제거돼요. 배치 작업이나 학습 실행 같은 수명이 짧은 워크로드에는 더 짧은 만료 기간(17일)을 사용해 저장 비용을 최소화하세요. 몇 주에 걸쳐 같은 데이터를 다시 방문하는 워크로드에는 더 긴 만료 기간(3090일)을 사용해 저지연의 이점을 계속 누리세요. 자세한 내용은 S3 Files 동기화 사용자 지정을 참고하세요.
혼합 워크로드를 위한 프리픽스 범위 규칙 사용 – 버킷에 자주 액세스하는 데이터와 거의 액세스하지 않는 데이터가 모두 포함된 경우 각 프리픽스에 대해 별도의 가져오기 규칙을 만드세요. 이렇게 하면 핫 프리픽스에 대해 데이터를 적극적으로 가져오면서 콜드 프리픽스는 메타데이터 전용으로 유지할 수 있어요. 자세한 내용은 S3 Files 동기화 사용자 지정을 참고하세요.
모든 가용 영역에 마운트 타겟 생성 – 운영하는 각 가용 영역에 마운트 타겟을 하나씩 만들 것을 권장해요. 이렇게 하면 교차 AZ 데이터 전송 비용을 줄이고 성능을 개선할 수 있어요. 컴퓨팅 리소스가 항상 파일 시스템에 대한 로컬 네트워크 경로를 가지므로 가용성과 지연 시간이 모두 개선돼요. AWS Management Console로 파일 시스템을 만들면 S3 Files는 선택한 VPC의 모든 가용 영역에 마운트 타겟을 자동으로 하나씩 생성해요.
동기화
S3 Files 일관성 모델 이해 – 파일 시스템의 파일이 S3 버킷의 해당 객체와 동시에 수정되면 S3 Files는 S3 버킷을 진실 원천으로 간주하고 파일을 분실물 보관함(lost and found) 디렉터리로 이동해요. 충돌을 피하려면 파일 시스템 또는 S3 중 하나의 경로를 기본 기록자(primary writer)로 지정하세요.
동기화 상태 모니터링 – CloudWatch 메트릭을 사용해 파일 시스템과 S3 버킷 간 동기화 상태를 추적하세요. 증가하는 PendingExports는 워크로드가 동기화 속도보다 빠르게 변경 사항을 생성하고 있다는 것을 의미하며, 동기화 완료에 더 오래 걸릴 것임을 나타내요. 0이 아닌 ExportFailures CloudWatch 메트릭은 내보낼 수 없어 조치가 필요한 파일을 나타내요. 자세한 내용은 S3 Files 문제 해결을 참고하세요.
액세스 제어
최소 권한 원칙 준수 – 각 IAM 역할과 파일 시스템 정책에 필요한 최소 권한만 부여하세요. 예를 들어 컴퓨팅 리소스가 파일 시스템에서 데이터만 읽으면 AmazonS3FilesClientFullAccess 대신 AmazonS3FilesClientReadOnlyAccess 관리형 정책을 연결하세요. 또한 전체 버킷이 아닌 특정 프리픽스로 범위가 지정된 파일 시스템을 만들어 클라이언트가 해당 프리픽스 안의 데이터에만 액세스할 수 있도록 하는 것을 고려하세요.
S3 Files IAM 역할 수정 금지 – S3 Files가 S3 버킷과 동기화하기 위해 가정하는 IAM 역할을 수정하거나 삭제하지 마세요. 이 역할을 변경하거나 제거하면 파일 시스템과 S3 버킷 간 동기화가 깨질 수 있어요.
S3 Files EventBridge 규칙 수정 금지 – S3 Files는 S3 버킷의 변경 사항을 감지하기 위해 EventBridge 규칙(DO-NOT-DELETE-S3-Files 프리픽스)을 만들어요. 이 규칙을 비활성화하거나, 수정하거나, 삭제하지 마세요. 제거하면 S3 Files가 버킷의 새 객체나 변경된 객체를 감지하지 못해 파일 시스템이 오래된 상태가 될 수 있어요.
efs-utils가 작성하는 로그에 대한 액세스 제한 고려 – efs-utils는 /var/log/amazon/efs 디렉터리에 저장하는 로그에 S3 객체 키 이름을 직접 기록해요. S3 키 이름에 민감한 정보가 포함되어 있다면 POSIX 권한으로 이 디렉터리에 대한 액세스를 제한해야 해요. 예를 들어 sudo chmod 700 /var/log/amazon/efs 명령으로 액세스를 제한할 수 있어요.
모니터링
동기화 실패에 대한 알람 설정 – ImportFailures와 ExportFailures에 CloudWatch 알람을 만들어 파일 동기화 실패 시 알림을 받으세요. 내보내기 실패는 권한 문제, 암호화 키 문제 또는 경로 길이 제한을 나타낼 수 있어요. 자세한 내용은 S3 Files 문제 해결을 참고하세요.
마이그레이션
온프레미스 스토리지에서 S3 버킷으로 데이터를 처음 마이그레이션하려면 AWS DataSync 사용을 권장해요. DataSync는 대규모 데이터셋 전송을 자동화·가속화하고 마이그레이션 중 파일 메타데이터와 권한을 보존해요. 자세한 내용은 AWS DataSync란 무엇인가요?를 참고하세요.