2017-10-23 1 views
2

또한 여러 관련 기능에 대한 요구 사항을 고려할 때 GCF 솔루션을 배포하는 효율적인 방법은 무엇입니까? (그리고 각 배포 단계는 매우 느립니다. 10 초)Google Cloud 기능은 단일 배포 패키지에서 여러 기능을 지원합니까?

이 질문은 간단한 질문 인 것처럼 들리지만 정확히 무엇을 해야할지 명확한 답변을 찾을 수 없습니다. 나는 몇 가지 관련 답변을 읽었으나 그 내용은 분명하지 않습니다.

구글 문서는 여기에 "하나 개 이상의 기능"수출 언급 : https://cloud.google.com/functions/docs/writing/

을하지만 배포 시간을 때, CLI 명령 만 명시 적으로 지금까지 내가 말할 수있는 하나 개의 함수를 배포 : gcloud beta functions deploy OneFunctionNameHere합니다.

무엇이 누락 되었습니까? 하나의 index.js에 여러 관련 기능이 있다면 확실하게 몇 가지 느린 gcloud beta functions deploy 명령이 필요하지 않습니까? (아니면 내가 하나 하나 ??? 독립적 인보고를 얻을 그렇게) 내가 해답이 될 수있는 이들 중 하나를 추측하고있어

,하지만 난 정말 모르겠어요 :

  1. 푸시/로컬 소스에서 GCP 버킷으로 한 번 배포 한 다음 다른 버킷에서 배포합니다. (더 빨리?)
  2. ".../MyFunction/SomeSubFunction"과 같은 액세스 URL을 확장하고 request.params를 사용하여 올바른 응답 생성 코드로 라우팅합니다. (거기에 대한 NPM 패키지는 ...입니다)
  3. 실행 배수에 배포 병렬 그래서 '배포 시간은'어떤 지혜

감사합니다 (대역폭이 ... 가능) 큰 문제가 아니라고 더 나은 솔루션입니다.

+0

해결 방법을 찾아 주시겠습니까? –

+0

@SamikR - 아니요. 유일한 솔루션 (표준 솔루션?)은 필자가 지적한대로 URL을 확장하는 것입니다. request.params를 검사 한 다음 스위치/if-then을 사용하여 필요한 함수에 연결하는 몇 줄의 코드가 있습니다. . 기억을 돕기 위해 몇 가지 npm 패키지가 있습니다. 그러나 자신 만의 롤링은 충분히 쉽습니다. – spechter

답변

0

하나의 배포 또는 단일 index.js 파일에 여러 개의 클라우드 기능을 포함 할 수 있습니다.

하는 index.js

const functions = require('firebase-functions') 
const admin = require('firebase-admin') 
admin.initializeApp(functions.config().firebase) 

exports.sendNotification = functions.https.onRequest((req, res) => { 
    res.end() 
}) 

exports.saveToken = functions.https.onRequest((req, res) => { 
    res.end() 
}) 

전화

https://us-central1-projectname.cloudfunctions.net/saveToken

https://us-central1-projectname.cloudfunctions.net/sendNotification

이 기능을 배포하려면 POST 요청과 기능이

를 실행
npm run deploy 

별도의 함수로 그들을 볼 클라우드 기능 콘솔에서 package.json

{ 
    "name": "functions", 
    "version": "1.0.0", 
    "main": "index.js", 
    "scripts": { 
    "deploy": "firebase deploy --only functions" 
    }, 
    "author": "", 
    "license": "ISC", 
    "dependencies": { 
    "firebase-admin": "^5.2.1", 
    "firebase-functions": "^0.6.3" 
    } 
} 

. 다양한 게시물에서 언급 한 바와 같이 -

enter image description here

+2

답해 주셔서 감사합니다. 귀하가 설명하는 것은 Fire Cloud 기능이지만 Google Cloud 기능은 아닙니다. 유사하지만, 그들은 다른 것들이며, 예를 들어 다른 가격 구조를 가지고 있습니다. Google Cloud 기능에 대한 정보를 원했습니다. 재미있는 점은 Firebase 기능이 여러 기능을 지원한다는 것입니다. – spechter

0

나는 구글의 클라우드에 대해 하나의 명령을 사용하여 여러 기능을 배포 할 수 있다고 생각하지 않습니다.

sed -n 's/exports\.\([a-zA-Z]*\).*/\1/p' index.js | xargs -I {} gcloud beta functions deploy {} --trigger-http 

이를 사용하는 경우, 특히주의 sed -n 's/exports\.\([a-zA-Z]*\).*/\1/p' index.js의 출력을 내보낼 기능의 이름 만 있는지 확인 : 일을 쉽게하기 위해, 나는 다음과 같은 명령을 사용하여 끝났다.

관련 문제