본문 바로가기
Computer/Server

[AWS] API 를 이용한 S3 관리 페이지 구축

by 생각하는달팽이 2016. 2. 19.

안녕하세요?


AWS API 를 활용한 S3 관리 페이지 구축을 해보겠습니다.


순서는 다음과 같습니다.


구축 환경은


HHVM 3.11 버전 위에서 PHP 를 이용해 작성하였습니다.

Credential 을 만드셔야하는데요. 이부분은 


0. API 키 발급



반창코 있는부분은 사용자의 아이디입니다.

사용자 아이디를 클릭해보시면요 Secruity Credentials 가 보이실 겁니다.

해당 부분으로 가셔서 API 키와 비밀키를 발급받아주세요.

본 튜토리얼은 _IAM 을 이용하지 않는 방식입니다.


1. SDK 설치

SDK 설치 및 기본 설정에 대해서는 아래 링크를 활용해주세요.


http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/installation.html


2. S3 의 디렉토리 리스트 받아오기.

SDK 설치후 도큐멘트를 따라 진행했으나 진행을 더이상 하지 못할때가 있으실 겁니다.


아래 s3 인스턴스를 생성해줍니다.


$s3 = S3Client::factory([

'version'=>'latest',

'region' => 'ap-northeast-1',

'credentials' => [

'key'=>'',

'secret'=>'',

]

));


* region 의 경우 예를 들어서 적어놓은것이라서요. region 에 맞게 적어주시면됩니다.

이런식으로 주소창에 명시되어 있습니다. Global 아닙니다 ... 하하 ;;;


아래는 중요한 도큐먼트 링크입니다 ~

http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.S3.S3Client.html


위의 도큐먼트를 참고하여 함수를 작성합니다.

Bucket 은 해당 Bucket 명이고

Prefix 의 경우 폴더의 이름이라고 생각하시면됩니다.


$result = $s3->listObjects(array(

'Bucket'=>$bucket,

'Prefix'=>$prefix,

));



그렇게 해서 작업한 결과물입니다 :)




3. S3 의 디렉토리의 파일 화면에 출력해주기.




파일 리스트의 경우도 listObjects 에서 받아온 Content 를 가공하여 사용합니다.

리턴값에는 LastModified , Key, Size 값이 들어옵니다.

파일네임은 따로 존재하지않아. Key 값을 explode() 함수를 이용 '/' 로 분해하여. 마지막 인덱스의 녀석을 데려옵니다.

./ 의 경우 폴더의 현재를 나타나기위해 넣어두었습니다.



4. S3 의 디렉토리의 파일 다운로드 받기


파일을 다운로드 하는방식은 href 로 그냥 key 값을 aws.s3 의 url 뒤에 붙여줌으로써 처리하였습니다.

간단하게 ^.^;



5. S3 의 디렉토리에 파일 업로드 하기.



원하는 디렉토리로 이동하신다음 파일을 선택한 후 업로드 버튼을 누르시면 업로드가 됩니다.


$s3->upload(버킷명,s3내 업로드 경로,fopen($_FILES['assetFile']['tmp_name'],'rb'),'public-read')


위의 API 를 호출하여 업로드를 진행하였습니다.

이유는 현재 관리툴을 이용하여 리소스 관리를 하지 않을 예정이기 때문입니다.

리소스는 자동화 툴을 따로 제작하여 진행할 예정이며. 위의 관리툴은 테스트 혹은 부득이하게 일부 파일들만 교체할 경우 사용할 예정입니다.



6. S3 데이터 파일 삭제



짧은 경험을 공유하게 됐습니다.




사용한 Library 는 다음과 같습니다.



Front : Bootstrap. jquery-confirm, 

Backend : 자체 제작 MVC 프레임웍, aws-api-php ,


완성화면 :)




궁금하신 사항은 댓글을 달아주시거나 아래 메일로 연락주세요.

gipyeong.lee@madorca.com

감사합니다.

반응형

'Computer > Server' 카테고리의 다른 글

[AWS] ELK 스택 설치  (0) 2016.03.10
[SVN] Pre-commit hook  (0) 2016.02.23
[Cron] 반복작업  (0) 2016.01.15
[SQL] Index 체크 및 추가  (0) 2016.01.08
[AWS] MySQL Timezone Setup  (0) 2015.12.23