-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[하윤지] 4, 5주차 과제 - complete #32
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
## 📖4주차 기본 과제 | ||
1. <code>http://www.도메인이름</code> 으로 접근시 사용자용 nginx 서버 접속 | ||
2. <code>http://dev.도메인이름</code> 으로 접근시 관리자용 nginx 서버 접속 | ||
|
||
## 🤓해결 과정 | ||
1. <code>dev.도메인이름</code> 로 A유형 레코드 생성 | ||
![image](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/67634926/ed8a77be-3848-4425-aa31-a6c96e090501) | ||
2. 로드밸런서 리스너 규칙 수정 | ||
<code>dev.도메인이름</code> 를 호스트헤더로 하고 web-dev로 전달하는 2순위 규칙 추가 | ||
![image](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/67634926/e146aca6-f30b-4b9c-8b0d-491ae3a0d888) | ||
|
||
## ✌️과제 인증 | ||
https://drive.google.com/file/d/1tqpxE1VgiuDXDRUeasbTvpfGmYKrQIMh/view?usp=sharing | ||
|
||
<br> <br/> | ||
## 📖4주차 심화 과제 | ||
1. ACM 인증서 발급 | ||
2. 로드 밸런서 리스너 편집 및 추가를 통해 http접속 시 https로 리다이렉트 적용 | ||
|
||
## 🤓해결 과정 | ||
1. ACM 인증서 요청 | ||
이때, 서브 도메인까지 전부 적용하기 위해 <code>도메인이름</code> 과 <code>*.도메인이름</code> 모두 등록하기 | ||
![image](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/67634926/da8da0da-f332-4bd2-a05a-793cdc0846c8) | ||
|
||
2. 생성한 인증서 클릭 -> Route53에서 레코드 생성 버튼 클릭 | ||
3. EC2, 로드밸런서 인바운드 규칙 수정 - HTTPS 443 허용 | ||
![image](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/67634926/2e6b51a2-bad9-4889-8ee7-92fde7d53d4e) | ||
![image](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/67634926/9d20ea67-8510-486e-82d1-a9c5c28564ad) | ||
4. 리스너 규칙 편집 | ||
기존에 HTTP로 되어있던걸 HTTPS로 변경 (대상 그룹으로 전달 유지) | ||
6. 리스너 규칙 추가 | ||
HTTP를 HTTPS로 연결하도록 'URL로 리다이렉션' 등록 | ||
![image](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/67634926/d749b63e-3116-4527-80af-980755ec31a5) | ||
|
||
## ✌️과제 인증 | ||
https://drive.google.com/file/d/1lqdPPQWXkG8bn_cXgfI8LcKdKHSTq8De/view?usp=sharing | ||
Comment on lines
+35
to
+36
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 너무 멋지고...그저 멋질 뿐...수고했어요🫶 |
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
package ServerStudy5Cloud.ServerStudy5Cloud.Controller; | ||
|
||
import com.amazonaws.services.s3.AmazonS3; | ||
import com.amazonaws.services.s3.model.CannedAccessControlList; | ||
import com.amazonaws.services.s3.model.S3ObjectSummary; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.beans.factory.annotation.Value; | ||
import org.springframework.stereotype.Controller; | ||
import org.springframework.ui.Model; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestParam; | ||
import org.springframework.web.multipart.MultipartFile; | ||
|
||
import java.io.IOException; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
|
||
@Controller | ||
@RequiredArgsConstructor | ||
public class S3Controller { | ||
|
||
private final AmazonS3 amazonS3; | ||
|
||
@Value("${cloud.aws.s3.bucket}") | ||
private String bucketName; | ||
|
||
@GetMapping("/") | ||
public String listFiles(Model model) { | ||
//getUrl로 객체 URL 가져온 후, List<String>에 넣어 index.html에 반환하기 | ||
List<String> imageUrls = new ArrayList<>(); | ||
|
||
//S3 버킷 내 모든 객체 리스트 가져오기 | ||
List<S3ObjectSummary> objectSummaries = amazonS3.listObjects(bucketName).getObjectSummaries(); | ||
|
||
//각 객체의 URL을 가져와서 리스트에 추가하기 | ||
for(S3ObjectSummary ob : objectSummaries){ //반복문을 돌면서 리스트의 모든 객체에 접근 | ||
String objectKey = ob.getKey(); //객체의 key값 가져오기 | ||
String objectUrl = amazonS3.getUrl(bucketName, objectKey).toString(); //key값으로 url가져오기 | ||
imageUrls.add(objectUrl); //list에 저장 | ||
} | ||
|
||
//모델에 객체 URL 리스트 추가 | ||
//index.html은 ${fileUrls}를 이용하여 객체에 접근 | ||
model.addAttribute("fileUrls", imageUrls); | ||
|
||
return "index"; | ||
} | ||
|
||
@PostMapping("/upload") | ||
public String uploadFile(@RequestParam("file") MultipartFile file) { | ||
|
||
//putObject와 setObjectAcl로 이미지 업로드하고 ACL 퍼블릭으로 만들기 | ||
|
||
try{ | ||
//s3에 파일 업로드 | ||
amazonS3.putObject(bucketName, file.getOriginalFilename(), file.getInputStream(), null); | ||
|
||
//업로드한 객체에 대해 ACL 설정 | ||
amazonS3.setObjectAcl(bucketName, file.getOriginalFilename(), CannedAccessControlList.PublicRead); | ||
|
||
} catch (IOException e) { | ||
e.printStackTrace(); | ||
} | ||
|
||
return "redirect:/"; | ||
|
||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
## 📖5주차 기본 과제 | ||
1. S3 bucket에 사진 업로드 controller 작성 | ||
2. S3 bucket 사진 리스트 가져오기 controller 작성 | ||
|
||
## 🤓해결 과정 | ||
### 1️⃣ 사진 리스트 가져오기 | ||
1. <code> amazonS3.listObjects(bucketName).getObjectSummaries() </code> 를 이용해 버킷 내 모든 객체 리스트 가져오기 | ||
2. 반복문으로 각 객체의 url에 접근 | ||
3. 객체의 key값을 이용해 <code>amazonS3.getUrl(bucketName, objectKey).toString()</code> 함수로 객체의 url 가져오기 | ||
4. 리스트에 저장 | ||
5. thymeleaf 적용을 위해 모델에 객체 url 리스트 추가 | ||
|
||
### 2️⃣ 사진 업로드하기 | ||
1. <code>amazonS3.putObject(bucketName, file.getOriginalFilename(), file.getInputStream(), null);</code> 로 S3에 파일 업로드 | ||
2. <code>amazonS3.setObjectAcl(bucketName, file.getOriginalFilename(), CannedAccessControlList.PublicRead);</code>로 ACL객체 권한을 Public read로 설정 | ||
|
||
|
||
## ✌️과제 인증 | ||
https://drive.google.com/file/d/1ZP0zgfgus9n5NOU51p686daHZSkrR84E/view?usp=sharing | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 사진 너무 귀엽자나. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 피드백 남겨주셔서 감사합니다>< 늘 알찬 강의 준비해오는 혜승이도 짱짱 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
심화과제도 해온 당신...🫰 정말 멋져.