본문 바로가기

Others/인프라

[AWS] AWS S3

AWS S3

AWS의 파일서버 서비스인 S3(Simple Storage Serivce)
파일을 서비스화 한것


장점


1. 내구성

파일을 저장 했을 때 유실 가능성 거의 없다.


2. 저렴한 비용

사용하는 만큼만! 비용을 내면 되기 때문에


3. 응시가능 (가용성)

S3 저장된 파일을 서비스 제공할 때, 거의 문제 없이 서비스 가능하다


4. 보안

SSL을 통해 데이터 전송 : 웹브라우저와 AWSS3와 데이터(파일)를 주고받을 때 S3라는 암호화 된 방식이기 때문에 안전


5. 확장 가능


6. 이벤트 알림 전송

S3로 파일이 업로드 되었을때, 그 사실을 다른 서비스에게 알려서 다른 서비스가 시작(동작, 트리거)할 수 있도록 할 수 있다.


7. 고성능

데이터를 빠르게 전송할 수 있다.


사용1. 콘텐츠를 저장하고 배포

사용2. 빅 데이터 분석

사용3. 훌륭한 백업장치




  • 기본 조작 방법


[SE 관리 콘솔에서 조작 방법 - 일반적으로 사용되지 않는 방법]


1. 버킷만들기

버킷? (비유하자면 파일이 저장되는 하드디스크 등의) 저장장치

버킷이름은 전세계에서 중복되지 않는 이름을 사용하게 된다.


2. 버킷에 파일 올리기 (Upload)

올린 파일은 Properties를 통해 해당 파일로 접근할 수 있는 Link(파란아이콘:서비스가능한상태를의미함)가 만들어진다.




파일 전송 (파일 가져오기)


<?php

require 'vendor/autoload.php'; // aws sdk를 include해오는 composer의 기능

$param = Array('region'=>'ap-northeast-2', 'version'=>'year-month-day');


$s3 = new Aws\S3\S3Client($param); // s3 클라이언트라는 클래스를 객채화 시킴.


$s3->putObject(Array( //putObject라는 메소드를 통해 

    'ACL'=>'public-read',

    'SourceFile'=>'sample.txt', // sample.txt 파일을 불러옴

    'Bucket'=>'codingeverybody2',

    'Key'=>'sample.txt'

));

?>


명령어$ php 위에서 작성한 파일의 이름.php : 저장소(S3)로 업로드 하는 명령어




업로드 되어 있는 현재 파일의 목록 가져오기 : listObjects 메소드


<?php

require 'vendor/autoload.php';

$param = Array('region'=>'ap-northeast-2', 'version'=>'2006-03-01');

$s3 = new Aws\S3\S3Client($param);


$list = $s3->listObjects(Array('Bucket'=>'버킷이름'));

$listArray = $list->toArray(); //결과 객체($list)를 배열로 만들어주는 것


foreach($listArray['Contents'] as $item){

    print($item['Key']."\n");

}

?>


이미 업로드 되는 파일을 다운로드 : getObjects 메소드


<?php

require 'vendor/autoload.php';

$param = Array('region'=>'ap-northeast-2', 'version'=>'2006-03-01');

$s3 = new Aws\S3\S3Client($param);

$s3->getObject(Array(

    'Bucket'=>'버킷명', // 어디서 가져올건지

    'Key'=>'sample.txt', // 다운로드할 파일

    'SaveAs'=>fopen('sample_saved.txt', 'w') // 저장위치(php 파일 오픈 명령어:fopen) / 'w' : 파일 쓰기 권한을 주기 위함 / 'sample_saved.txt' 다운로드한 파일명

));