-
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 에서 확인 해 보면 된다.
근데 이거 계속 글자 바탕 이렇게 되는 거 어떻게 고치지?