python×Cloud Functions×Firestore로 API를 손쉽게 만들어보세요. Pt3 배포편

개요



매번 GCP 콘솔에서 배포하는 것도 번거롭기 때문에 로컬에서 명령으로 함수를 배포 할 수 있습니다.
  • 전회까지의 기사는 이쪽
  • python×Cloud Functions×Firestore로 API를 쉽게 만들어보세요. Pt1
  • python×Cloud Functions×Firestore로 API를 쉽게 만들어 보는 Pt2 테스트편(요약)
  • python×Cloud Functions×Firestore로 API를 쉽게 만들어 보는 Pt2 테스트편(상세)


  • 개발 환경


  • 개발 환경
  • MacOS
  • python3.7
  • pycharm


  • gcloud 도구 설치



    로컬에서 배포하려면 gcloud 명령을 사용할 수 있어야 합니다. Mac의 경우 brew로 설치합니다.
    $ brew cask install google-cloud-sdk
    

    설치가 끝나면 init로 SDK를 초기화합니다. 아래의 명령을 실행하면 google 계정과 프로젝트 ID가 질문되므로 적절하게 대답하면 초기화가 완료됩니다.
    $ gcloud init
    

    배포 준비



    소스 준비



    로컬에서 배포하는 경우 대상 소스 파일의 이름은 main.py여야 합니다. 지금까지 만든 소스를 다른 파일 이름으로 만들거나 여러 함수를 배포하기 위해 main.py에 추가하는 것은 조금 유감스러운 느낌입니다.

    그래서 파일을 나누어 소스 관리를 편하게 합니다. 다음 기사가 매우 도움이됩니다.
    Cloud Functions (Python)로 코드 파일 분할

    기사와 같이 외부 소스에서 배포할 함수를 main.py로 가져옵니다.

    main.py
    from functions.getFilteredUser import get_filtered_user
    

    소스 내용은 Pt1 및 Pt2 기사를 참조하십시오.
    다른 함수를 배포하고 싶다면 아래와 같이 import 문을 늘리는 것만 OK입니다.

    main.py
    from functions.getFilteredUser import get_filtered_user
    from functions.getUser import get_user  # 追加関数
    

    requirements.txt 준비



    콘솔에서 배포할 때와 마찬가지로 외부 패키지를 지정해야 합니다. 로컬에서 main.py와 동일한 경로에 requirements.txt를 만듭니다.

    requirements.txt
    # Function dependencies, for example:
    # package>=version
    google-cloud-firestore==1.2.0
    

    폴더의 최종 형태



    다음과 같은 폴더 구성으로 되어 있다고 생각합니다. ".auth"는 배포 시 필요하지 않습니다.


    배포



    그래서 드디어 본제의 배포입니다. venv 등 main.py 가 있는 디렉토리에서 다음 명령을 실행합니다.
    $ gcloud functions deploy get_filtered_user --runtime python37 --trigger-http
    

    명령은 main.py에 포함된 함수를 get_filtered_user라는 이름으로 배포합니다. 2분 정도 기다리면 배포가 완료됩니다.

    deploy 명령 결과
    Deploying function (may take a while - up to 2 minutes)...done.                                                                                                             
    availableMemoryMb: 256
    entryPoint: get_filtered_user
    httpsTrigger:
      url: https://<リージョン>-<プロジェクトID>.cloudfunctions.net/get_filtered_user
    labels:
      deployment-tool: cli-gcloud
    name: projects/<プロジェクトID>/locations/<リージョン>/functions/get_filtered_user
    runtime: python37
    (以下省略)
    

    엔드포인트 URL은 지정이 없으면 함수 이름과 동일합니다. 변경하거나 main.py의 다른 함수를 배포하려면 --entry-point 옵션을 사용하여 배포합니다.
    $ gcloud functions deploy get-user --runtime python37 --trigger-http --entry-point get_user
    

    이 명령은 main.py 에 import한 get_user 함수를 배치합니다. 또한 URL은 get-user입니다.

    그 외 옵션의 사용법은 공식적으로 쓰여져 있습니다.
    Deploying from Your Local Machine

    결론



    Pt1~Pt3를 통해 GCP, Firebase를 사용하면 로컬에서 만든 함수를 쉽게 API로 배포할 수 있습니다. Hackason 등으로 간단한 어플리케이션을 만들고 싶은 경우에는 편리하다고 생각하므로, 꼭 시험해 보세요.

    참고


  • Google Cloud Functions에서 Python을 사용해 보았습니다 (Beta 사용)
  • Mac에서 Cloud Machine Learning Engine 사용하기
  • Cloud Functions (Python)로 코드 파일 분할
  • 좋은 웹페이지 즐겨찾기