Облачная оболочка Google и облачное хранилище — отказано в разрешении на доступ к адресу GCS

#shell #google-app-engine #nlp #google-cloud-storage

#оболочка #google-app-engine #nlp #google-облачное хранилище

Вопрос:

Я пытаюсь настроить API обработки естественного языка Google, используя облачную оболочку Google и облачное хранилище.

Моя проблема в том, что я продолжаю получать эту ошибку, когда указываю код на конкретный объект корзины:

 {
  "error": {
    "code": 401,
    "message": "Permission to access the GCS address is denied.",
    "status": "UNAUTHENTICATED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "document.gcs_content_uri",
            "description": "Permission to access the GCS address is denied."
  

Это код, который я использую:

 curl -s -X POST -H "Content-Type: application/json" --data-binary @requestb.json https://language.googleapis.com/v1beta1/documents:analyzeEntities?key=${NL_
API_KEY}
  

Я владелец облачной учетной записи и имею доступ ко всем проектам. Я чего-то здесь не понимаю?

Вызов API отлично работает с облачной оболочкой, если я устанавливаю для объекта значение «Общедоступный».

Любая помощь по этому вопросу была бы очень признательна!

Спасибо

Ответ №1:

Проблема решена!

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

 gcloud auth activate-service-account --key-file=service-account-key-file
  

Я сделал это, загрузив ключ из области учетных данных, а затем повторно загрузив его в командную строку облачной оболочки Google (в ней есть хороший редактор кода под названием ‘Orion’, который позволяет просматривать и редактировать каждый загруженный файл).

Затем я перешел к шагу 3 здесь

Я изменил код на шаге 4, чтобы отправить API объекту в корзине в облачном хранилище Google, вот так:

 curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer xxxxxxxxxxxauth-tokenxxxxxxxxxxxxxx" --data-binary @requestb.json https://language.googleapis.com/v1beta1/documents:analyzeEntities?key=${NL_API_KEY}
  

Приведенный выше «@requestb.json» — это еще один текстовый файл, который я загрузил в облачную оболочку Google, который содержал следующую информацию в формате json:

 {
  "document":{
    "type":"PLAIN_TEXT",
    "gcsContentUri": "gs://<bucket-name>/<object-name>"
  }
}
  

И это сработало!

Моим объектом был текстовый файл, содержащий выборочную статью BBC News, и он вернул этот ответ:

 {
  "entities": [
    {
      "name": "Mosul",
      "type": "LOCATION",
      "metadata": {
        "wikipedia_url": "http://en.wikipedia.org/wiki/Mosul"
      },
      "salience": 0.16690882,
      "mentions": [
        {
          "text": {
            "content": "ir Mo",
            "beginOffset": -1
          }
        },
        {
          "text": {
            "content": "ar Mo",
            "beginOffset": -1
          }
        },
        {
          "text": {
            "content": "of Mo",
            "beginOffset": -1
          }
        },
        {
          "text": {
            "content": "to Mo",
            "beginOffset": -1
          }
        }
      ]
    },
    {
      "name": "US",
      "type": "LOCATION",
      "metadata": {
        "wikipedia_url": "http://en.wikipedia.org/wiki/United_States"
      },
      "salience": 0.058336213,
      "mentions": [
        {
          "text": {
            "content": "he",
            "beginOffset": -1
          }
        },
        {
          "text": {
            "content": "y,",
            "beginOffset": -1
          }
        }
      ]
    },
    {
      "name": "Iraqi",
      "type": "LOCATION",
      "metadata": {
        "wikipedia_url": "http://en.wikipedia.org/wiki/Iraq"
      },
      "salience": 0.0219927,
      "mentions": [
        {
          "text": {
            "content": "An Ir",
            "beginOffset": -1
          }
        },
        {
          "text": {
            "content": "ng Ir",
            "beginOffset": -1
          }
        },
        {
          "text": {
            "content": "h, I",
            "beginOffset": -1
          }
        }
      ]
    },
    {
      "name": "Qusay Hamid Kadhem",
      "type": "PERSON",
      "metadata": {},
      "salience": 0.01995722,
      "mentions": [
        {
          "text": {
            "content": "r, Qusay Hamid Kad",
            "beginOffset": -1
          }
        }
      ]
    },
    {
      "name": "Qaraqosh",
      "type": "LOCATION",
      "metadata": {
        "wikipedia_url": "http://en.wikipedia.org/wiki/Bakhdida"
      },
      "salience": 0.018237775,
      "mentions": [
        {
          "text": {
            "content": "of Qaraq",
            "beginOffset": -1
          }
        },
        {
          "text": {
            "content": ".rnQaraq",
            "beginOffset": -1
          }
        }
      ]
    },
    {
      "name": "AFP",
      "type": "ORGANIZATION",
      "metadata": {
        "wikipedia_url": "http://en.wikipedia.org/wiki/Agence_France-Presse"
      },
      "salience": 0.0049931784,
      "mentions": [
        {
          "text": {
            "content": "ld ",
            "beginOffset": -1
          }
        }
      ]
    },
    {
      "name": "IS",
      "type": "ORGANIZATION",
      "metadata": {
        "wikipedia_url": "http://en.wikipedia.org/wiki/Islamic_State_of_Iraq_and_the_Levant"
      },
        }
      "salience": 0.0046183467,
      "mentions": [
        {
          "text": {
            "content": "he",
            "beginOffset": -1
          }
        },
        {
          "text": {
            "content": "ut",
            "beginOffset": -1
          }
        }
      ]
    },
    {
      "name": "Reuters",
      "type": "ORGANIZATION",
      "metadata": {
        "wikipedia_url": "http://en.wikipedia.org/wiki/Reuters"
      },
      "salience": 0.0041254032,
      "mentions": [
        {
          "text": {
            "content": ".rnReut",
            "beginOffset": -1
          }
        }
      ]
    },
    {
      "name": "Christian",
      "type": "PERSON",
      "metadata": {
        "wikipedia_url": "http://en.wikipedia.org/wiki/Christian"
      },
      "salience": 0.0016911785,
      "mentions": [
        {
          "text": {
            "content": "st Christ",
            "beginOffset": -1
          }
        }
      ]
    }
  ],
  "language": "en"
  

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