小编Nic*_*Dao的帖子

委托人(用户或服务帐户)缺少资源的 IAM 权限“cloudtasks.tasks.create”

当我尝试将任务添加到队列时,会抛出上述错误消息。这是我的设置和有关此问题的信息:

  • 项目编号:my-project
  • 服务帐户 ID:my-service-account
  • 任务队列名称:my-queue
  • 任务队列位置:asia-northeast1(Cloud Task 目前处于测试阶段的少数位置之一)

另外,让我们确认以上所有内容都存在并且正在运行。

当我通过发布到来检查我的服务帐户角色时https://cloudresourcemanager.googleapis.com/v1/projects/my-project:getIamPolicy

我收到类似于以下内容的回复:

{
    "status": 200,
    "data":
    {
        "version": 1,
        "etag": "BwV6nNWJg4E=",
        "bindings": [
        {
            "role": "roles/cloudtasks.admin",
            "members": [
                "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
            ]
        },
        {
            "role": "roles/cloudtasks.enqueuer",
            "members": [
                "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
            ]
        }]
    }
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,my-service-account有以下2个角色:

  1. 角色/cloudtasks.admin
  2. 角色/cloudtasks.enqueuer

这两个角色都具有cloudtasks.tasks.create内置的权限。

当我尝试使用以下命令将任务添加到云任务时:

POST https://cloudtasks.googleapis.com/v2beta3/projects/my-project/locations/asia-northeast1/queues/my-queue/tasks+ 任务负载

我收到以下错误消息:

{
    "status": 403,
    "data":
    {
        "error":
        {
            "code": 403,
            "message": "The principal (user or service account) lacks IAM permission \"cloudtasks.tasks.create\" …
Run Code Online (Sandbox Code Playgroud)

google-api google-cloud-platform google-iam

9
推荐指数
1
解决办法
6906
查看次数

Clojure core.async把!与阻止

我在这里读到了关于core.async这篇伟大的文章:

http://www.core-async.info/reference/primitives

我很难理解put的内部机制!去.我明白那个:

  1. 放!是异步的,可以接受回调.这在简单的场景中效果很好,但你可以在回调地狱中结束.
  2. go修复了回调地狱,并允许以同步方式编写异步代码.
  3. go利用轻量级线程池,并利用停车来实现并发.
  4. go使用有限状态机

我不明白:

  1. 怎么放!实现异步?它是否也使用线程池?
  2. 放!还用停车?
  3. 有限状态机在go块中的作用是什么?它是什么使停车?
  4. 我应该总是尝试使用put!而不是因为它更便宜?在那种情况下,这是否意味着放!实现与go完全相同的并发性,只有当我想推理复杂的异步代码时才会使用它?

非常感谢你揭开那些神秘面纱.

clojure core.async

6
推荐指数
1
解决办法
1565
查看次数

无法使用 Web API 在 Google App Engine 中创建应用程序。错误:409 - 此应用程序已存在且无法重新创建

我正在尝试使用 Google Cloud Web API 在 App Engine 中创建应用程序,如官方文档 ( https://cloud.google.com/appengine/docs/admin-api/creating-an-application ) 中所述。我用:

node-fetch当我使用如下方式执行 HTTP POST 时:

fetch('https://appengine.googleapis.com/v1/apps', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${token}`
    },
    body: JSON.stringify({ 
        id: projectId,
        locationId:'australia-southeast1'
    })
})
Run Code Online (Sandbox Code Playgroud)

然后我收到此错误消息:

{
 "code": 409,
 "message": "This application already exists and cannot be re-created.",
 "status": "ALREADY_EXISTS"
}
Run Code Online (Sandbox Code Playgroud)

这真的很奇怪,因为我的项目 ID 还没有定义 App Engine。

有谁知道这里发生了什么事?

google-app-engine google-apis-explorer

5
推荐指数
1
解决办法
2739
查看次数