создание Google Cloud Task в функции firebase - PullRequest
0 голосов
/ 05 августа 2020

Я получаю сообщение об ошибке в журнале функций консоли firebase при вызове HTTP-функции firebase, которая пытается создать задачу.

Ошибка: 7 PERMISSION_DENIED: участник (пользователь или учетная запись службы) не хватает разрешения IAM "cloudtasks.tasks.create" для ресурса "projects / my-gcloud-project-id / locations / us-central1 / queues / myqueuename" (или ресурс может не существовать).

* 1006. мне как-то нужно настроить разрешения?

Мой код:



const functions = require('firebase-functions');
const { CloudTasksClient } = require('@google-cloud/tasks')

const projectId = 'my-firebase-project-id';
const location = 'us-central1'
const queue = 'myqueuename'

exports.onFormSubmit = functions.https.onRequest(async (req, res) => {
  const tasksClient = new CloudTasksClient()
  const queuePath = tasksClient.queuePath('my-gcloud-project-id', location, queue);

  const url = `https://google.com/` // edited for stack overflow
  const delaySeconds = 5;
  console.log('delaying for ', delaySeconds, ' seconds');

  const task = {
      httpRequest: {
          httpMethod: 'POST',
          url,
          body: '',
          headers: {
              'Content-Type': 'application/json',
          },
      },
      scheduleTime: {
          seconds: delaySeconds
      }
  }

  const [ response ] = await tasksClient.createTask({ parent: queuePath, task })

  console.log('task name', response.name);
});

1 Ответ

1 голос
/ 05 августа 2020

Чтобы создать задачу Google, вам необходимо добавить правильные разрешения в IAM, в этом случае, когда отображается сообщение об ошибке, вы должны добавить разрешение cloudtasks.tasks.create в учетную запись службы, которая вызывает функцию облака.

Это можно сделать, войдя в облачную консоль, а затем в IAM, найдите учетную запись службы обычно это что-то вроде service-project-number@gcf-admin-robot.iam.gserviceaccount.com ( update : это было my-project-id@appspot.gserviceaccount.com) и добавьте необходимое разрешение, если у вас есть разрешения на основе ролей, Cloud Tasks Enqueuer должно быть достаточно для создания задач.

...