AWS의 플라스크 때 API

본 문서에서는 AWS에 이전 기사에서 작성한 Flask 응용 프로그램을 배포하여 다음을 사용합니다.
  • 아마존 관계 데이터베이스 서비스
  • 아마존 ECR(탄성 용기 등록)
  • 아마존 ECS(탄성 용기 서비스)
  • 비디오 버전:

    층계

  • Postgres의 RDS 인스턴스 생성
  • RDS 인스턴스 테스트
  • TinyStacks GitHub 저장소 복제 및 구축
  • ECR 저장소 만들기
  • Docker 이미지를 표시하고 ECR 저장소로 밀어넣기
  • ECR 이미지
  • 를 사용하여 ECS에 배포
  • 우체부 테스트(Table Plus)
  • RDS 인스턴스 만들기


    AWS Management Console onsole로 이동하여 RDS를 검색합니다.

    클릭하여 데이터베이스를 만듭니다.

    사용 가능한 옵션 목록에서 다음을 선택합니다.
  • 표준
  • 박사후 12.5판
  • 무료 계층

  • 실례를 위해 이름 (기본적으로 데이터베이스 이름), 주 사용자 이름 (postgres), 비밀번호 (postgres) 를 선택하십시오.비밀번호를 확인하다.(생산 환경에서 더욱 안전한 비밀번호를 사용해야 합니다!)

    접속을 제외한 나머지 부분은 그대로 유지됩니다.

    우리는 곧 안배할 것이다.
    너는 남은 것을 원래의 모양으로 유지할 수 있다.예상된 월 원가가 '무료 등급' 을 표시하는지 다시 한 번 확인하십시오. (만약 당신이 여전히 무료 등급 신용을 가지고 있다고 가정한다면.)RDS 인스턴스의 비용은 시간에 따라 달라질 수 있습니다.

    그런 다음 를 클릭하여 데이터베이스를 만듭니다.
    기다리는 동안 데이터베이스 이름과 보안 그룹을 누르십시오.

    보안 그룹 id를 누르고 입국 규칙 편집을 누르십시오.이것은 우리가 외부 도구를 사용하여 데이터베이스를 테스트할 수 있게 할 것이다.원한다면 이 단계를 뛰어넘을 수 있다.만약 그렇다면, RDS 실례와 응용 프로그램이 같은 보안 그룹에 있는지 확인하십시오.

    이제 다른 인바운드 규칙을 추가하고 RDS 인스턴스에 액세스할 수 있습니다.

    이제 RDS 인스턴스를 테스트할 준비가 되었습니다.

    RDS 인스턴스 테스트


    RDS 인스턴스를 테스트하려면 TablePlus를 사용하지만 모든 도구를 사용할 수 있습니다.기타 툴은 다음과 같습니다.
  • pgadmin
  • psql
  • 새 PostgreSQL 연결을 만들려면 다음과 같이 하십시오.

    연결에 필요한 모든 정보를 입력합니다.
  • 호스트: (RDS 인스턴스의 끝점)
  • 포트: 5432
  • 사용자 이름:postgres
  • 비밀번호:postgres
  • 데이터베이스: 박사후
  • SSL 모드를 비활성화할 수 있습니다.(하지만 프로덕션 환경에서 작업할 때는 SSL이 활성화되어 있는지 확인하십시오!)
    접속 테스트 를 클릭합니다.만약 네가 connection is ok 메시지를 보았다면, 너는 갈 수 있을 것이다.데이터베이스가 비어 있습니다.

    저장소 복제, 분기 변경 및 Docker 이미지 구축


    Tinystacks 클론the aws-docker-templates-flask repository:
    git clone https://github.com/tinystacks/aws-docker-templates-flask.git
    
    디렉터리에 들어가기
    cd aws-docker-templates-flask
    
    이제 GitHub 분기를 전환합니다.명령git branch -a을 사용하여 모든 분기를 검사할 수 있습니다.
    git checkout flask-local-postgres
    
    그리고 네가 가장 좋아하는 IDE로 이 폴더를 열어라.Visual Studio 코드가 있는 경우 다음을 입력합니다.
    code .
    
    터미널을 열고 docker-compose.yml 파일이 있는 폴더에 다음을 입력합니다.
    docker compose build
    

    ECR

    <AWS_ACCOUNT_ID><REGION>를 사용하여 AWS CLI에 로그인합니다.
    aws ecr get-login-password --region <REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com
    
    프롬프트를 사용하여 새 ECR 라이브러리를 작성합니다.사용자 <REGION>:
    aws ecr create-repository --repository-name flask-app --region <REGION>
    
    그런 다음 ECR에서 아마존 콘솔 레지스트리를 볼 수 있습니다.

    저장소 이름을 클릭하면 이미지가 표시되지 않습니다.이것이 바로 우리의 기대다.

    ECR에 Docker 이미지 표시 및 밀어넣기


    <IMAGE_TAG>을 사용하여 태그latest가 있는 이미지를 만들 수 있습니다.
    docker tag pythonapp <IMAGE_TAG>
    
    ECR 저장소로 이미지를 밀어넣습니다.
    docker push <IMAGE_TAG>
    
    ECR 저장소의 이미지를 보려면 다음과 같이 하십시오.

    ECS


    이제 Amazon Exchange Service(ECS)를 사용하여 서비스를 배포합니다.
    AWS 관리 콘솔에서 검색ecs:

    클릭하여 시작:

    사용자 지정 을 클릭한 다음 구성 을 클릭합니다.

    이것은 그룹에서 실행할 용기 작업을 설정할 수 있도록 합니다.
    선택:
  • 용기 이름: 임의
  • 이미지: 최신 <IMAGE_TAG>
  • 포트: 80
  • 그런 다음 고급 구성에 docker-compose.yml 파일에 정의된 환경 변수를 추가합니다.


    이 값의 경우 다음을 사용합니다.
  • 키: <DATABASE_URL>
  • 값: postgresql://postgres:postgres@<RDS_INSTANCE_IP>:5432/postgres
  • 데이터베이스 항목을 실례<RDS_INSTANCE_IP>로 바꾸는 것을 기억하세요.TablePlus 또는 RDS에서 찾을 수 있습니다<RDS_INSTANCE_IP>.
    나머지 부분은 그대로 둔 다음 "업데이트"를 누르십시오.

    작업 정의에서 다음을 클릭합니다.

    마찬가지로 서비스에서 다음을 클릭합니다.

    클러스터 구성에서 클러스터 이름을 정의하고 다음을 클릭합니다.

    준비 다 됐어!만들기를 클릭합니다.

    만들려면 몇 분 정도 걸립니다.모든 체크 표시가 녹색으로 변경되면 서비스 보기 를 클릭합니다.

    작업을 클릭하고 해당 공용 IP를 복제합니다.우리는 응용 프로그램을 테스트하기 위해 그것을 필요로 한다.

    우체부와 Tableplus로 테스트


    우선 모든 물건을 꺼내자.만약 우리가 빈 목록 [] 을 얻게 된다면, 이것은 시계가 이미 만들어졌고, 우리는 어떤 항목도 얻지 못했다는 것을 의미한다.이것은 우리가 바라는 것이다. 왜냐하면 우리는 단지 데이터가 없는 표를 만들었을 뿐이기 때문이다.
    엔드포인트에서 요청 받기: /items
    새 프로젝트를 만들려면 끝점/items에서 POST 요청을 실행합니다.

    두 항목을 더 만들겠습니다.


    단일 항목을 가져오려면 get 요청을 보내서 검색할 항목 id/items 경로의 끝에 추가하십시오.예를 들어 /items/2 id=2의 항목을 검색합니다.
    (이 요청의 주체를 개의치 마라. 그것은 지난post 요청의 주체이다.)

    기존 항목을 업데이트하려면 PUT 요청을 실행합니다.url에서 수정할 항목의 id를 지정하고 요청 본문에 새 항목의 id를 지정합니다.

    만약 우리가 다시 프로젝트 2를 얻으려고 시도한다면, 업데이트된 프로젝트를 받을 것입니다.

    마지막으로 기존 항목을 삭제합니다. 예를 들어 id=3의 항목을 삭제합니다. 경로/items/3에서 삭제 작업을 수행할 수 있습니다.

    만약 우리가 다시 모든 항목을 얻으려고 시도한다면, 우리는 단지 두 개만 얻을 수 있다.

    TablePlus를 사용한 최종 테스트:

    GitHub 저장소(지점: 로컬 박사 후): https://github.com/tinystacks/aws-docker-templates-flask.git
    TinyStacks를 사용하면 추상적이거나 비천한 DevOps 작업 없이 팀을 더욱 빠르게 구축할 수 있습니다.
    수표TinyStacks
    비디오 버전:

    좋은 웹페이지 즐겨찾기