개발/백엔드 14

server - open api 이용해보기.

네이버 에서 공개된 api를 이용해보겠습니다. 기본적인 사용방법은 네이버에서 제공하기 때문에 참고하시길 바랍니다. https://developers.naver.com/docs/common/openapiguide/ API 공통 가이드 - Open API 가이드 API 공통 가이드 네이버 오픈API는 네이버 플랫폼의 기능을 외부 개발자가 쉽게 이용할 수 있게 웹 또는 SDK 형태로 공개한 기술들입니다. 네이버 오픈API로 활용할 수 있는 기술에는 네이버 로그인 developers.naver.com 각 api 별로 사용법은 나와있기 때문에 대표적인 파파고 번역 api를 이용해보겠습니다. 1. 클라이언트 측 요청사항 # client 에서는 다음과 같이 보냅니다. { "content" : "안녕하세요~ 반갑습니다..

개발/백엔드 2023.01.13

server - AWS 의 rekognition api 사용해보기

이미지를 분석해주는 AWS 의 rekognition 을 이용해봅시다. 먼저 첫번째로 하셔야 하는 일은 AWS IAM 에서 rekognition 의 접근을 허락하도록 합니다. 접근을 허락했다면 이제 비쥬얼코드에 작성하여 rekognition 을 이용해 봅시다. # import from flask import request from flask_restful import Resource import boto3 from config import Config 클래스를 하나 만듭니다. ObjectDetectionResource 로 만들겠습니다. class ObjectDetectionResource(Resource) : #S3 에 저장되 있는 이미지를 객체 탐지하는 API def get(self) : # 클라이언트로..

개발/백엔드 2023.01.12

server - AWS S3 에 이미지 업로드 하기.

S3 에 업로드하기위해서 새로운 버킷을 생성합니다. 버킷을 생성하실때 ACL 활성화 선택해주세요. 엑세스 차단을 풀어 퍼블릭상태가 될 수 있도록 합니다. 버킷을 다 생성하셨으면 비쥬얼 코드를 실행해서 코드를 작성합니다. 1. boto3 라이브러리 설치. - S3 에 업로드하기 위해 boto3 라이브러리를 설치합니다. pip install boto3 2. 클라이언트로부터는 form-data 형식으로 이미지를 전달받도록 합니다. 3. AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY를 준비하여 config.py에 추가합니다. config.py # AWS 관련키 AWS_ACCESS_KEY_ID = 키값 AWS_SECERT_ACCESS_KEY = 키값 4. 이미지 파일은 request.f..

개발/백엔드 2023.01.12

server - aws lambda - github 연결하여 자동배포하기.

이번에는 github와 연동하여 github에 푸쉬가 될때마다 자동으로 배포되게끔 해보겠습니다. github 액션에 다음과 같이 추가합니다. 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 install -n serverless-wsgi && sls plugin install -n serverless-python-requirements && sls d..

개발/백엔드 2023.01.12

server - aws lambda layer 추가

lambda에 너무 많은 패키지를 설치하도록 하면 작동이 정상적으로 되지 않습니다. 따라서 레이어 에 따로 설치를 하도록 하겠습니다. 1. 먼저 설치할 패키지를 내 lambda와 동일한 환경을 찾습니다. - 패키지 다운로드는 pypi 에서 가능하며 반드시 여러분의 환경에 맞도록 합니다. https://pypi.org/ ( aws lambda 는 아마존 리눅스 이기 때문에 같은 환경인 ec2 에서 진행, manylinux_x86으로 다운받습니다. ) 2. ec2 에서 python폴더를 생성하고 wget으로 파일을 다운로드합니다. - 폴더 생성은 mkdir python - 리눅스이기때문에 주소를 복사하셔서 wget [주소] 로 다운받습니다. 3. 다운받은 파일을 전부 압축을 해제하고 마지막에 다운로드 받았던..

개발/백엔드 2023.01.11

server - AWS lambda 배포 지역 변경하기. (credentials 에러)

