

[AWS の IAM ロールと GCP のサービスアカウントを紐付けて鍵なしでアクセスする方法](https://blog.yuu26.com/gcp-
identity-federation/)

上記サイトを参考に構築し、Node.jsでは正常に動作します。

PHPで実装をしていると、「Google\Cloud\Core\Exception\ServiceException」が発生します。  
場所は、「vendor/google/cloud/Core/src/RequestWrapper.php」の368行目とでます。

問題が見つかりません。

どのようにしたらアクセスできるかお力を貸していただけないでしょうか？

サービスアカウントのtypeは「external_account」となります。

PHP 7.3.28

[code]

    <?php
    require 'autoload.php';
    use Google\Cloud\BigQuery\BigQueryClient;
    use Google\Cloud\core\ExponentialBackoff;
    
    class BqService
    {
        public function excute()
        {
            try {
              $projectId = 'pj-id';
    
              $config = [
                'keyFilePath' => 'credentials.json',
                'projectId' => 'pj-id'
              ];
              $bigquery = new BigQueryClient($config);
              $query = "SELECT 'http://abc.com/' AS url";
              $queryJobConfig = $bigquery->queryConfig(
                  $query
              );
              $queryExcute = $bigquery->runQuery($queryJobConfig);
              foreach ($queryExcute as $row) {
                  var_dump($row);
              }
            } catch (Exception $e) {
                  var_dump($e)
            }
        }
    }
    
    
[/code]

上記のソースでエラーを取得しようとするも別の箇所でエラーが出てしまい、確認ができない状況でした。

[code]

    dev.ERROR 28e68f8: {
      "error": {
        "code": 401,
        "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
        "errors": [
          {
            "message": "Login Required.",
            "domain": "global",
            "reason": "required",
            "location": "Authorization",
            "locationType": "header"
          }
        ],
        "status": "UNAUTHENTICATED"
      }
    }
     {"exception":"[object] (Google\\Cloud\\Core\\Exception\\ServiceException(code: 401): {
      \"error\": {
        \"code\": 401,
        \"message\": \"Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.\",
        \"errors\": [
          {
            \"message\": \"Login Required.\",
            \"domain\": \"global\",
            \"reason\": \"required\",
            \"location\": \"Authorization\",
            \"locationType\": \"header\"
          }
        ],
        \"status\": \"UNAUTHENTICATED\"
      }
    }
     at vendor/google/cloud/Core/src/RequestWrapper.php:368)"}
    
[/code]


CC BY-SA 4.0
2021-07-01T05:48:21.343
77900
2021-07-01T10:24:56.653
2021-07-01T10:24:56.653
35484
35484
question
php laravel google-cloud google-bigquery
AWSからGCPへSTSを利用したアクセス時にNode.jsでは正常だが、PHPではエラーになる