首页 文章

从 Cloud 功能部署Google Cloud功能

提问于
浏览
0

Solved/invalid - see below

我正在尝试按需从Google Cloud 功能部署Google Cloud 功能 .

但是,无论我尝试什么,我都会获得403 Forbidden:

请求https://cloudfunctions.googleapis.com/v1/projects/MY_PROJECT/locations/MY_REGION/functions?alt=json时返回"The caller does not have permission"的HttpError 403

我最终授予 Cloud 功能服务帐户项目所有者角色,以确保它可以做任何事情,但我仍然得到相同的错误 .

这是有意限制的(例如避免使用叉炸弹或其他东西)或者我做错了什么?

有没有人能够做到这一点?

为了记录:我使用我自己的帐户在本地运行相同的(Python)函数,然后它将完美地部署新的 Cloud 功能,因此代码本身似乎没问题 .

Update

我正在尝试部署 Cloud 功能的代码片段:

cf_client = discovery.build('cloudfunctions', 'v1')

location = "projects/{MYPROJECT}/locations/europe-west1"

request = {
    "name": "projects/{MYPROJECT}/locations/europe-west1/functions/hopper--2376cd24d318cd2d42f000f4f1c31a8f", 
    "description": "Hopper hopper--2376cd24d318cd2d42f000f4f1c31a8f", 
    "entryPoint": "pubsub_trigger", 
    "runtime": "python37", 
    "availableMemoryMb": 256, 
    "timeout": "60s", 
    "sourceArchiveUrl": "gs://staging.{MYPROJECT}.appspot.com/deployment/hopper.zip", 
    "eventTrigger": {
        "eventType": "providers/cloud.pubsub/eventTypes/topic.publish",
        "resource": "projects/{MYPROJECT}/topics/hopper-test-input"
    },
    "environmentVariables": {
        "HOPPER_ID": "hopper--2376cd24d318cd2d42f000f4f1c31a8f"
    }
}

response = cf_client.projects() \
    .locations() \
    .functions() \
    .create(location=location, body=req) \
    .execute()

Update

我觉得这样的白痴......事实证明,由于某种原因,我将主要功能部署在一个不同的项目中,然后是我赋予权限的项目 . 难怪它不起作用 .

1 回答

  • 0

    正确的答案应该是:检查一切确实在运行的方式/预期 . 一切都配置正确,在CF中部署CF不是问题 . 由于在gcloud实用程序上设置了不同的默认项目,项目不正确 .

相关问题