Amazon S3 파일 업로드 (보안)

Home > Amazon S3 > 예제 02

설명

Amazon S3로 파일을 업로드하는 예제이다. S3로 파일을 업로드하려면, '리전/버킷/엑세스키/비밀엑세스키' 정보를 미리 알고 있어야 한다. 그러나 '액세스키/비밀엑세스키'와 같은 정보는 외부에 노출이 되면 안되는 정보이므로 공개된 곳에서는 사용하는 것은 위험하다. AWS의 자격증명 정보를 노출하지 않고 업로드하기 위해서는 백엔드에서 사전에 서명된 주소를 생성하고 그 주소를 사용하여 파일을 업로드하는 방법이 있다. 서명된 주소는 일정 시간 동안만 유효하며, 업로드를 위한 권한이 내포되어 있다. 다음은 해당 정보를 설정하는 코드를 보여준다.

// AWSS3 방식으로 설정한다.			
dx.setUploadMode("AWSS3");
// 설정 객체의 type 속성을 "SECRET"으로 설정하거나 생략한다.
dx.setAWSS3UploadConfig({
    //type: "SECRET",
    initURL: dx5.canonicalize("/awss3-upload-init"),
    signedURL: dx5.canonicalize("/awss3-upload-geturl"),
    completeURL: dx5.canonicalize("/awss3-upload-complete")
});

세 가지 백엔드 주소는 파일 업로드를 하는 각 단계마다 필요로 하는 서명된 주소를 생성하여 반환하는 역할을 담당한다. 백엔드에서 서명된 주소를 반환하기 위해서는 AWS에서 제공하는 SDK를 사용해야 한다.

implementation 'software.amazon.awssdk:s3:2.x.x'

AWS SDK를 사용하여 서명된 주소를 생성하는 세부 내용은 SampleController과 AWSS3MultipartUploadHelper 클래스를 참고하도록 한다.

예제

업로드 결과