AWS

[AWS] Mountpoint for S3 - 구성 설정

비번변경 2024. 3. 25. 17:53

개요

2024.03.22 - [AWS] Mountpoint for S3 - S3를 파일 시스템처럼 사용하기에서 AWS S3가 제공하는 Mountpoint for S3 기능을 살펴보았다. 다만 Mountpoint for S3는 mount-s3를 수행한 사용자가 버킷에 대해 작업할 수 있도록 기본적인 권한을 설정한다. 때문에 이전 글에서 EC2에 root 사용자로 버킷을 마운트 했을 때, 일반 사용자는 버킷에 접근할 수가 없었다.

이번 글에서는 Mountpoint for S3 사용 시 고려해볼 수 있는 권한, mount path 지정 등의 구성 설정에 대해 적어둔다.

 

 

파일/디렉터리 권한 설정

Mountpoint for S3는 기본적으로 mount-s3 명령을 수행한 사용자가 마운트 한 버킷의 파일을 읽고 쓸 수 있도록 허용한다. 만약 다른 사용자가 버킷에 대한 작업을 수행할 수 있도록 허용하고 싶을 때는 다음과 같은 옵션을 함께 사용하여 마운트해야 한다.

옵션 설명
--allow-other root를 포함한 다른 사용자의 접근 허용.
--allow-root와 함께 사용할 수 없다.
--allow-root root 사용자의 접근 허용.
--allow-other와 함께 사용할 수 없다.
--uid 디렉터리 소유자 지정.
기본값은 mount-s3를 수행한 사용자
--gid 디렉터리 그룹 지정.
기본값은 mount-s3를 수행한 사용자의 그룹
--dir-mode 디렉터리 권한.
기본값은 755
--file-mode 파일 권한.
기본값은 644

따라서 root 권한을 가진 서버 관리자가 요청에 의해 mount-s3를 사용하는 경우, 다음과 같은 옵션을 지정하여 권한을 제어하면 되지 않을까 싶다.

mount-s3 <BUCKET_NAME> /path/mount/point \
    --allow-other \
	--uid <UID> --gid <GID> \
	--dir-mode 775 --file-mode 664
    
# 예시
mount-s3 test-bucket /mnt/test-bucket \
    --allow-other \
	--uid 1000 --gid 1000 \
	--dir-mode 775 --file-mode 664

이제 일반 사용자로 마운트 경로에 접근해도 버킷 내 내용이 잘 확인된다.

 

 

파일 편집/삭제 허용

Mountpoint for S3는 기본적으로 기존 객체를 편집하거나 삭제하는 작업은 허용하지 않는다. 새 객체를 생성하는 것만 허용한다. 따라서 기존 객체에 대한 작업이 필요한 경우에는, --allow-overwrite,  --allow-delete 옵션을 추가한다.

옵션 설명
--allow-overwrite 기존 파일 편집을 허용한다.
vi를 이용한 파일 편집 등에는 적합하지 않다.
--allow-delete 기존 파일 삭제를 허용한다.
mount-s3 <BUCKET_NAME> /path/mount/point \
    --allow-overwrite --allow-delete
    
# 예시
mount-s3 test-bucket /mnt/test-bucket \
    --allow-overwrite --allow-delete

다만 기존 파일에 대해 작업하는 vi, mv 명령 사용에는 적합하지 않고, 동작하지 않을 수 있다. cp나 rm 명령어를 사용에 보다 적합하다. vi, mv 명령이 필요한 경우에는 s3fs를 사용한 마운트 방식이 좀 더 적합하다고 한다.

 

 

mount path 지정

Mountpoint for S3를 통한 작업을 버킷 전체가 아니라 특정 prefix에 대해서만 허용해야 하는 경우가 있을 수 있다. 이런 경우에는 mount 시 --prefix 옵션으로 접근할 S3 prefix를 지정할 수 있다.

mount-s3 <BUCKET_NAME> /path/mount/point --prefix <MOUNT_PATH>

# 예시
mount-s3 test-bucket /mnt/test-bucket-pq --prefix parquet/

 

 

부팅 시 자동 마운트

일반적으로 파일 시스템은 /etc/fstab 등에 등록하여 부팅 시에도 마운트를 유지할 수 있도록 한다. 하지만 Mountpoint for S3는 시스템 부팅 시 자동 마운트를 지원하지 않는다. 대안으로 systemd에 부팅 서비스를 등록하여 마운트하는 방법을 사용할 수 있다. 아래는 예시 파일이다.

[Unit]
Description=Mountpoint for Amazon S3 mount
Wants=network.target
AssertPathIsDirectory=/home/ec2-user/s3-bucket-mount

[Service]
Type=forking
User=ec2-user
Group=ec2-user
ExecStart=/usr/bin/mount-s3 DOC-EXAMPLE-BUCKET /home/ec2-user/s3-bucket-mount
ExecStop=/usr/bin/fusermount -u /home/ec2-user/s3-bucket-mount

[Install]
WantedBy=remote-fs.target

 

 

참고 문서

https://github.com/awslabs/mountpoint-s3/blob/main/doc/CONFIGURATION.md