FastAPI ErrorHandling 과 CORS (1) - 문제 파악
·
탐구 생활/FastAPI CORS
Starlette와 FastAPI에서 제공하는 CORSMiddleware와 ExceptionHandler가 함께 작동하지 않는 상황은 꽤 혼란스럽습니다. 이는 REST API 개발자 입장에서 상당히 중요한 이슈로, 많은 FastAPI 사용자들이 다양한 해결책을 논의(link, link, link)해 왔지만 제가 봤을때 명확하고 만족스러운 답이 나오지 않은 상태입니다. 우선 문제의 원인과 그 해법이 만족스럽지 않은 이유를 이야기해보겠습니다. 다소 장황한 글이 될 수 있기 때문에 문제 원인과 문제 상황만 파악하고자 하시는 분은 "문제의 원인" 그리고 "문제 상황" 만 보셔도 됩니다.문제 파악Starlette  Middlewere chain Strlette 는 ASGI Spec 을 준수하며, 그에 따라 Mid..
FastAPI log (3) - 설계, 구현
·
탐구 생활/FastAPI Log
이 시리즈는 AWS EKS & FastAPI 환경에서 로그를 적용하는 과정을 다루고 있습니다. 전체 시리즈는 다음과 같습니다.- FastAPI log (1) - AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기- FastAPI log (2) -AWS EKS Fargate, 왜 Fluent Bit 인가?- FastAPI log (3) - 설계, 구현- FastAPI log (4) - 개선하기 이전 글 "AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기" 을 통해 로그를 Cloudwatch 로 보내는 인프라 세팅을 맞췄습니다. 이제는 FastAPI 프레임워크에서 어떻게 로그를 형성하여 보내는게 좋을지 더 실무적인 관점에서 고민한 내용을 기록해놓으려고 합니다.uvicorn ..
FastAPI log (2) -AWS EKS Fargate, 왜 Fluent Bit 인가?
·
탐구 생활/FastAPI Log
이 시리즈는 AWS EKS & FastAPI 환경에서 로그를 적용하는 과정을 다루고 있습니다. 전체 시리즈는 다음과 같습니다.- FastAPI log (1) - AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기- FastAPI log (2) -AWS EKS Fargate, 왜 Fluent Bit 인가?- FastAPI log (3) - 설계, 구현- FastAPI log (4) - 개선하기 이전글 "AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기" 에서 Fargate 내부에 Fluent Bit 에이전트가 기본적으로 설치되어 있으며, AWS가 제공하는 설정 방식에 따라 CloudWatch 등으로 로그를 전송할 수 있음을 설명했다.그러나 클라우드 환경에서 관측 데이터(t..
FastAPI log (1) - AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기
·
탐구 생활/FastAPI Log
이 시리즈는 AWS EKS & FastAPI 환경에서 로그를 적용하는 과정을 다루고 있습니다. 전체 시리즈는 다음과 같습니다.- FastAPI log (1) - AWS EKS Fargate 환경에서 log 를 외부시스템에 보내기- FastAPI log (2) -AWS EKS Fargate, 왜 Fluent Bit 인가?- FastAPI log (3) - 설계, 구현- FastAPI log (4) - 개선하기 기존 모놀리식 서비스를 마이크로서비스 아키텍처로 전환하면서 AWS EKS(Fargate) 기반으로 운영하는 방안을 선택했습니다. 이 과정에서 Java & Spring 기반 서비스를 Python & FastAPI로 변경하는 것뿐만 아니라, EKS Kubernetes 환경에서 운영하는 방법을 익히는 것도..
FastAPI 의존성 주입, 코드를 까보자
·
탐구 생활/FastAPI
이전 글에서 FastAPI 가 제공하는 의존성 주입 기능을 알아보았다. 하지만 그정도는 어떻게 쓰는지 알아보는 정도이고 아직 풀리지 않는 궁금증이 많다. "어떻게 Callable 만 받아들이는가?""서브-의존성 을 구현하는 방법은 무엇인가?""왜 FastAPI 경로 동작 함수(path operation function)에서만 동작하는가?" 이런 궁금증을 풀기 위해서는 직접 코드를 까보는게 최고다.  fastapi.param_functions.Depends코드를 까본 결과 직접 FastAPI 경로 작업 함수(path opration function)에서 참조하는 Depends 는 use_caches 기능이 있었다!  그리고 내부적으로 params.Depenndes 를 호출하여 파라미터를 그대로 전달하는 동..
FastAPI 의존성 주입, Depends 를 알아보자
·
탐구 생활/FastAPI
Spring 을 쓰다가 FastAPI 로 전환하면서 많은 것들이 의문이었지만 그중 가장 큰 것은 "Python 은 빌드되는게 아닌데 의존성 주입을 사용할 수 있나?" 였다. 그리고 그런 나에게 보란듯이 FastAPI 공식 문서에는 의존성 주입 파트가 있다.  이 글은 공식문서를 정독하고 정리하는 글 정도가 되겠다. 이미 어느정도 Depends 를 알고 있고, Depends 의 내부동작을 파악하고 싶다면 다음 글이 도움이 될 수도 있다.FastAPI 의존성 주입(Dependency Injection) 정리FastAPI는 의존성 주입(Dependency Injection, DI)을 통해 코드의 재사용성, 유지보수성, 테스트 용이성을 향상시킨다. 1. 기본 의존성 주입FastAPI에서 기본적인 의존성을 정의하..
오픈소스 초보자의 FastAPI 기여하기
·
탐구 생활/FastAPI
회사에서 FastAPI 로 전환을 하기에 FastAPI Document 를 보면서 공부중이었다. 한국어로 번역된 문서도 있는반면 영어 그대로인 문서들도 있었다. 왜일까? 하고 찾아보던중 FastAPI Github 에서 번역활동이 진행중이며, 한국인 번역 참여자는 16명 정도라는 것을 알게 되었다.  대학생때 수업 대부분을 영어로 들었고 점수도 나쁘지 않았다는 자신감에 그 번역, 내가 하면 되는거 아닌가 하는 생각이 들었다.1) 공부도 하고, 2) 비록 번역이지만 오픈소스에 기여도 해보고, 3) 한국어로 된 자료가 늘어나면 FastAPI 가 한국에 더 뿌리내릴수도 있고, 1석 3조의 전략이었다.첫번째 PR 을 위한 노력하지만 걸림돌이 하나 있었다. 오픈소스에 RP을 날리는 방법을 모른다. 그동안 Sprin..
FastAPI: fastapi-permissions 를 이용한 접근제어
·
탐구 생활/FastAPI
fastapi-permissionsfastapi-permissions는 Pyramid 프레임워크의 Pyraid Securiy 기능에서 영감을 받아 만들어진 라이브러리이다. 2024년 12월 기준으로 마지막 업데이트가 4년 전이어서 최신 FastAPI와의 호환성에 의문이 들지만, 접근 방식이 흥미로워 살펴보게 되었다. fastapi-permissions 가 갖는 주요 철학과 개념, 내구 동작 방식을 살펴본다.1. 주요 철학fastapi-permissions 가 FastAPI security 와는 다른 점은 scope 로 접근을 제어하는게 아니라 더 저수준에서 세밀하게 접근을 제어한다는 것이다. 그에따라 접근자의 권한뿐만 아니라 접근 하려하는 리소스의 상태에 따라서도 접근을 제어할 수 있다.2. 주요 개념F..