일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- namespace
- MongoDB
- docker
- aws codecommit
- network
- MongoEngine
- 재테크
- 커피머니불리기
- Container
- clone
- codecommit
- 토스카드
- VPC
- 포인트앱
- mininet
- python3
- 앱테크
- docker network
- AWS
- S3
- 리뷰
- 실사용
- 하나머니
- Python
- Linux
- built-in
- 리워드앱
- 후기
- 도커
- DocumentDB
- Today
- Total
ㅍㅍㅋㄷ
goofys를 이용해 AWS S3 mount 해서 사용하기 본문
goofys를 이용해 AWS S3 mount 해서 사용하기
S3는 AWS 라인업 중 가장 유용한 서비스 중 하나라고 생각한다.
하지만 S3 자체가 일반적인 파일 시스템과는 좀 다른 object 기반이기도 하고 REST http 기반이다 보니 사용성에서 약간의 불편함을 느낄 수 있다.
그래서 최근에는 Storage Gateway 라는 서비스도 출시하며, S3를 iscsi 형태로 제공하도록 appliance를 직접 제공하기도 한다.
하지만 Storage Gateway를 설정하여 사용하려면, Local IDC 환경 또는 AWS에 Gateway appliance 를 VM형태로 올려야 하기 때문에 추가 비용이 들고
간단히 사용하기엔 번거롭기도 하다.
이때 간단한 해결책으로 S3를 filesystem 처럼 mount 하여 사용하는 방법이 즐겨 쓰이곤 한다.
이중 널리 쓰이는 backend package 중 하나가 FUSE 기반의 s3fs 이다.
그러나 s3fs는 한가지 이슈가 있는데,
"너무 느리다"
그래서 다른 대안을 찾아보다 보니 s3fs 보다는 성능이 좋다는 goofys 라는 패키지가 있었다.
이것 또한 s3fs 처럼 opensource 이며, AWS에서 정식 지원하는 패키지는 아니다.
github : https://github.com/kahing/goofys
[출처 : https://github.com/kahing/goofys ]
prerequisite
1. 서버에서 s3fs를 통해 mount하려면, S3를 이용하기 위한 access/secret key가 필요하다.
먼저 s3 이용을 위한 user를 생성해보자.
security credentials 메뉴로 이동.
User 메뉴에서 s3_user를 생성
user를 생성하면 access key와 secret key가 나오니 이걸 잘 기록해두자.
root 계정의 access key를 이용할수도 있지만, 털리면 위험하니 따로 생성해서 이용하는게 좋다.
해당 user의 permissions 탭에서 policy를 적용한다.
S3에 access 할수 있는 권한을 주자.
Attach Policy 클릭
적용할 policy를 검색할 수 있는데 Filter에 S3 입력하면 아래와 같이 AmazonS3FullAccess 라는 policy를 찾을 수 있다. 이걸 선택하여 적용하자.
적용 완료 ㅋ
2. S3로 연결할 bucket을 생성한다.
테스트로 bucket 이름을 goofys-test-01 로 생성했다.
2. golang 설치
goofys 는 go로 개발하였다. go부터 설치하자. ( CentOS 기준 )
root@~~# yum install golang fuse
3. go 환경 설정
go를 사용하기 위한 환경 설정 부터 하자.
먼저 workspace 부터 만들자.
root@~~# mkdir -p /usr/local/golang
환경 변수도 설정한다.
~/.bash_profile에 설정하였다.
... (중략)
export GOROOT=/usr/lib/golang
export GOBIN=$GOROOT/bin
export GOPATH=/usr/local/golang
export PATH=$PATH:$GOROOT/bin
환경 변수 적용.
root@~~# source .bash_profile
잘 됐는지 확인해보자.
root@~~# go env
GOARCH="amd64"
GOBIN="/usr/lib/golang/bin"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/usr/local/golang"
GORACE=""
GOROOT="/usr/lib/golang"
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT=""
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
Installation
1. goofys 설치
root@~~# go get github.com/kahing/goofys
root@~~# go install github.com/kahing/goofys
2. s3 access key 설정
key 설정 파일의 default path는 ~/.aws/credentials 이다.
key는 위에서 열심히 설정한 s3_user의 key를 이용하자.
root@~~# mkdir -p ~/.aws
root@~~# vim ~/.aws/credentials
[default]
aws_access_key_id = XXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3. mount 실행
먼저 mount 할 디렉토리 생성한다.
root@~~# mkdir -p /goofys
goofys 실행
옵션으로 s3 bucket 이름과 mount 디렉토리를 지정하면 끝.
root@~~# goofys goofys-test-01 /goofys
확인해 보자
root@~~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.8G 1.6G 6.1G 21% /
devtmpfs 490M 60K 490M 1% /dev
tmpfs 498M 0 498M 0% /dev/shm
goofys-test-01 1.0P 0 1.0P 0% /goofys
'IT > AWS' 카테고리의 다른 글
AWS CodeCommit 어렵지 않아요 (3) | 2016.05.13 |
---|---|
AWS Storage Gateway 설치 (0) | 2016.04.28 |
AWS Storage Gateway (0) | 2016.04.27 |
s3fs를 이용해 AWS S3 mount 해서 사용하기 (5) | 2016.04.26 |
AWS 보안강화 - 콘솔 접속시 OTP 적용하기 : AWS MFA (0) | 2015.07.01 |