无服务器 GCP 功能部署
Serverless GCP Function deployment
我正在尝试使用无服务器节点模块部署 GCP Cloud Function。虽然我已按照网站上的说明进行操作,但我仍然面临以下错误。
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Injecting required Python packages to package...
Serverless: Compiling function "ProductVersion"...
Serverless: Uploading artifacts...
Serverless: Artifacts successfully uploaded...
Serverless: Updating deployment...
Serverless: Checking deployment update progress...
.
Error ---------------------------------------------------
Error: Deployment failed: RESOURCE_ERROR
{"ResourceType":"gcp-types/cloudfunctions-v1:projects.locations.functions","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Permission 'cloudfunctions.functions.create' denied on resource 'projects/123456/locations/us-central1/functions/demeter-dev-ProductVersion' (or resource may not exist).","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudfunctions.googleapis.com/v1/projects/123456/locations/us-central1/functions","httpMethod":"POST"}}
at throwErrorIfDeploymentFails (/home/demo/workspace/demo/demeter/node_modules/serverless-google-cloudfunctions/shared/monitorDeployment.js:71:11)
at provider.request.then (/home/demo/workspace/demo/demeter/node_modules/serverless-google-cloudfunctions/shared/monitorDeployment.js:42:17)
at process._tickCallback (internal/process/next_tick.js:68:7)
我已经为我的 GCP 服务帐户配置了以下所需的权限,但它仍然无法正常工作。
1.Cloud 函数管理员
2.Cloud 函数开发者
3.Deployment 经理编辑
4.logging管理员
5.storage管理员
这是我的 serverless.yml 文件
service: demo
package:
exclude:
- node_modules/**
- .gitignore
- .git/**
- .idea/**
plugins:
- serverless-google-cloudfunctions
- serverless-python-requirements
- serverless-prune-plugin
provider:
name: google
runtime: python37
project: 123456
credentials: ./cred.json # path must be absolute
functions:
ProductVersion:
handler: get_pronto_app_version
events:
- http: path
谁能帮帮我
403 Forbidden 与正在部署该功能的用户或服务帐户有关。您至少需要 roles/cloudfunctions.developer 才能部署 Cloud Functions。
此外,您还必须为用户分配 Cloud Functions Runtime 服务帐户上的服务帐户用户 IAM 角色 (roles/iam.serviceAccountUser)。
参考:https://cloud.google.com/functions/docs/reference/iam/roles#additional-configuration
第三方应用程序使用ADC(应用程序默认凭证)。它可能是(按优先顺序):
- 服务帐户密钥文件,文件路径设置在
GOOGLE_APPLICATION_CREDENTIALS
环境变量中。
- 元数据服务器(仅适用于Google云环境)
- 众所周知的凭据存储位置。
1. 不是一个好的做法,我不推荐它。 2. 在你的工作站上是不可能的。 3. 最好:执行gcloud auth application-default login
创建凭据文件并重试。
它通过更改 serverless.yml 文件中的项目变量得到解决我提到的是数字 ID,但它期望我们在 GCP 仪表板上看到的项目的字母数字 ID。不知何故,它并没有抛出确切的错误,但在浪费了很多时间之后,它得到了解决。
project: myproject12
感谢大家回答这个问题。
我正在尝试使用无服务器节点模块部署 GCP Cloud Function。虽然我已按照网站上的说明进行操作,但我仍然面临以下错误。
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Injecting required Python packages to package...
Serverless: Compiling function "ProductVersion"...
Serverless: Uploading artifacts...
Serverless: Artifacts successfully uploaded...
Serverless: Updating deployment...
Serverless: Checking deployment update progress...
.
Error ---------------------------------------------------
Error: Deployment failed: RESOURCE_ERROR
{"ResourceType":"gcp-types/cloudfunctions-v1:projects.locations.functions","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Permission 'cloudfunctions.functions.create' denied on resource 'projects/123456/locations/us-central1/functions/demeter-dev-ProductVersion' (or resource may not exist).","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudfunctions.googleapis.com/v1/projects/123456/locations/us-central1/functions","httpMethod":"POST"}}
at throwErrorIfDeploymentFails (/home/demo/workspace/demo/demeter/node_modules/serverless-google-cloudfunctions/shared/monitorDeployment.js:71:11)
at provider.request.then (/home/demo/workspace/demo/demeter/node_modules/serverless-google-cloudfunctions/shared/monitorDeployment.js:42:17)
at process._tickCallback (internal/process/next_tick.js:68:7)
我已经为我的 GCP 服务帐户配置了以下所需的权限,但它仍然无法正常工作。
1.Cloud 函数管理员
2.Cloud 函数开发者
3.Deployment 经理编辑
4.logging管理员
5.storage管理员
这是我的 serverless.yml 文件
service: demo
package:
exclude:
- node_modules/**
- .gitignore
- .git/**
- .idea/**
plugins:
- serverless-google-cloudfunctions
- serverless-python-requirements
- serverless-prune-plugin
provider:
name: google
runtime: python37
project: 123456
credentials: ./cred.json # path must be absolute
functions:
ProductVersion:
handler: get_pronto_app_version
events:
- http: path
谁能帮帮我
403 Forbidden 与正在部署该功能的用户或服务帐户有关。您至少需要 roles/cloudfunctions.developer 才能部署 Cloud Functions。
此外,您还必须为用户分配 Cloud Functions Runtime 服务帐户上的服务帐户用户 IAM 角色 (roles/iam.serviceAccountUser)。
参考:https://cloud.google.com/functions/docs/reference/iam/roles#additional-configuration
第三方应用程序使用ADC(应用程序默认凭证)。它可能是(按优先顺序):
- 服务帐户密钥文件,文件路径设置在
GOOGLE_APPLICATION_CREDENTIALS
环境变量中。 - 元数据服务器(仅适用于Google云环境)
- 众所周知的凭据存储位置。
1. 不是一个好的做法,我不推荐它。 2. 在你的工作站上是不可能的。 3. 最好:执行gcloud auth application-default login
创建凭据文件并重试。
它通过更改 serverless.yml 文件中的项目变量得到解决我提到的是数字 ID,但它期望我们在 GCP 仪表板上看到的项目的字母数字 ID。不知何故,它并没有抛出确切的错误,但在浪费了很多时间之后,它得到了解决。
project: myproject12
感谢大家回答这个问题。