AWS 35

사진과 내용을 동시에 올리는 api

사진과 내용을 올리면,db에 저장 샘플테이블 posting - id -content imgul post posting form-data - photo -content s3에 저장 current_time = datetime.now() new_file_name = current_time.isoformat().replace(':' , '_' ) + '.jpg' print(new_file_name) #파일명을, 유니크한 이름으로 변경한다 #클라이언트에서 보낸 파일명을 대체 file.filename = new_file_name # s3에 파일을 업로드 하면 된다. # s3에 파일 업로드 하는 라이브러리가 필요 # 따라서, boto3 라이브러리를 이용해서 업로드 한다. # 라이브러리 설치는 pip install b..

Api 개발/flask 2023.01.13

s3에 저장된 이미지를 객체 탐지하는 API 만들기

get /object_detection?filename=abc.jpg 오브젝트 디텍션 결과를 응답하는 API filename의 value값은 변환해준 파일네임 aws IAM으로 가서 rekognition 권한을 추가해줘야 한다 client = boto3.client('rekognition', 'ap-northeast-2', aws_access_key = Config.ACCESS_KEY , aws_secret_access_key = Config.SECRET_ACCESS) boto를 이용해 response = client.detect_labels(Image={'S3Object':{'Bucket':Config.S3_BUCKET , 'Name':filename}} , MaxLabels = 10 ) 결과물이 나옴..

Api 개발/flask 2023.01.12

이미지 업로드 api 만들기

어플에 사진을 보내면 사진을 s3버킷안에 저장하고 관리하는 어플 먼저 s3 버킷먼저 생성 버킷 만들기 https://aws.amazon.com/ko/sdk-for-python/ Python용 AWS SDK Python용 AWS SDK인 boto3를 사용하여 AWS를 빠르게 시작하십시오. Boto3를 사용하면 Python 애플리케이션, 라이브러리 또는 스크립트를 Amazon S3, Amazon EC2, Amazon DynamoDB 등 AWS 서비스와 쉽게 통합할 수 있습 aws.amazon.com pip install boto3 lmabda에는 기본으로 설치되어있고 로컬에만 설치해주면됨 파일을 s3에 업로드 API POST / upload form-data 로 사진 파일 전송 -photo : 사진파일 이때..

Api 개발/flask 2023.01.12

github로 lambda CI/CD하기

https://seonggongstory.tistory.com/181 API 소스코드 lambda에 배포하기 1cpu 1ram을 할당받는 ec2와 다른 서버리스(serverless) 방식 : 호출양만큼 금액만 낼경우 서버관련된 부분은 aws가 알아서 처리해줌( 유동사용자 만큼 자동으로 트래픽을 늘려줌) 대표적 : lambda , API Gate seonggongstory.tistory.com 이때 받은 aws 권한 key를 입력해줌 AWS_ACCESS_KEY_ID: ${{secrets.AWS_ACCESS_KEY_ID}} AWS_SECRET_ACCESS_KEY: ${{secrets.AWS_SECRET_ACCESS_KEY}} 이렇게 바꿔줌 name: serverless deploy on: push: bran..

Api 개발/flask 2023.01.12

MySQL에서 admin 계정만들기

use mysql; create user '어드민유저이름'@'%' identified by '어드민 비번' ; 이유저를 @(네트워크에 접속하게 해주겠다) 비밀번호 치고 grant all on 데이터베이스이름.* to '어드민유저이름'@'%'; 데이터베이스이름에 어드민유저이름을 관리할 권한을 주겠다 그후 새로운 커넥션 만들기 1. hostname : 내가 사용하는 aws rms주소 에 입력 2.username : 내가 방금 만든 id 3.password : 아까 만든 비밀번호 입력후 ok Test Connection까지 누르면 끝

Api 개발/flask 2023.01.04

ec2 private한 repository clone 및 pull

clone시 했을때 username: 이라는 창이 뜬다 이때 당황하지 않고 github에 들어가 확인 알맞게 입력해주면됨 이때 나온 토큰은 이페이지를 벗어날경우 다시는 확인 못하니 private한 공간에 저장을 해두기 그후 다시 putty에서 username 부분에 필요한거1) 내가 클론할 github 레파지토리 주소 필요한거2) 내 github 닉네임(id) 필요한거3) 저 위에 발급 받은 토큰 git clone https://git허브아이디:토큰 @주소 # 주소에서 https랑 뒷부분이랑 나눠서 그안에 아이디 : 토큰 넣는다고 생각하면됨 action 시 name: ec2 deploy on: push: branches: - main jobs: SSH: runs-on: ubuntu-latest steps..

오류 2022.12.21

github action으로 서버를 끄지않고 내용 수정하기

putty를 실행하여 git 클론을 해준후 https://seonggongstory.tistory.com/113 aws EC2 git 연결하기 이제 내가 만든 소스를 aws ec2 인스턴스 안에도 넣어야 하는데 github안에 있는 나의 코드들을 그대로 클론해서 넣어주면 된다. sudo yum install git 나의 코드들이 잔뜩 들어간 깃허브에 접속후 repositor seonggongstory.tistory.com nohup streamlit run 실행파일 --server.port (포트명) --server.runOnSave true &

웹대시보드/EC2 2022.12.21

github actions를 이용한 CI/CD

HOST는 내 ec2 퍼블릭 ip user는 SSH 접속 name private key는 ec2에서 발급해준 key 내가 가진 키는 pkl이니까 puttygen으로 리눅스용인 pem으로 변환해주면 됨 변환된 키를 옮겨서 새창에 뜬 프라이빗키 내용을 그대로 복사후 저장해주면 된다 그리고 action에서 name: ec2 deploy on: push: branches: - main jobs: SSH: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: ssh to ec2 uses: appleboy/ssh-action@master with: key: ${{ secrets.SSH_PRIVATE_KEY }} host: ${{ secrets.HOST..

웹대시보드/EC2 2022.12.20

EC2 서버와 로컬간의 파일 전송: 파일질라

git에 push하는 것도 용량이 정해저 있어 어느정도 한계가 정해저 있다보니 대용량 영상을 업로드하는데 제한이 있다 이럴때 FTP를 이용해 서버와 로컬사이에 직접 파일을 주고받으면 된다. https://filezilla-project.org/ 대표적인 FTP 프로그램 파일질라 EC2서버와 소통할 창구를 만들어 준다고 생각하면됨 https://seonggongstory.tistory.com/109 aws 가상서버 EC2 인스턴스 생성 AWS에서 제공하는 안정적인 가상 네트워크에서 웹 사이트, 앱 또는 프로세스를 구축, 배포, 관리를 위한 클라우드 서비스 쉽게 말해 아마존에서 내가 서버를 관리하기 위한 컴퓨터를 제공하는것 seonggongstory.tistory.com 호스트는 이때 받은 EC2 퍼블릭 I..

웹대시보드/EC2 2022.12.19