먼저 cmd 에서 serverless 치고 깃 허브 경로에 파일을 만들어 준다.
그다음VSC 열어서 내가 만든 aws-openapi-server 폴더를 열어준다.
그리고 app.py 클릭 후 가상환경 경로로 들어가 준 후 파이썬 버전 3.10으로 바꾸고 지역 한국으로 바꾸고
sls deploy 해서 실험해본다. 포스트맨에서 실행 후 잘되면 다음 단계로 가자.
먼저 Docker파일과 .dockerignore 파일을 만들면 되는데 그 과정은 이 글을 보고 오면 된다.
https://rudtjr0906.tistory.com/94
Docker 파일
FROM public.ecr.aws/lambda/python:3.10
COPY . ${LAMBDA_TASK_ROOT}
COPY requirements.txt .
RUN yum -y install gcc
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
CMD ["app.handler"]
.dockerignore 파일
__pycache__
.git
.serverless
.gitignore
.dockerignore
serverless.yml
requirements.txt 파일
Flask==1.1.4
Werkzeug==1.0.1
markupsafe==2.0.1
serverless-wsgi
serverless.yml
service: aws-openapi-server
frameworkVersion: '3'
custom:
wsgi:
app: app.app
provider:
name: aws
# 런타임 이제 필요없어서 삭제, 도커파일에 작성함
region : ap-northeast-2
# 컨테이너 사용위한 추가 문구
ecr:
images:
appimage:
path: ./
functions:
api:
# 핸들러도 삭제 하고 iamge, timeout 추가, events 는 그냥 냅둔다
image:
name: appimage
timeout: 120
events:
- httpApi: '*'
# 플러그인도 삭제시켜 버리고 serverless-wsgi를 리콰이어 먼트에 넣는다.
그 다음 sls deploy 하고 확인 후 잘되면, 깃허브 액션즈까지 하면 된다.
깃허브 액션즈도 아래 블로그 참고하면 된다.
https://rudtjr0906.tistory.com/93
레파지토리 생성
깃허브 액션즈 키 세팅
워크플로우 액션즈 코드
name: Deploy sls app
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
env:
SERVERLESS_ACCESS_KEY: ${{ secrets.SERVERLESS_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
steps:
- uses: actions/checkout@v3
- name: install-python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: install serverless
run: npm i -g serverless@3.38.0
- name: severless deploy
run: sls deploy --verbose --force
이렇게 기본적인 세팅이 다 되었다면 이제 뉴스 API이용하여 뉴스 검색을 만들어 볼 예정이다.
이렇게 쿼리문을 뉴진스로 검색 했을 경우 뉴진스에 관한 뉴스를 볼 수 있게 해보겠다.
네이버 Open API 가이드 먼저 확인하자.
https://developers.naver.com/docs/common/openapiguide/appconf.md
먼저 Documents 들어가고 서비스 API 들어간다.
그다음 뉴스를 클릭 후 쭉 내려준다 .뉴스 검색 결과 조회를 컨트롤 키 눌러서 새창에서 들어가주자.
그럼 아래의 요청 url, 메서드,파라미터를 확인 하고 postman에서 사용 해보자.
오류가 뜰 것이다 그 이유는 Header에 클라이언트 ID와 클라이언트 시크릿을 넣어줘야 하기 때문이다.
그럼 먼저 다시 네이버 developers 로 가서 내가 만들었던 아이디와 비밀번호를 확인하자.
여기에서 X-Naver-Client-Id 와 X-Naver-Client-Secret 을 해더에 넣어주면 된다.
아래와 같이 Headers 부분을 설정해주고 Send를 보내면 정상적으로 뉴스 검색이 불러와지는것을 볼 수 있다.
이제 내 로컬에서도 잘 작동되도록 해볼것이다(+ 배포도 해볼 예정이다.)
다음 글에서 계속..
'RestfulAPI' 카테고리의 다른 글
Flask RESTful API를 사용한 네이버 뉴스 검색 API 호출하기(2) (0) | 2024.05.29 |
---|---|
Doker 설치하여 AWS에 있는 Lamda 에 배포하기 (2) | 2024.05.28 |
Serverless Framework와 Github Acitons를 이용한 AWS 자동 배포 (0) | 2024.05.24 |
AWS Serverless Framework 설치 방법 (0) | 2024.05.23 |
RestfulAPI Flask에서 JWT 사용하여 로그인 및 로그아웃하기 (2) | 2024.05.23 |