본문 바로가기

전체 글

(67)
내맘대로 Fastapi docs 정리(Cookie, Header) Cookie from fastapi import Cookie, FastAPI app = FastAPI() @app.get("/items/") async def read_items(ads_id: Optional[str] = Cookie(None)): 위와 같이 header의 cookie정보를 Cookie parameter로 받을 수 있다. 하지만 path parameter를 Cookie로 지정하면 Cookie로 인식하지 않고 path parameter로 인식한다. Header from fastapi import FastAPI, Header app = FastAPI() @app.get("/items/") async def read_items(user_agent: Optional[str] = Header(No..
내맘대로 Fastapi docs 정리(Pydantic data types, Pydantic Nested Models) Pydantic from pydantic import BaseModel, Field app = FastAPI() class Item(BaseModel): name: str description: Optional[str] = Field( None, title="The description of the item", max_length=300 ) price: float = Field(..., gt=0, description="The price must be greater than zero", example="a") tax: Optional[float] = None query, path, body parameter와 같이 baseModel안에서도 똑같이 쓸 수 있는데 그것은 Field이다. class Item(..
내맘대로 Fastapi Docs 정리(Query, Path, Body parameters) Query parameters from fastapi import FastAPI, Query app = FastAPI() @app.get("/items/") async def read_items(q: Union[str, None] = Query(default=None, max_length=50)): Union[str, None] 대신에 Optional[str] 혹은 str | None(python 3.10이상)을 쓸 수 있으며, Query는 추가적으로 validation을 달고 싶을 때 쓸 수 있다. 다음과 같이 여러 validataion을 넣을 수 있으며, regex는 정규식이다. Query(default=None, min_length=3, max_length=50, regex="^fixedquery$..
ec2 volume 용량 조정하고 적용하기. 현재 ec2에 디스크 용량이 별로 없어 자꾸 cicd에서 docker를 이용해 배포할때 no space left on device 에러가 뜬다. 그래서 volume을 증가시키기로 했다. 해당 인스턴스를 선택한 다음에 스토리지에서 해당 볼륨을 클릭하면 크기를 수정할 수 있는데, 나는 120G로 수정했다. 그리고 수정이 완료되면, volume은 증가했지만 우리가 쓰고있는 파티션에는 적용이 안된걸 확인할 수 있다. 즉, 우리는 growpart 명령어를 이용해 우리가 쓰고있는 nvme0n1p1이라는 파티션을 80G에서 120G로 확장해야한다. 그러면 위와 같이 120G를 전부 할당받게 되는데, 아직, df -hT 결과를 보면 확장이 안되어있다. 그 이유는 파일시스템도 같이 확장해주어야 하기 때문이다. 우리는 d..
python parameter에서 bare *란? python에서 변수명에 *, **를 붙이면 packing, unpacking이라는 것은 알고있을 것이다. 하지만 달랑 * 하나만 있으면 그건 무엇을 의미하는지는 몰랐다. fastapi 문서를 보는 도중에 다음과 같은 표현을 발견했다. 검색 키워드는 bare asterisk로 검색했으며, 의미는 * 뒤에 나오는 parameter들은 무조건 key=value형태여야한다는 것이다. 즉, bare *은 뒤에 나오는 parameter들은 전부 named arguments형태를 띄고 있다라고 알려주는 것이다. 만약 뒤에 변수명만 넣는다면, 다음과 같은 에러가 나타난다.
github action runner erorr: not a git repository github action으로 cicd를 실행하는데에 있어서 image를 build하는데 너무나 오랜 시간이 걸려, 이미지를 저장하고 있는 서 버에 runner를 직접 연결해서 쓰려고 한다. runner를 실행시키니 다음과 같은 에러가 떴다. 오류를 찾아보니 git 2.18버전 아래일 경우 github action에서 checkout 모듈을 사용하는데 있어서 git repository를 가져오는 것이 아니라, 단순히 rest api를 이용해 파일과 폴더를 가져온다는 것이다. sudo add-apt-repository ppa:git-core/ppa -y sudo apt-get update sudo apt-get install git -y 실제로 runner의 _work폴더에 가보니 .git 폴더가 없었고, ..
docker awslogs UnrecognizedClientException: The security token included in the request is invalid. docker-compose를 이용해 awslogs driver를 사용하는 경우, 그리고 aws 계쩡을 새로 옮길 경우, 단순히 aws key를 environment에 export를 하면 다음과 같은 에러가 난다. 그 이유는 docker는 docker engine에서 사용하는 config file이 따로 있기 때문이다. 그래서 docker engine이 사용하는 config file에서 aws key값이 저장되어 있을 텐데 그 값을 바꿔줘야 한다. 일단 안되는 이유가 key값이 안맞기 때문인지 확인하기 위해서 다음과 같은 명령어로 docker daemon의 현재 aws key environment값을 확인해보자. systemctl show --property=Environment docker 만약 aws ..
master node untaint is not working. (taint를 지우려고 해도 계속 생겨나는 현상) VM으로 ubuntu를 사용하고 있는 나로써는, kubernetes를 cluster로 이용하기 위해서 매일 3개의 노드를 켰다, 껏다 하는 것이 귀찮아서 그냥 사소한 이슈는 master node에서만 실행하고 있었다. 그래서 항상 kube-system namespace에서 pod를 보면 항상 proxy와 coredns 2개는 항상 꺼져있었다. 그런데 cni인 weave-net은 왜 3개가 다 켜져있는거지? master node만 ready상태인데? 이건 또 따로 알아봐야할 것 같다. 일단, 오늘도 master node를 켜고 swapoff를 한 뒤, 아래와 같이 master node의 taint를 확인하고 삭제한다. 어라? 그런데 좀 이상한게 있다. 맨 마지막에 원래는 이라고 나와야하는데 taint가 안..