S3 콘솔 이동

우측 상단 리전 메뉴 서울 선택
버킷 만들기 클릭

버킷 이름 작성(AWS 전체 내에서 공유해야함 - 이제까지 다른 이름들도 마찬가지)

퍼블릭 액세스 차단 해제
익명의 사용자도 S3에서 객체를 내려받을 수 있도록 하기 위한 절차.

버킷 만들기 클릭

버킷 생성 완료

아직 사용자들이 해당 버킷에 접근이 불가능한 상태.

권한 -> 버킷 정책 -> 편집
새 문 추가 클릭)
작업 추가 화면이 나옴.서비스 선택 검색 창에 s3 입력하여, S3 클릭
GetObject 입력후 아래 액세스 수준 - 읽기 에서 GetObject 선택후 리소스 추가의 추가 클릭
리소스 유형에 object를 선택.
object로 선택하면 아래 리소스 ARN이 arn:aws:s3:::{BucketName}/{ObjectName} 으로 변경되는데,BucketName : 접근 허용 버킷ObjectName : 접근 허용할 특정 객체(* 를 쓰면 버킷의 모든 객체 허용)여기서는 * 로 작성

리소스 추가 버튼을 클릭하면 JSON 에 Resource 부분 이 추가된걸 확인
Principal.* 로 변경.
변경사항 저장 으로 마무리
아이디 같은 역할, 비밀 액세스키는 비밀번호 같은 역할을 함.
사용자 메뉴 -> 사용자 생성 클릭
사용자 이름 작성(각 사용자 구분 가능한 이름으로)
s3full 검색 -> 체크박스 체크 -> 다음 클릭
사용자 생성 클릭
사용자 메뉴로 들어가서 사용자 이름 클릭
보안자격 증명 탭 -> 액세스키 만들기 클릭(우측, 중앙 중 아무거나 동일)
액세스키 모범 사례 및 대안 에서 우리는 AWS EC2에서 실행되는 서비스가 접근할 예정이므로, AWS 컴퓨팅 서비스에서 실행되는 애플리케이션 선택 후 다음 클릭
설명 태그 설정 -> 설정 태그 값 은 비워두고 -> 엑세스 키 만들기 클릭
액세스 키가 보임.
비밀 액세스키의 경우 위에 알림이 뜨는것과 같이 해당 페이지에서 벗어나면 다시는 볼 수 없어서 새로 액세스키를 만들어야 하니 복사해 놓아야 함
$ cd ~
$ git clone https://github.com/JSCODE-BOOK/aws-s3-springboot.git
$ cd aws-s3-springboot/src/main/resources
$ vi application.yml
server:
port: 80
spring:
datasource:
url: jdbc:mysql://_________:3306/<DB이름> # RDS 인스턴스 엔드포인트 / DB이름
username: ______ # (RDS 인스턴스 생성 시 셋팅한) RDS 마스터 사용자 이름
password: ______ # (RDS 인스턴스 생성 시 셋팅한) RDS 마스터 비밀번호
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: create
show-sql: true
cloud:
aws:
credentials:
access-key: _________ # IAM 통해서 발급받은 액세스 키
secret-key: _________ # IAM 통해서 발급받은 비밀 액세스 키
s3:
bucket: _________ # 생성한 버킷명
region:
static: ap-northeast-2
$ cd ~/aws-s3-springboot
$ ./gradlew clean build -x test # 스프링 부트 프로젝트 빌드
$ cd build/libs
$ sudo nohup java -jar aws-s3-springboot-0.0.1-SNAPSHOT.jar & # JAR파일 실행
https://api.<도메인주소>/health 입력

PostMan 을 사용할 겁니다.

전송시 사진과 같은 결과가 반환됨.

S3 메뉴에서 버킷 클릭시 사진이 업로드 된 걸 확인 가능.

게시글 조회를 위한 GET 요청시 정상 반환 확인
