백엔드11 [Lambda] Lambda의 Layer(레이어, 계층) Lambda는 50MB의 작은 용량을 가지고있다. 작은 용량의 한계를 해결하기 위해 AWS는 Layer (계층)를 제공한다. # 라이브러리를 layer로 만들고 라이브러리를 실행시킬때 layer를 추가하는 방식을 사용한다. # 이는 레이어를 활용하여 라이브러리를 재사용하기 용이하다는 것이다. 넘파이와 판다스 라이브러리가 들어있는 레이어를 만들어보자. 먼저 AWS EC2 인스턴스를 확인하고 없으면 생성한다. 참고: https://startcod.tistory.com/68 [Linux] EC2를 활용한 AWS 배포, 리눅스에 파이썬 다운로드, 깃 클론 이때까지는 로컬과 깃에서 스트림릿을 푸시하고 풀해줬다면 이것을 AWS의 EC2를 활용해서 배포해야 한다. 깃에서 AWS로 Streamlit을 배포하려면: 소스.. 2022. 6. 29. [Lambda] serverless app을 github에 연동 깃허브에 연동하기위래 깃허브에서 새 레파지토리를 생성한다. # readme와 gitignore은 serverless 만들때 이미 만들어졌기때문에 생성하지 않는다. 그럼 빈 레파지토리가 만들어진다. # 이 화면 그대로 놔둔다. 위의 화면이 나오면 비쥬얼 코드 터미널로 가서 깃을 시작한다. git init gitignore 맨 아래에 vscode와 node_modules를 추가한다. .vscode/ node_modules/ 이제 깃에 add한다. git add . # 한칸 뛰고 온점 ' . '을 찍는것에 유의한다. 깃허브 사이트에서 받은 주소를 사용해서 코드와 깃을 연결한다. git remote add origin https://github.com/eyoo95/aws-memo-server.git # 깃주소 .. 2022. 6. 29. [Lambda] serverless에 app 적용, Service Unavailable 에러 전에 만들었던 레시피 프로젝트의 app.py, util.py, config.py, mysql_connection.py, .gitignore 파일과 resources 폴더를 복사하여 붙여넣는다. 그 후 레시피 프로젝트에서 사용했던 라이브러리를 requirements.txt에 입력한다. mysql-connector-python flask-restful psycopg2-binary passlib email-validator Flask-JWT-Extended requests 이제 deploy 한다. sls deploy 포스트맨으로 endpoint를 활용해서 API를 작동시키자. # 잘 작동된다. 디버깅할때는 cloud watch에서 로그의 로그그룹으로 들어가서 /aws/lambda 로 시작하는 로그를 찾는다. .. 2022. 6. 28. [Lambda] AWS 배포를 위한 serverless 프레임워크, Lambda 페이스북이나 인스타그램처럼 폭발적으로 증가하는 데이터를 저장하고 처리하기 위해 NoSQL을 사용한다. NoSQL은 관계형 데이터베이스(RDBMS)에 비해 안정성은 떨어지나 높은 확장성을 보여준다. # Shard기법으로 확장한다. # 대표적인 NoSQL으로는 Dynamo, MongoDB, Casandra등이 있다. 대부분의 기업은 중요한 정보들을 처리할땐 RDBMS을 사용하고 댓글과 포스팅같은 데이터에는 NoSQL를 사용한다. 또한 프로필 수정과 같은 기능은 빠른 응답을 위해 Cache 서버를 사용하며, 사진을 업로드 하고 사진에 대한 부가적인 작업을 하기위해 Message queue를 사용한다. 이에 많은 회사들은 각기 다른 많은 서버와 자원들을 관리하기 위해 serverless를 활용한다. # serv.. 2022. 6. 28. [API] 네이버 API 이용하기 네이버 API중 하나인 파파고를 사용해보자. 먼저 NaverDevlelopers에서 임의의 어플 이름과 안드로이드의 앱 패키지 이름으로 등록한다. # 형식예시: com.example.mynavermap 등록이 완료되면 클라이언트 아이디와 클라이언트 시크릿을 제공한다. 그 밑에는 사용법을 알려준다. curl "https://openapi.naver.com/v1/papago/n2mt" \ # URL -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \ # 헤더의 키,벨류 -H "X-Naver-Client-Id: 클라이언트 아이디" \ # 헤더의 키,벨류 -H "X-Naver-Client-Secret: 클라이언트 시크릿" \ # 헤더의 키.. 2022. 6. 27. [API] S3로 파일 업로드하는 API 클라이언트를 통해 사진 같은 파일을 업로드할수있는 API를 만들어보자 먼저 Config 설정을 해야한다. class Config: JWT_SECRET_KEY = 'yh20220621##hello' # 절대 노출시키면 안되는 키 JWT_ACCESS_TOKEN_EXPIRES = False # True로 설정하면 3분의 유효기간이 생긴다. PROPAGATE_EXCEPTIONS = True # JWT가 예외처리를 해주는 옵션 # AWS eyoo1 ACCESS_KEY = '여기에 엑세스 키를 입력' SECRET_ACCESS = '여기에 시크릿 엑세스를 입력' # 버킷 이름과 기본 URL주소 세팅 S3_BUCKET = 'eyoo1-image-test' # 버킷 이름 S3_LOCATION = 'https://eyoo.. 2022. 6. 24. [API] 인증토큰 JWT, 로그인과 로그아웃: JWTManager, create_access_token, token_in_blocklist_loader 회원가입하거나 로그인 할때, 유저 정보를 양방향 암호화해서 처리하는 JWT를 사용한다. 관련 웹사이트: https://flask-jwt-extended.readthedocs.io/en/stable/ Flask-JWT-Extended’s Documentation — flask-jwt-extended 4.4.1 documentation flask-jwt-extended.readthedocs.io 먼저 JWT 라이브러리를 다운로드 한다. pip install flask-jwt-extended config.py 파일을 생성하여 Config코드를 작성한다. class Config: JWT_SECRET_KEY = 'yhacademy1029##hello' # 절대 노출시키면 안되는 키 JWT_ACCESS_TOKEN_.. 2022. 6. 20. [API] 로그인 API: check_password POST 메소드에 select를 사용하여 로그인하는 API를 만들자. # check_password을 사용한다. class UserLoginResource(Resource): def post(self): # 클라이언트로부터 body로 넘어온 데이터를 받는다. data = request.get_json() # { # "email": "abc@naver.com", # "password": "123456" # } try: connection = get_connection() # 이메일로 DB의 데이터를 가져온다. query = '''select * from user where email = %s;''' record = (data['email'], ) cursor = connection.cursor(dictio.. 2022. 6. 20. 이전 1 2 다음