코드제출 worker에서 S3에 있는 zip 파일을 boto3를 이용해서 받지 않고, file system을 이용하는 것처럼 엑세스해서 압축을 해제한 뒤에 가져오는 방법으로 바꿔보았다.
파일 시스템은 본래 운영체제 커널의 영역. 새로운 파일 시스템을 만들려면 복잡한 커널 코드를 수정해야 하며, 오류 발생 시 시스템 전체가 다운될 위험이 있음. FUSE는 이러한 제약을 해결하기 위해 등장한 기술
Mountpoint for Amazon S3는 AWS에서 공식적으로 개발한 오픈소스 FUSE 클라이언트. S3 버킷을 리눅스 시스템의 로컬 디렉토리처럼 마운트하여 사용할 수 있게 지원.
모든 작업에 적합한 것은 아니며, 특정 워크로드에서 강력한 성능을 발휘함.
S3는 객체 스토리지이므로 일반적인 파일 시스템과는 동작 방식이 다름을 인지해야 함.
EC2 서버에서 사용하는 방법
# 최신 패키지 다운로드 (x86_64 아키텍처 기준)
wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
# yum을 이용한 설치
sudo yum install ./mount-s3.rpm -y
# 설치 버전 확인
mount-s3 --version
# 마운트 포인트 디렉토리 생성
mkdir ~/my-s3-bucket
# S3 버킷 마운트 실행 (버킷명: my-example-bucket)
mount-s3 my-example-bucket ~/my-s3-bucket
--readonly: 읽기 전용 모드로 마운트함.--allow-delete: 파일 삭제 권한을 허용함 (기본값은 삭제 불가).--region: 버킷이 위치한 리전을 명시함 (필요 시).umount ~/my-s3-bucket
[Unit]
Description=Mountpoint for Amazon S3
After=network.target
[Service]
Type=forking
User=ec2-user
Group=ec2-user
ExecStart=/usr/bin/mount-s3 my-example-bucket /home/ec2-user/my-s3-bucket --allow-other --uid 1000 --gid 1000
ExecStop=/usr/bin/umount /home/ec2-user/my-s3-bucket
Restart=always
[Install]
WantedBy=multi-user.target
# 데몬 재로드
sudo systemctl daemon-reload
# 서비스 활성화 (부팅 시 자동 실행)
sudo systemctl enable s3-mount
# 서비스 시작
sudo systemctl start s3-mount