2016-12-17 10 views
4

Google Cloud機能のドキュメントは少し曖昧です - 特定のディレクトリであっても、index.jsに含まれる単一の機能をどのように配備するかを理解していますが、同じリポジトリ内にありますか?複数のGoogleクラウド機能を同じリポジトリから展開する

AWSラムダを使用すると、特定のファイルや機能名を指定することができます:

/my/path/my-file.myHandler 

ラムダも、実行に必要なファイルのみを含むzipファイルを展開することができますオプションの推移NPMの依存関係のすべてを省略し、そのリソース。 node-modules/**を含む一部のライブラリ(Oracle DBなど)では、デプロイメント時間が大幅に長くなり、ストレージの制限を超えてしまう可能性があります(AWS Lambdaの場合)。

私はGoogleクラウド機能の展開に管理できるよう最善です:

$ gcloud alpha functions deploy my-function \ --trigger-http --source-url https://github.com/user-name/my-repo.git \ --source-branch master \ --source-path lib/foo/bar --entry-point myHandler

...しかし、私の理解では、それはfunction myHandler(req, res) {}が含まれているlib/foo/bar/index.jsを展開していることである...とすべての依存関係が同じで連結ファイル?それは全く意味をなさない - 私が言ったように、ドキュメンテーションは少し曖昧です。

答えて

2

現在のデプロイメントツールは簡単な方法で動作します。ディレクトリを圧縮してアップロードします。これは、デプロイメントパッケージに含まれたくない場合は、(現在)node_modulesを移動または削除する必要があることを意味します。ラムダのように、GCFは依存関係を自動的に解決することに注意してください。

展開については、以下を参照してください。具体的にgcloud alpha functions deploy --help

--entry-point=ENTRY_POINT 
     The name of the function (as defined in source code) that will be 
     executed. 

あなたは一度ファイルをアップロードする--sourceフラグを使用することを選ぶかもしれません、そして展開関数はアップロードできません。また、同じ方法でレポから機能を引き出すようにGoogleに指示することもできます。 1つのコマンドで関数のリストを展開するのに役立つ、簡単なデプロイメントスクリプトを書くことをお勧めします。 FYI gcloud` `でコードをアップロードの動作が今変更されました

+2

。 'node_modules'はデフォルトではもはやアップロードされません。 –

+0

は、我々は複数の関数に同じ 'エントリーpoint'を入れることはできますか? エントリポイントMain'のエントリポイントMain'と 'test2.jsとtest1.js'ような? – abdulbarik

関連する問題