BigQuery PHP の REST と auth フックにプロキシハンドラを与える
google/cloud-bigquery 1.39.3 では、両方の経路が中間処理を必要とするとき、同じ callable を httpHandler と authHttpHandler に渡します。
google/cloud-bigquery 1.39.3 の REST 配信とトークン要求のフックは、プロキシを認識する PSR リクエストハンドラを共有できます:
$proxy = 'http://proxy.example:8080';
$http = new \GuzzleHttp\Client();
$send = static function (
\Psr\Http\Message\RequestInterface $request,
array $options = []
) use ($http, $proxy) {
$options['proxy'] = $proxy;
return $http->send($request, $options);
};
$bigQuery = new \Google\Cloud\BigQuery\BigQueryClient([
'projectId' => $projectId,
'httpHandler' => $send,
'authHttpHandler' => $send,
]);この callable は各リクエストで Guzzle の proxy オプションを設定し、HTTP プロキシ一覧から選んだ公開 HTTP エンドポイントも対象になります。コンストラクタはこの callable を httpHandler と authHttpHandler の両方に渡します。これにより REST 配信と、このフックを使う認証リクエストが対象になります。サポートされている認証情報の設定は維持してください。別のトランスポートを持つ認証情報では、そのトランスポートも確認する必要があります。
必要な直接の例外は Guzzle のサポートされるプロキシ設定で追加します。BigQuery API のエンドポイントはサービスの宛先として維持してください。apiEndpoint にプロキシのアドレスを入れると、この経路を設定するのではなく別のサービスが選ばれます。
これらは BigQueryClient のコンストラクタオプションです。独立した gRPC チャネルを設定するものではなく、別ライブラリの Google API PHP Client における Google\Client の setHttpClient インターフェースにも対応しません。