본문 바로가기

전체 글42

[Spring] JwtException에서만 Cors에러가 발생할 때 문제 위와 같은 Spring Security의 Filter Chain이 있다. 범용적으로 Jwt 에러를 해결하기 위해, 서블렛으로 넘어가기 전에 JwtExceptionFilter에서 Jwt 만료 등의 에러가 발생 시 Exception을 던져 주고 있었다. 그런데 다른 곳에서는 Cors 에러가 발생하지 않다가, 갑자기 에러가 발생하기 시작했다. 해결 @RequiredArgsConstructor @EnableWebSecurity @Configuration public class SecurityConfig { private final JwtUtil jwtUtil; private final CorsConfig corsConfig; @Bean public SecurityFilterChain filterChain(.. 2023. 10. 29.
[FastAPI] SqlAlchemy Connection time out Error 발단 갑자기 프론트엔드 개발자에게서 이런 카톡이 왔다. 500이 나오다가 갑자기 제대로 된 응답을 받는 이유가 뭘까. 생전 처음 보는 에러라서 우선 에러 로그를 확인해 보기로 했다. 원인 Traceback (most recent call last): File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1963, in _exec_single_context self.dialect.do_execute( File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 920, in do_execute cursor.execute(statemen.. 2023. 10. 2.
한국관광공사 관광사진 정보 크롤링해서 DB에 저장하기 개요 관광데이터 공모전에서 필요한 지역별 관광사진을 오픈 API에서 가져와 데이터베이스에 저장해야 한다. 관련된 데이터베이스를 보면 다음과 같은 형식으로 설계되어 있다. API를 개발중인 언어는 Java, 프레임워크는 Spring이지만, 굳이 클라우드와 배포 서버를 활용해서 관련 코드를 퍼블릭하게 배포할 이유가 없고, 단발성으로 사용하고 사라질 코드이기 때문에 속도가 빠르고 손에 익숙한 Go를 활용해 보기로 했다. 개발 튜토리얼 1. 데이터베이스와 연결하기 package main import ( "database/sql" "encoding/json" "fmt" "io/ioutil" "log" "net/http" "net/url" "strconv" "strings" "time" "github.com/go-.. 2023. 9. 23.
Go, Lambda로 presigned Url 발급하기 개요 SnapSpot을 개발하면서 '사진'을 어떻게 처리할지에 대해 난관에 봉착했다. 우선 이미 서버는 모듈만 6개로 사진 처리까지 감당할 수 있는 용량이 아닌데다, 사진을 처리하기에 이미 기능이 정신없이 많아서 속도도 느려질 것 같았다. 따라서 S3에 직접 프론트엔드가 올리게 하는 방법을 고안했고, AWS의 Lambda를 사용하기로 결정했다. Lambda는? FaaS, Function as a Service의 일종으로, '함수'를 Serverless하게 제공하는 개념을 가진다. 간단한 Rest API를 단일 함수(혹은 메소드)로서 제공한다. 유연한데다 사용한 만큼만 지불할 수 있는(On-Demand) 서비스이기 때문에, 단일 기능을 제공할 때 자주 사용한다. Go 코드 Go를 사용한 이유는 단순하다. .. 2023. 9. 16.