본문 바로가기

분류 전체보기317

[Restful API] 네이버 Open API 사용해보기 📝네이버의 Open API 사용해보기 네이버 오픈 API 목록을 보고 사용할 API를 찾으면 된다(https://developers.naver.com/products/intro/plan/plan.md) 우선 네이버의 뉴스검색 API와 파파고(Papago) API를 사용해보겠다 사용하기 전 먼저 네이버 개발자 센터에서 애플리케이션을 등록하고 클라이언트 아이디와 클라이언트 시크릿을 발급받아야한다 ※ 발급 받은 아이디와 클라이언트 시크릿은 컨픽 파일에 저장해 사용하기 해당 API 페이지에 들어가 HTTP 메서드를 확인하여 포스트맨에 경로를 셋팅해주고 Visual Studio Code에 들어가 작업해줬다 값은 사용할 API의 홈페이지의 요청 URL, 파라미터, 참고 사항, 요청 예, 응답, 오류 코드 등 확인해.. 2023. 1. 13.
[Restful API] 이미지와 텍스트 포스팅하는 API만들기 📝이미지와 텍스트를 포스팅하는 API만들기 우선 포스트맨을 포스트로 셋팅하고 Body에 form-data로 키값을 사진을 올릴 수 있는 파일 타입, 글을 올릴 수 있는 텍스트타입으로 하나씩 만들어줬다 Visual Studio Code를 실행해 코드를 작성해준다 사진을 S3에 업로드하고 업로드한 사진의 Url을 가져와 입력한 내용과 함께 DB에 저장해줬다 class PostingResource(Resource) : def post(slef) : # 1. 클라이언트로부터 데이터를 받아온다 # from=data # photo : file # content : text # 사진과 내용은 필수항목이다 세이프코딩 if 'photo' not in request.files or 'content' not in reque.. 2023. 1. 13.
[Restful API] S3에 저장한 이미지를 객체 탐지하는 API만들기(Rekognition) 📝S3에 저장한 이미지를 객체 탐지하는 API만들기 Amazon Rekognition을 사용하여 Object Detection 결과를 응답하는 API를 만들어 보겠다 우선 포스트맨에서 경로를 설정해주고 ex) http://localhost:5000/object_detection GET으로 Params에 키값을 입력하고 밸류에 S3에 저장한 파일명을 입력해준다 Visual Studio Code를 실행해 코드를 작성해준다 ※ rekognition을 사용하기 위해서 IAM에서 AmazonRekognitionFullAccess 권한 추가 from flask import request from flask_jwt_extended import get_jwt_identity, jwt_required from flask.. 2023. 1. 12.
[Restful API] 이미지 S3에 업로드하는 API 만들기 📝이미지를 S3에 업로드하는 API 만들기 우선 포스트맨에서 경로를 설정해주고 ex) http://localhost:5000/upload Body에 form-data로 키값을 입력하고 텍스트가 아닌 파일로 지정해서 밸류값에 이미지를 업로드 해줬다 Visual Studio Code를 실행해 코드를 작성해준다 from flask import request from flask_restful import Resource from mysql.connector import Error from datetime import datetime import boto3 from config import Config class FileUpLoadResource(Resource) : def post(self) : # 클라이언트로.. 2023. 1. 12.
[AWS] Lambda에 자동 배포해보기(CICD) 📝AWS Lambda에 소스코드 자동 배포해보기(CICD) 수작업 배포를 해봤으니(https://coding-jisu.tistory.com/199) 깃허브를 통한 자동배포를 해보겠다 깃허브 액션에서 New workflow 생성해서 아래코드를 입력해준다 ※ name 부분은 알아서 편한대로 입력하면 된다 name: serverless deploy on: push: branches: - main jobs: deploy: name: deploy runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install SLS and Deploy uses: serverless/github-action@v3 with: args: -c "sls plugin i.. 2023. 1. 12.
[AWS] Lambda Layer 만들기 📝AWS Lambda layer 만들기 pandas 라이브러리를 사용한 서버를 배포하기 위해서 requirements.txt파일에 pandas와 numpy 라이브러리를 입력해줬는데 Lambda의 용량 초과로 설치가 되지 않았다 ※ pandas를 사용하기 위해서는 numpy 라이브러리도 설치해줘야한다 이럴때는 Lambda에 직접적으로 용량 큰 라이브러리를 설치하지 말고 Layer에 라이브러리를 설치해 사용해야한다 (layer가 Lambda 해당 라이브러리가 사용할때마다 연결해준다 람다는 되도록 소스코드만 넣는다) 내 컴퓨터는 윈도우기 때문에 ec2 서버에 접속해서 라이브러리를 리눅스용으로 설치해 가져오겠다 요약정리 1. PuTTY로 ec2에 접속해서 버전에 맞는 새로운 가상환경 만들고 디렉토리 생성 2. .. 2023. 1. 11.
[AWS] Lambda에 수작업 배포해보기 📝AWS Lambda에 소스코드 수작업 배포해보기 테스트를 먼저 해봤으니 이제 로컬 컴퓨터에서 만든 소스코드를 사용 할 수 있게 수작업 배포를 해보겠다 요약정리 1. serverless.com에서 서버리스 앱을 만든다 2. 앱을 만든 코드를 복사해 cmd실행하여 로컬에 템플릿 만든다 3. 템플릿을 AWS에 배포(잘 돌아가는지 테스트), 포스트맨으로 테스트 4. AWS 배포용 깃허브 레파지토리를 만들어 로컬에 클론 5. 서버리스 템플릿 폴더에 있는 파일들을 새로운 레파지토리 파일로 모두 복사(숨긴 파일도 다 가져온다) 6. 새로운 레파지토리를 Visual Studio Code로 열어서 .gitignore파일에 node_modules을 타이핑하고 저장 깃허브에 커밋, 푸시해준다 7. 파이썬 인터프리터 가상환.. 2023. 1. 11.
[AWS] Lambda에 배포 테스트해보기 📝AWS Lambda에 소스코드 수작업 테스트해보기 지금까지 해본 작업은 로컬컴퓨터에서 서버를 돌려본 것이였는데, 실제 서비스를 운영하기 위해서는 작업했던 로컬의 소스코드를 AWS에 보내서 서비스가 동작하게 만들어야한다(배포) 수작업 배포 테스트를 먼저 해보았다 우선 람다에 소스코드를 배포하기 전 보안(권한)이 필요하다 AWS의 IAM을 설정 AWS(https://aws.amazon.com) > IAM > 좌측 엑세스 관리의 사용자 클릭 후 사용자 추가하기 사용자 이름을 입력하고 엑세스 키 - 프로그래밍 방식 엑세스를 선택해준다 기존 정책 직접 연결 선택 후 사용할 정책을 선택해준다 내 사용자 권한은 이렇게 9개를 선택해줬다 AWS 관리형 정책 선택 AmazonAPIGatewayAdministrator .. 2023. 1. 10.
[Restful API] Query String 검색하는 API 만들기 📝Query String 검색하는 API 만들기 포스트맨에서 Query String할 키와 밸류값을 Query Params에 입력한다 (http://localhost:5000/movie/search?keyword=The&offset=0&limit=25) 검색할 값(keyword)과 페이징할 값(offset, limit)을 입력해줬다 코드를 작성할때 클라이언트에서 쿼리스트링으로 보내는 데이터는 request.args에 들어있다 변수로 저장해서 쿼리문에 사용하기 ※ 주의할점 MySQL Workbench 쿼리문 작성할때 컬럼은 n이다에만 %s 사용하고 그외는 변수를 더해준다 class MovieSearchResource(Resource) : def get(self) : keyword = request.args.. 2023. 1. 10.
[Restful API] 회원, 비회원 둘 다 동작하는 API 만들기 📝회원, 비회원 둘 다 동작하는 API 만들기 클래스 안에 함수를 만들때 위에 @jwt_required()를 입력하면 로그인한 사람만 그 페이지의 정보를 볼 수 있다 로그인 한 사람과 로그인하지 않은 사람도 볼 수 있게 하기 위해서는 @jwt_required(optional=True) 이렇게 입력 해야한다 user_id = get_jwt_identity() 했을때 로그인하지 않은 사람이라면 토큰값이 없기때문에 user_id에 None값이 저장된다 이 값으로 if문을 작성해 로그인한 사람과 로그인하지 않은 사람의 페이지를 다르게 보여줄 수 있다 class MovieListResource(Resource) : @jwt_required(optional=True) # 비회원도 동작 가능하게 설정 def get(.. 2023. 1. 10.