lambda에 아무런 변경없이 업로드를 하게 되면 기본값으로 설정되는 지역이 있습니다. 이를 우리가 사용하는 서울 지역으로 바꿔 봅시다. serverless.yml 을 수정합니다. 맨위쪽 org,app 부분을 먼저 지워주세요. 그 다음 provider 부분에 다음과 같이 추가합니다. ap-northeast-2 는 aws에서 서울 지역을 의미하는 코드입니다. 그리고 다시 배포를 하시면 됩니다. * 여기서 배포오류가 발생할 수 있습니다. credentials 에러가 발생할 수 있는데 이 경우는 credentials 셋팅이 로컬에서 안되어 있기 때문입니다. https://www.serverless.com/framework/docs/providers/aws/guide/credentials/ Serverless ..

개발/백엔드 2023.01.11

server - 설정한 lambda 에 내가 만든 앱 배포하기 ( 모듈 에러 해결법)

지난번에는 비어있는 템플릿을 배포하였습니다. 이번에는 내가 그동안 만든 앱을 배포해보겠습니다. 1. 배포용 서버리스 앱을 하나 다시 만듭니다. - 저같은 경우 aws-recipe-flask-app 으로 만들겠습니다. 2. 비쥬얼 코드로 비어있는 이 템플릿을 열어서 내가 만든 앱의 파일들을 복사합니다. 3. .gitignore 파일에 다음과 같이 추가합니다. 4. 복사한 코드를 로컬에서 테스트합니다. 5. 정상적으로 확인이 되었다면 배포합니다. 6. 배포된 주소를 확인하고 테스트를 진행합니다. * 테스트를 하면서 분명 에러가 발생할 것 입니다. 7. 에러 확인을 위해 aws cloudwatch 로 갑니다. 반드시 lambda 로 적힌 앱으로 들어가야 합니다. 지금 같은 경우 저는 aws-recipe-fla..

개발/백엔드 2023.01.11

server - lambda(serverless) 수동배포 설정하기

지금까지 로컬에서 작업을 진행하였습니다. 이 진행을 AWS 에 배포를 통해 로컬이 아닌 누구나 접속이 가능하도록 만들어보겠습니다. 배포는 AWS lambda 을 이용하겠습니다. - lambda 는 AWS 에서 제공하는 serverless 플랫폼으로 서버의 관리를 하지 않아도 되는 서버 이다. 1. AWS IAM 설정하기 - IAM 은 aws의 접근을 관리하기 위한 기능입니다. - 유저가 접근할 수 있도록 권한을 설정합니다. 사용자 추가를 누릅니다. 사용자 이름을 입력하시고 엑세스키를 선택합니다. 다음을 눌러 권한설정에 오시면 기존정책 직접연결에서 다음과 같이 선택하여 주세요. 태그 추가 ( 선택 사항)은 무시하여 넘어가주세요. 사용자 만들기를 하면 csv 파일로 credentials.csv 파일을 다운로..

개발/백엔드 2023.01.10

server - jwt token 없이 접근을 허락하는 방법

api 설계를 하다보면 같은 데이터를 비로그인용,로그인용으로 보여지게끔 작업이 필요한 경우도 있습니다. 클래스 파일을 다시 만들지 않고 @jwt_required() 에 opitional 의 파라미터를 true 값을 통해 비로그인 용과 로그인 용으로 나눌 수 있게 됩니다. optional = true로 값을 주게되면 토큰이 없는 사람의 경우 None 값으로 들어오게 됩니다. 따라서 토큰이 none 인지 아닌지로 로그인 비로그인 유저를 구분 할 수 있게 됩니다. @jwt_required(optional=True) def get(self) : user_id = get_jwt_identity() print('유저 ID') print(user_id) # 비로그인 유저 None if user_id is None :..

개발/백엔드 2023.01.10

server - login을 위한 token 설정 및 logout 을 위한 token 방지

이전 포스팅에서 회원가입을 진행을 하였습니다. 이제 login/logout을 작성하고 내가 발급받은 토큰으로 내 데이터만 수정 / 삭제 가능하도록 작성해봅시다. 먼저 로그인 입니다. # 클라이언트 가 보내줄데이터 { "email":"abc12345@naver.com", "password":"12345" } def post(self) : data = request.get_json() # DB 로부터 해당 유저의 데이터를 가져온다. try : connection = get_connection() query = '''select * from user where email = %s;''' record = (data['email'],) cursor = connection.cursor(dictionary=True)..

개발/백엔드 2023.01.05