为 Google Cloud Functions 创建开发和暂存环境
Creating a development and staging environments for Google Cloud Functions
我正在做一个有开发环境和暂存环境的项目,因此每个环境都有自己的服务器、数据库,每个环境也应该有自己的 Pub/Subs 和 Cloud Functions。
我有一个名为 jsonToCsv
的云函数,它导出一个具有相同名称 jsonToCsv
的函数,我想部署相同的代码但使用不同的名称,即 jsonToCsv_staging
,但是,GCloud 不允许我导出名称不同于云函数
的函数
ERROR: (gcloud.beta.functions.deploy) OperationError: code=3,
message=Function load error: Node.js module defined by file index.js is
expected to export function named jsonToCsv-staging
来自 AWS 背景,我认为我可以调用不同版本的 Cloud Function(即最新的是开发版本,我可以用 staging
标记一个版本另一个 production
) 但我找不到办法做到这一点。
我能想到的解决此问题的一种方法是使用具有相同名称但不同 Pub/Subs 的相同函数或将传递环境变量的触发器。如果开发人员想在不影响暂存的情况下部署一些开发代码,那将行不通。你对此有何看法?这种情况下的最佳做法是什么?
在 Google Cloud Platform(以及 Firebase)中隔离环境的推荐方法是为每个环境创建不同的项目。
GCP 项目中的环境 multi-tenancy 是个坏主意,因为它使您的生产数据和代码相对容易损坏到开发实践的日常工作中。
通过documentation可以看出,除非指定--entry-point
选项,否则您的模块必须导出同名函数。
在命令中添加 --entry-point
将允许您为具有相同导出功能的 Cloud Functions 使用不同的名称。
您的命令应如下所示:
gcloud beta functions deploy jsonToCsv_staging --entry-point jsonToCsv --trigger-resource <my-topic> --trigger-event google.pubsub.topic.publish
我正在做一个有开发环境和暂存环境的项目,因此每个环境都有自己的服务器、数据库,每个环境也应该有自己的 Pub/Subs 和 Cloud Functions。
我有一个名为 jsonToCsv
的云函数,它导出一个具有相同名称 jsonToCsv
的函数,我想部署相同的代码但使用不同的名称,即 jsonToCsv_staging
,但是,GCloud 不允许我导出名称不同于云函数
ERROR: (gcloud.beta.functions.deploy) OperationError: code=3,
message=Function load error: Node.js module defined by file index.js is
expected to export function named jsonToCsv-staging
来自 AWS 背景,我认为我可以调用不同版本的 Cloud Function(即最新的是开发版本,我可以用 staging
标记一个版本另一个 production
) 但我找不到办法做到这一点。
我能想到的解决此问题的一种方法是使用具有相同名称但不同 Pub/Subs 的相同函数或将传递环境变量的触发器。如果开发人员想在不影响暂存的情况下部署一些开发代码,那将行不通。你对此有何看法?这种情况下的最佳做法是什么?
在 Google Cloud Platform(以及 Firebase)中隔离环境的推荐方法是为每个环境创建不同的项目。
GCP 项目中的环境 multi-tenancy 是个坏主意,因为它使您的生产数据和代码相对容易损坏到开发实践的日常工作中。
通过documentation可以看出,除非指定--entry-point
选项,否则您的模块必须导出同名函数。
在命令中添加 --entry-point
将允许您为具有相同导出功能的 Cloud Functions 使用不同的名称。
您的命令应如下所示:
gcloud beta functions deploy jsonToCsv_staging --entry-point jsonToCsv --trigger-resource <my-topic> --trigger-event google.pubsub.topic.publish