sdk (2)

💻 Programming/Java

AWS S3 Security Credentials 만들기

AWS 자격 증명 만들기



  Security Credentials 설정하기

AWS SDK를 이용하여 파일을 업로드 할 때 업로드 권한을 얻기 위해 Security Credentials을 만들어야 합니다.

전체적인 흐름은 사용자를 생성하고, 권한을 설정하고 Access key와  Secret key를 발급받도록 되어있습니다.



 1  내 보안 자격 증명(My Security Credentials) 을 눌러 Security Credentials 설정하는 부분으로 이동합니다.




 2  IAM 사용자 시작하기(Get Started with IAM Users) 버튼을 눌러 다음으로 이동합니다. 



 3  사용자 추가(Add User) 버튼을 클릭해서 유저를 생성합니다.



 4  사용자 이름(User name)을 지정하고 프로그래밍 방식 액세스(Programmatic access) 를 선택한 뒤 다음 버튼을 누르기 전에 아래쪽으로 화면을 스크롤하면 권한경계설정 항목이 나옵니다. 여기서 권한 경계없이 생성을 선택하고 다음 버튼을 클릭합니다.




 5  기존 정책 직접 연결을 선택하고 아래와 같이 S3라고 검색하면 관련 정책 목록이 출력되는데 여기서 우리는 AmazonS3FullAccess를 선택합니다. 그리고 다음으로 넘어갑니다.



 6  검토(Review)를 통해 올바른 설정을 했는지 확인하고 사용자 만들기(Create user)로 생성합니다.



 7  생성된 사용자의 액세스 키 ID(Access key ID)와 비밀 액세스 키(Secret access key)를 확인 할 수 있습니다. 비밀액세스 키는 "표시"를 클릭하면 보여집니다.



AWS S3에 파일을 업로드 할 때 여기에 보여지는 액세스 키 ID와 비밀 액세스 키를 사용해야합니다. 이렇게 생성된 사용자는 언제든지 "내 보안 자격 증명" 메뉴를 통해 확인이 가능합니다.



💻 Programming/Java

AWS S3 버킷에 파일 업로드하기 (자바)


  AWS SDK Java jar 파일 다운 받기

AWS-SDK for Java - https://aws.amazon.com/ko/sdk-for-java/

위 링크를 따라 들어가면 우측 상단에 SDK다운로드 또는 이클립스용 툴킷을 다운로드 받을 수 있는 버튼이 있습니다. 저는 메이븐을 사용할건데 직접 다운로드 받거나 툴킷을 써보고 싶으신 분들은 위 링크를 이용해주세요.


maven을 이용한다면 

1
2
3
4
5
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk</artifactId>
    <version>1.11.386</version>
</dependency>


이 글이 포스팅 되는 시점에 최신버전은 1.11.388입니다. minor 버전이 하루가 다르게 증가하고있어요 ㅎ



  AWS s3 파일 업로드 하기(AWS S3 Upload for java )

실제로 S3에 업로드를 하기 위해서는 S3에 권한이 필요합니다. 이 권한을 얻기 위해서는 ACCESS_KEY, SECRET_KEY 를 생성해야 하는데 이는 아래 링크를 참고해주세요.

# Access Key, Secret Key 생성방법 - http://keichee.tistory.com/298



사용방법은 간단합니다.

아래처럼 파일을 전달받아 아마존 S3에 accesskey와  secretkey를 이용하여 권한을 얻고 파일을 업로드 하면됩니다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class AWSService {
    private static final String BUCKET_NAME = "bucket_name";
    private static final String ACCESS_KEY = "ACCESS_KEY";
    private static final String SECRET_KEY = "SECRET_KEY";
    private AmazonS3 amazonS3;
 
    public AWSService() {
        AWSCredentials awsCredentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
        amazonS3 = new AmazonS3Client(awsCredentials);
    }
 
    public void uploadFile(File file) {
        if (amazonS3 != null) {
            try {
                PutObjectRequest putObjectRequest =
                        new PutObjectRequest(BUCKET_NAME + "/sub_dir_name"/*sub directory*/, file.getName(), file);
                putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead); // file permission
                amazonS3.putObject(putObjectRequest); // upload file
 
            } catch (AmazonServiceException ase) {
                ase.printStackTrace();
            } finally {
                amazonS3 = null;
            }
        }
    }
}