ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • aws s3 파일 업로드
    카테고리 없음 2018. 6. 25. 19:35

    s3 파일 업로드 구현 방법


    spring 으로 구현 해 보았다.


    일단, aws console 로 접속한다.


    iam 서비스로 들어간다.


    * IAM 이란?? 
    Identity And Access Management 의 약자로 자격 증명 매니지먼트???? 라고 한단다.

    AWS 에서 사용하는 모든 권한 제어는 이곳에서 한다.





    그 후에 사용자를 추가해야 하지만, 귀찬아서 나는 그냥 root 계정에다 생성하였다.



    S3 버킷을 사용하기위해 S3 Full Access 권한을 부여한다.

    -> 권한명들이 모두 명시적으로 기재 되어있어, 다른 권한들도 쉽게 찾을 수 있다.



    [액세스 키 만들기] 를 누르면, 팝업창이 뜨면서

    Access key 와 secret key 가 생성된다.

    시크릿 키는 이번밖에 볼 수 없으니 잘 적어놓자.



    s3 서비스로 들어간다.


    * s3 서비스란?

    클라우드 스토리지로 웹 정적 호스팅, 파일관리 등(?) 을 할 수 있는 가용성 99.9 가 8개인 서비스이다.




    [버킷 만들기] 버튼을 클릭하면

    dns 형식으로 버킷이름을 입력하고 ( 굳이 dns 형식으로 안해도 되는듯?? 폴더 디스크 이름이라고 생각하면 된다. )

    다음단계는 기본값으로 입력하고 완료를 하면 위 화면처럼 버킷 이름이 생성이 된다.


    그럼 이제 코딩을 시작하자.


    여기서는 가장 명시적인 java ( spring ) 으로 진행하겠다. ( node js, spring, php 등 다른 언어들도 형식은 모두 비슷하다. )


    /**
    * Aws 관련 서비스
    */
    @Service
    public class AwsServiceImpl implements AwsService {

    private static final String BUCKET_NAME = "생성 한 버킷 이름";
    private static final String ACCESS_KEY = "IAM 에서 생성 한 액세스 키";
    private static final String SECRET_KEY = "IAM 에서 생성 한 시크릿 키";

    private AmazonS3 amazonS3; // 인스턴스를 초기화한다.

    public AwsServiceImpl() { // Constructor

    // 인증 객체를 생성한다.
    AWSCredentials awsCredentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);

    // 인스턴스에 버킷의 정보를들 설정한다.
    // Region 의 경우 버킷의 url 에서 확인 할 수 있다.
    // ex) https://s3.console.aws.amazon.com/s3/buckets/static.preeplus.com/?region=ap-northeast-2&tab=overview
    amazonS3 = AmazonS3ClientBuilder
    .standard()
    .withRegion(Regions.AP_NORTHEAST_2)
    .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
    .build();
    }

    @Override
    public void s3FileUpload(File file) {

    // 파일 업로드를 위한 request 객체를 생성 하였다.
    PutObjectRequest putObjectRequest =

    // request 객체 안에 BUCKET_NAME + "생성 될 폴더 이름", 파일 원본이름, File 바이너리 데이터 를 설정하였다.ㅏ
    new PutObjectRequest(BUCKET_NAME + "/test", file.getName(), file);

    // Access List 를 설정 하는 부분이다. 공개 조회가 가능 하도록 public Read 로 설정 하였다.
    putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead);

    // 실제로 업로드 할 액션이다.
    amazonS3.putObject(putObjectRequest);
    }
    }
    @Test
    public void s3Test() {
    File file = new File("C:\\otfence-application\\upload\\1525827040853_Desert.jpg");
    awsService.s3FileUpload(file);
    }

    모두 설정 후에 의존성을 추가하고 위 코드를 돌리게 되면


    이렇게 성공적으로 올라 간 것을 확인 할 수 있다.

    의존성은

    node js 는 npm 에서..

    php 는 패키지스트에서

    java 는 maven repository 에서 확인 해 보면 된다.


    근데 이거 계속 글자 바탕 이렇게 되는 거 어떻게 고치지?

    댓글

Designed by Tistory.