Облачные задачи Google: местоположение 'europe-west1' не является допустимым местоположением - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь запустить задачу облачных задач Google с помощью облачной функции, но у меня возникает ошибка, когда любой регион, который я пытаюсь использовать, неверен.

Код базовый c. Все хорошо, пока не остановится из-за следующей ошибки:

Ошибка: {"code": 3, "message": "Местоположение ' europe-west1' не является допустимым местоположением . Используйте ListLocations для составления списка действительных местоположений. "," Details ": []}

Если я попытаюсь использовать, например, us-central1, он сообщит:

Ошибка: {"code": 3, "message": " Местоположение должно совпадать с europe-west1, поскольку приложение App Engine, связанное с этим проектом, находится в europe-west1 ", " подробнее ": []}

Я использую API облачных задач Google с Node.js для создания новой задачи:

const client = new CloudTasksClient({ fallback: true }); 
const parent = client.queuePath(PROJECT, 'europe-west1', QUEUE);

Полный пример можно найти здесь: https://github.com/googleapis/nodejs-tasks/blob/master/samples/createHttpTaskWithToken.js

URL-адрес называется: "" https://cloudtasks.googleapis.com: 443 / $ rpc / google.cloud.tasks.v2beta3.CloudTasks / CreateTask "

Если я запускаю команду списка местоположений, это вывод:

$ gcloud tasks locations list
europe-west1    projects/[project-id]/locations/europe-west1

Редактировать: Работа с API REST (https://cloud.google.com/tasks/docs/reference/rest/v2beta3/projects.locations.queues.tasks/create) с той же конфигурацией работает. Это может быть ошибка в клиенте?

I a Я действительно не уверен, что не так с моей настройкой.

Не уверен, какая информация будет полезна для отладки, поэтому заранее извиняюсь, если информации недостаточно.

1 Ответ

0 голосов
/ 30 марта 2020

Я понял, какой пример, который вы используете, относится к средам, не относящимся к функциям App Engine / Cloud, попробуйте простой пример, который находится на странице npm .

Пожалуйста, отметьте ваш пакет. json что вы определяете последнюю версию библиотеки google-cloud / tasks, на данный момент это 1.9.0

Вам не нужно использовать токен Ouath в App Engine / Cloud Функции среды, потому что уже настроены с учетной записью службы.

// Imports the Google Cloud Tasks library.
  const {CloudTasksClient} = require('@google-cloud/tasks');

  // Instantiates a client.
  const client = new CloudTasksClient();

  // TODO(developer): Uncomment these lines and replace with your values.
  // const project = 'my-project-id';
  // const queue = 'my-appengine-queue';
  // const location = 'us-central1';
  // const payload = 'hello';

  // Construct the fully qualified queue name.
  const parent = client.queuePath(project, location, queue);

  const task = {
    appEngineHttpRequest: {
      httpMethod: 'POST',
      relativeUri: '/log_payload',
    },
  };

  if (payload) {
    task.appEngineHttpRequest.body = Buffer.from(payload).toString('base64');
  }

  if (inSeconds) {
    task.scheduleTime = {
      seconds: inSeconds + Date.now() / 1000,
    };
  }

  const request = {
    parent: parent,
    task: task,
  };

  console.log('Sending task:');
  console.log(task);
  // Send create task request.
  const [response] = await client.createTask(request);
  const name = response.name;
  console.log(`Created task ${name}`);
...