오늘은 aws 서비스 중에서 가장 고평가 받는 서비스 중 하나인
S3를 인스턴스 내에 Mount하여 일반 경로처럼 사용하는 방법에 대해 알아보려 한다.
관련해서는 인터넷에 검색하면 aws 공홈에도 설명이 나와 있으니
Mountpoint for Amazon S3 정식 출시 – 오픈 소스 기반 파일 시스템 클라이언트 | Amazon Web Services
Mountpoint for Amazon S3는 파일 인식 Linux 애플리케이션을 Amazon Simple Storage Service(S3) 버킷에 직접 쉽게 연결할 수 있게 하는 오픈 소스 파일 클라이언트입니다. 올해 초 알파 릴리스로 발표된 이 제품
aws.amazon.com
그걸 보는게 제일 정확하긴 할거다.
나는 그냥 정리용으로 한번 더 기억하고자 글을 남긴다.
1. mount-s3 다운로드 및 설치
먼저 aws에서 공식으로 제공하는 mount-s3를 다운로드 받아 설치해야 한다.
wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm |
wget으로 해당 주소의 파일을 다운로드하고,
sudo yum install ./mount-s3.rpm |
설치하면 끝이다.
2. mount할 폴더 만들고 mount하기
mkdir "mount할 경로" |
경로를 만들고,
mount-s3 "버킷이름" "mount 경로" |
해당 명령을 실행하면 끝이라고 나온다.
이렇게 간단한데 내가 글을 쓰는 이유는,
당연히 한번에 안됐기 때문이다.
설정이 제대로 안되어 있다면, 이런 에러가 발생할 것이다.
해당 에러는 인스턴스에 적용된 iam 정책에 s3 관련된 내용이 빠져있기 때문이다.
그럼 해당 에러를 해결하려면 어떤 정책을 넣어야 하나.
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "Stmt1546506260896",
"Action": "s3:ListBucket",
"Effect": "Allow",
"Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET"
}]
}
위와 같이 넣어주면 해결된다.
간단하게 설명하면,
Sid는 그냥 내가 정하는 정책 명이라고 생각하면 되고,
Action이 어떤 동작을 허용할 것인지를 정하는 부분이며, 해당 부분에 넣는 값에 따라 특정 동작의 여부가 가능해진다.
Effect는 Allow, Deny인데, 뜻 그대로 허용, 차단을 설정하는 옵션이다.
Resource는 버킷 주소를 적는다고 생각하면 된다. AWS-EXAMPLE-BUCKET 부분에는 내 버킷명이 들어가면 된다.
(ex : 버킷 명이 aa면 arn:aws:s3:::aa 이렇게 들어간다.)
Resource에는 필요에 따라 버킷 전체를 위와 같이 넣거나,
특정 경로부분을 넣을 수도 있는데, 그냥 arn:aws:s3:::aa/"파일 경로" 이런식으로
익숙한 방법으로 넣으면 된다.
일단 정책에 해당 부분을 넣게되면 s3 mount는 가능해진다.
다만, mount만 가능하고, mount 경로내에서의 cp나 vim 같은 동작들은 불가능하다.
왜냐면 s3에 대한 다른 권한들이 없기 때문이다.
이부분도 필요에 따라 정책을 추가해줘야 한다.
How Amazon S3 works with IAM - Amazon Simple Storage Service
If an IAM identity is deleted after you update your bucket policy, the bucket policy will show a unique identifier in the principal element instead of an ARN. These unique IDs are never reused, so you can safely remove principals with unique identifiers fr
docs.aws.amazon.com
위의 링크로 접속하면 s3:GetObject, s3LPutObject 등 몇가지 정책에 대한 설명과 사용법이 있으니 참고하자.
추가로 전체다 열어주고 싶으면 s3:* 로 정책을 넣어주면 되긴한데,
이렇게 사용하려면, Principal 설정이 꼭 들어가야 한다.
물론 이것도 s3 설정에서 public 접근을 허용한다면 안넣어줘도 되긴 하다.
하나하나 다 설명하고 싶지만,
그러면 글이 너무 길어질 것 같아서 여기까지 쓰겠다.
'Cloud > AWS' 카테고리의 다른 글
같은 계정 내에 서로 다른 인프라의 인스턴스 간 커맨드 실행(Run Command) (0) | 2024.11.28 |
---|---|
S3 간 파일 업로드 시 옵션값 설정에 따른 속도차이 계산(S3 SYNC 성능 개선) (0) | 2024.09.26 |
AWS SNS 만들고, 구독 하기(CLI 사용) (0) | 2024.05.27 |
CloudWatch 사용하기 (0) | 2024.04.17 |
Application Load Balancer에 대한 고정 세션(Sticky) (0) | 2024.04.02 |