AWS S3 인스턴스 생성 및 IAM 그리고 Access/Secrete Key 생성

2024. 11. 8. 10:32Spring Boot

AWS S3 인스턴스 생성

 

1. AWS에 로그인 후, Search 창에 S3를 입력후 해당 페이지로 이동합니다.

 

2. 사이드 메뉴바에서 Buckets를 선택합니다. 그리고 Create bucket 버튼을 선택합니다.

 

3. 버킷 이름을 작성합니다.

 

Amazon S3의 버킷 이름 규칙은 일반 목적 버킷과 디렉터리 버킷에 대해 각각 적용됩니다.


일반 목적 버킷 이름 규칙

  1. 길이: 3~63자.
  2. 문자 사용: 소문자, 숫자, 점(.), 하이픈(-)만 사용 가능.
  3. 시작과 끝: 문자나 숫자로 시작하고 끝나야 함.
  4. 연속 점 금지: 두 개의 점이 연속으로 올 수 없음.
  5. IP 형식 금지: IP 주소 형식(예: 192.168.5.4)으로 지정 불가.
  6. 특정 접두사 및 접미사 금지:
    • 접두사: xn--, sthree-, sthree-configurator, amzn-s3-demo-
    • 접미사: -s3alias, --ol-s3, .mrap, --x-s3
  7. 고유성: AWS의 모든 계정 및 리전에서 고유해야 하며, 삭제 후에만 다른 계정이 사용 가능.
  8. Transfer Acceleration 제한: Transfer Acceleration에 사용될 경우 점(.) 포함 금지.
  9. HTTPS 가상 호스트 스타일 제한: 점(.)을 포함한 버킷은 HTTPS를 사용하는 가상 호스트 스타일 주소 지정에서 제한이 있으며, 인증서 검증을 자체적으로 수행해야 함. 이는 정적 웹사이트 호스팅에는 영향을 미치지 않음.
  10. 특별 주의: 2018년 3월 1일 이전에는 US East (N. Virginia) 리전에서 길이가 255자까지 허용되었고 대문자 및 밑줄도 포함 가능했으나, 현재는 다른 리전과 동일한 규칙을 적용.

디렉터리 버킷 이름 규칙

  1. 고유성: 선택한 AWS 리전 및 가용 영역 내에서 고유해야 함.
  2. 길이: 3~63자(접미사 포함).
  3. 문자 사용: 소문자, 숫자, 하이픈(-)만 사용 가능.
  4. 시작과 끝: 문자나 숫자로 시작하고 끝나야 함.
  5. 특정 접두사 및 접미사 금지:
    • 접두사: xn--, sthree-, sthree-configurator, amzn-s3-demo-
    • 접미사: -s3alias, --ol-s3, .mrap
  6. 필수 접미사: --azid--x-s3 접미사를 포함해야 함.
  7. 콘솔과 API 사용 차이: 콘솔을 통해 생성 시 가용 영역 ID를 포함한 접미사가 자동으로 추가되며, API 사용 시 전체 접미사를 직접 제공해야 함.

이 규칙을 통해 S3 버킷의 고유성과 보안을 보장하며, 특정 기능 및 사용 사례에 맞는 네이밍을 지원합니다.


4. 다음과 같이 Block all public access 체크 박스를 해제합니다.

 

5. 다음과 같이 설정을 유지합니다.

 

6. 다음과 같이 체크박스를 설정합니다.

 

7. 하단의 Create bucket 버튼을 선택합니다.

 

8. 생성된 버킷을 선택합니다.

 

9. Permissions 탭의 Bucket policy 섹션의 Edit 버튼을 선택합니다.

 

10. 다음과 같이 Bucket ARN을 복사한 후, Policy generator 버튼을 선택합니다.

 

11. 다음과 같이 설정합니다.

10 단계에서 복사한 Bucket ARN를 Amazon Resource Name(ARN) 입력창에 붙여 넣습니다

단, Actions는 * 대신 s3:GetObject를 선택합니다

그리고 Add Statement 버튼을 선택합니다

 

12. Generate Policy 버튼을 선택합니다

 

13. JSON 값을 복사합니다.

 

14. 다음과 같이 복사한 JSON값을 Policy 창에 붙여 넣습니다.

 

15. Save changes 버튼을 선택해서 저장합니다.

 

16. CORS 정책도 추가합니다.

IAM 계정 생성

※ Spring Boot 기반 웹 어플리케이션이 S3의 특정 버킷과 작업을 수행하려면,

이 어플리케이션에게 특정 버킷을 사용할 수 있는 Credential을 부여해야 합니다.

(IAM 계정을 통해 이 Credential[access/secrete key]을 생성합니다)

 

1. Search 창에서 IAM을 검색한 후, IAM 설정 페이지로 이동합니다.

다음과 같이  사이드 메뉴에서 Users을 선택한 후, Create user 버튼을 선택합니다.

 

2. User name을 작성한 후, Next 버튼을 선택합니다.

 

3. 다음과 같이 Attach policies directly 라디오 버튼을 선택합니다. 그리고 Permissions policies에서 AmazonS3FullAccess 를 검색한 후, 검색 리스트에서 AmazonS3FullAccess의 체크 박스를 선택합니다.

마지막으로 Next 버튼을 선택합니다.

 

4. 다음과 같이 User를 최종 생성하기 전, 설정 정보들을  확인한 후, Create user 버튼을 선택합니다.

 

5. 최종적으로 User가 생성되었음을 확인할 수 있습니다.

Users 리스트에서 해당 user를 선택합니다.

 

6. 

 

7. Security credentials 탭을 선택한 후, Create access key를 선택합니다.

 

8. 다음과 같이 Use case에서 Command Line interface 라디오 버튼을 선택합니다.

 

9.  다음과 같이 하단의 체크 박스를 선택하고 Next 버튼을 선택합니다.

 

10. Description tag value의 입력창에 원하는 네임을 입력한 후, Create access key를 생성합니다.

 

11. Access Key가 성공적으로 생성되었음을 다음과 같이 확인할 수 있습니다.

Download .csv file 버튼을 선택해서 access/secrete key가 동봉되어 있는 파일을 다운로드 받습니다.

 

 

Spring Boot Web Application의 application.yml 파일에 버킷 이름과 access/secrete key 설정

cloud:
  aws:
    s3:
      bucket: [버킷 이름]
      stack.auto: false
    region:
      static: ap-northeast-2
    credentials:
      accessKey: [액세스 키]
      secretKey: [시크릿 키]

 

 

Postman 테스트

1. Spring Boot Web Application에게 다음과 같이 파일을 업로드하기 위해 Postman을 설정합니다.

 

 

2. S3 서비스를 사용하는 Spring Boot Web Application으로부터 다음과 같이 응답을 받았습니다.

S

3. 응답으로 전달받은 url을 웹 브라우저에 사용해 다음과 같이 해당 파일을 S3의 버킷으로부터 직접 다운받을 수 있습니다.

'Spring Boot' 카테고리의 다른 글

AWS EC2 Network 설정  (0) 2024.11.06
GraalVM  (0) 2024.10.18
Spring Native  (0) 2024.10.18
Activemq artemis 관련  (0) 2024.02.04
Spring Boot Jar Build Option  (0) 2024.02.04