https://velog.io/@modsiw/Spring-CrossOrigin-Annotation-%EC%A0%95%EB%A6%AC
https://devlog-wjdrbs96.tistory.com/429
https://miinsun.tistory.com/229
https://velog.io/@jupiter-j/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-CORS%EC%97%90%EB%9F%AC
우선 우리 팀은 Spring Security를 사용하지 않았기 때문에
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry corsRegistry) {
corsRegistry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST", "PUT", "DELETE");
}
}
@CrossOrigin 애너테이션 추가이 2 가지 방법을 적용하니까, CORS 문제가 해결되었다.
위의 WebConfig는 모든 경우에 대해서 다 허용을 해버려서, 제대로된 배포에서는 문제가 되겠지만 우선은 다 허용을 해두었다.
다음 메인 플젝에서는 WebConfig를 약간 수정해야 할 것 같다.
S3에는 프론트 파일을 올려두고, EC2에는 백엔드 파일을 올려두었다.
그렇다면 S3와 EC2를 연결해주는 과정도 필요하지 않을까?라는 생각이 들었고 구글링 해보았다.
https://vlee.kr/4765
https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-instance-access-s3-bucket/
https://www.youtube.com/watch?v=BmNBntB7Yus
위와 같이, EC2랑 S3을 연결해주는 방법이 있었다.
하지만 위의 방법을 사용하지 않더라도 이미 EC2랑 S3은 연결되어 있었다!
프론트에서 .env을 통해서 환경변수로 EC2 엔드포인트를 설정해두었고
이를 빌드하니까 EC2 서버와 바로 연결이 되었다.
즉 EC2 엔드포인트를 프론트쪽 코드에 설정해두면 굳이 위의 링크들의 방법을 사용하지 않아도 된다는 것!
그렇다면 EC2 서버 엔드포인트가 바꿀 때마다 환경변수나 코드를 매번 수정해줘야 하나?
물론 서버 자체를 자주 끄진 않겠지만, 서버를 재시작하거나 중지해서 해당 인스턴스의 엔드 포인트가 바뀌더라도 항상 자동으로 연결되게는 못하나?라는 궁금증이 들었다.
EC2 엔드포인트가 바뀌더라도 인스턴스 ID는 동일하니까 해당 ID 자체에 S3가 연결되어 있도록 하는 기능은 없나?