облачная платформа Google — PHP Google_Service_Dataflow не находит файл в корзине

Я столкнулся с проблемой, используя googleapis/google-api-php-client библиотека, в частности, Служба потока данных, которую я не могу решить.

Когда я пытаюсь использовать библиотеку, я настраиваю запрос следующим образом:

$this->client = new \Google_Client();
$this->client->setAuthConfig(config_path('google-service-account.json'));
$this->client->setIncludeGrantedScopes(true);
$this->client->addScope(\Google_Service_Dataflow::CLOUD_PLATFORM);

$body = [
"gcsPath" => "gs://{$this->bucket}/{$this->template}",
"location" => "us-central1",
];

$parameters = new \Google_Service_Dataflow_LaunchTemplateParameters;
$parameters->setJobName($this->jobname);
$parameters->setParameters($body);

$service = new \Google_Service_Dataflow($this->client);
$request = $service->projects_templates->launch($this->project, $parameters);

И я получаю следующую ошибку:

{
"error": {
"code": 400,
"message": "(11f8b78933fc59c3): Bad file name: , expected
'gs://\u003cbucket\u003e/\u003cpath\u003e'",
"errors": [
{
"message": "(11f8b78933fc59c3): Bad file name: , expected
'gs://\u003cbucket\u003e/\u003cpath\u003e'",
"domain": "global",
"reason": "badRequest"}
],
"status": "INVALID_ARGUMENT"}
}

Кажется, что путь поврежден по пути, я проверил, и это нормально, пока не создан экземпляр объекта Guzzle для отправки запроса внутри библиотеки.

Я довольно потерян в этой точке, поэтому любые предложения или подсказки приветствуются.

Заранее спасибо.

0

Решение

нет gcsPath указывается в параметрах запроса для запроса, созданного SDK.

Это потому, что gcsPath установлен как опция для Google_Service_Dataflow_LaunchTemplateParameters,

Документально подтверждено, что параметры запроса могут быть заданы как необязательные параметры.
(Увидеть https://github.com/googleapis/google-api-php-client-services/blob/v0.81/src/Google/Service/Dataflow/Resource/ProjectsTemplates.php#L73.)

$opt_params = [
"gcsPath" => "gs://{$this->bucket}/{$this->template}",
"location" => "us-central1",
];

$template_params = [
// Keep template params here.
];

$launch_params = new \Google_Service_Dataflow_LaunchTemplateParameters;
$launch_params->setJobName($this->jobname);
$parameters->setParameters($template_params);

$service = new \Google_Service_Dataflow($this->client);
$request = $service->projects_templates->launch($this->project, $parameters, $opt_params);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]