brunch

You can make anything
by writing

C.S.Lewis

by 무명 Dec 19. 2019

위키 이미지 받아오는 api 만들기

aws lambda, api gateway를 이용 + 삽질시 발견한 팁들

[목표] 

서비스에 추가될 기능을 위한 api 개발


[삽질 팁]

1. lambda에서 requests 패키지 사용

써보신 분들은 느꼈겠지만 패키지를 import 하기가 번거롭다. 


1.1 패키지를 zip으로 업로드

패키지가 많지 않았으므로 처음에는 이 방법으로 진행했다. 


"pip install 패키지이름 -t 경로"

를 사용해 패키지를 원하는 경로에 저장하고 zip으로 업로드. 복수개의 패키지시에 모두 하나의 zip 파일로 만들어야 한다. 그리고 업로드 시에 디폴트 파일이 지워지는데 주의해야 함. 


https://velog.io/@kykevin/20191209-TIL-AWS-Lambda-3-%EB%9E%8C%EB%8B%A4%EC%97%90%EC%84%9C-python-%ED%8C%A8%ED%82%A4%EC%A7%80-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-a3k45e2w1e


1.2 이렇게 boto를 이용해서 바로 사용할 수도 있음. 

https://stackoverflow.com/questions/40741282/cannot-use-requests-module-on-aws-lambda

https://velog.io/@city7310/boto3%EA%B0%80-%EC%9E%90%EA%B2%A9-%EC%A6%9D%EB%AA%85-%EC%A0%95%EB%B3%B4%EB%A5%BC-%EC%96%BB%EC%96%B4%EB%82%B4%EB%8A%94-%EA%B5%AC%EC%A1%B0



2. lambda - api gateway 배포 

레퍼런스가 많아서 어렵지 않다. 그런데 aws 서비스들도 업데이트가 자주 되다 보니 UI나 몇몇 기능들이 자주 바뀌는 듯. 

https://blog.algopie.com/aws/aws-lambda%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-api-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%B0%B0%ED%8F%AC-22-api-gateway/

https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/how-to-deploy-api-with-console.html

https://gun0912.tistory.com/63

https://aws.amazon.com/ko/getting-started/projects/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/module-4/

https://grip.news/archives/1397


3. api 엔드포인트 설정

"지리적으로 분산된 클라이언트에게는 엣지 최적화 API 엔드포인트가 최적입니다"

"리전 API 엔드포인트는 동일 리전의 클라이언트를 위한 것입니다. EC2 인스턴스를 실행하는 클라이언트가 동일 리전에서 API를 호출하거나 API가 수요가 큰 소수의 클라이언트에게 서비스를 제공하기 위한 것이라면 리전 API는 연결 오버헤드를 줄입니다."


https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/api-gateway-api-endpoint-types.html


4. api 문서화 도구들

문서화는 잘해놓는 게 좋다. 


https://yuda.dev/182

https://github.com/slatedocs/slate

https://sanghaklee.tistory.com/50


5. jupyter notebook에서 선택 셀과 아래 셀과 합치기

"shift+m"

라인 단위로 확인해가며 작업하다 보면 나중에 구조를 바꾸거나 리펙토링 할 때 셀의 내용들을 병합하는 게 문제다. 셀마다 복붙 하지 말고 단축키로 쉽게 병합하자. 


매거진의 이전글 미세먼지 데이터로 곡을 만든 비화 ver 1
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari