본문 바로가기

RestfulAPI

Flask RESTful API를 사용한 네이버 뉴스 검색 API 호출하기(1)

먼저 cmd 에서 serverless 치고 깃 허브 경로에 파일을 만들어 준다.

그다음VSC 열어서 내가 만든 aws-openapi-server 폴더를 열어준다.

그리고 app.py 클릭 후 가상환경 경로로 들어가 준 후 파이썬 버전 3.10으로 바꾸고 지역 한국으로 바꾸고

sls deploy 해서 실험해본다. 포스트맨에서 실행 후 잘되면 다음 단계로 가자.

먼저 Docker파일과 .dockerignore 파일을 만들면 되는데 그 과정은 이 글을 보고 오면 된다.

https://rudtjr0906.tistory.com/94

 

Doker 설치하여 AWS에 있는 Lamda 에 배포하기

Docker란 무엇인가?Docker는 컨테이너화된 애플리케이션을 개발, 배포 및 실행하기 위한 오픈 소스 플랫폼이다. 이를 통해 개발자는 어디서나 일관된 환경에서 코드를 실행할 수 있게 되며, 인프라

rudtjr0906.tistory.com

 

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

 

Serverless Framework와 Github Acitons를 이용한 AWS 자동 배포

현재 restfulAPI를 바로 AWS에 배포했지만 깃허브에는 서버리스가 없다. 그래서 깃 허브에도 서버리스 및 여러 액세스 키 값들을 설정 해주는 Github Actions 를 해볼 생각이다. 그러면 협업도 하면서 자

rudtjr0906.tistory.com

레파지토리 생성

깃허브 액션즈 키 세팅

워크플로우 액션즈 코드

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

 

내 애플리케이션 관리 - Open API 가이드

내 애플리케이션 관리 개발자 센터의 Application > 내 애플리케이션 메뉴를 클릭하면 등록한 애플리케이션의 목록을 확인할 수 있습니다. 목록 위에 있는 Application 등록을 클릭하면 새로운 애플리

developers.naver.com

먼저 Documents 들어가고 서비스 API 들어간다.

그다음 뉴스를 클릭 후 쭉 내려준다 .뉴스 검색 결과 조회를 컨트롤 키 눌러서 새창에서 들어가주자.

그럼 아래의 요청 url, 메서드,파라미터를 확인 하고 postman에서 사용 해보자.

오류가 뜰 것이다 그 이유는 Header에 클라이언트 ID와 클라이언트 시크릿을 넣어줘야 하기 때문이다. 

그럼 먼저 다시 네이버 developers 로 가서 내가 만들었던 아이디와 비밀번호를 확인하자.

 

여기에서 X-Naver-Client-Id 와 X-Naver-Client-Secret 을 해더에 넣어주면 된다.

 

아래와 같이 Headers 부분을 설정해주고 Send를 보내면 정상적으로 뉴스 검색이 불러와지는것을 볼 수 있다.

이제 내 로컬에서도 잘 작동되도록 해볼것이다(+ 배포도 해볼 예정이다.) 

다음 글에서 계속..