Отказано в разрешении на ошибку API Dataproc Python - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь создать кластер dataproc через Python API, я использую аутентификацию с json fle, содержащим учетные данные.

    app = Flask(__name__)

    # Explicitly use service account credentials by specifying the private key
    # file.
    credentials_gcp  = 
    service_account.Credentials.from_service_account_file('credentials.json')

    client = dataproc_v1.ClusterControllerClient(credentials = credentials_gcp)
    clustertest = {
    "project_id": "xxxx",
    "cluster_name": "testcluster",
     "config": {}
     }

    # launch cluster on Dataproc
    @app.route('/cluster/<project_id>/<region>/<clustername>', methods=['POST'])
    def cluster(project_id, region, clustername):
        response = client.create_cluster(project_id, 'regions/europe-west1-b', 
        clustertest)
        response.add_done_callback(callback)
        result = response.metadata()
        return jsonify(result)

Я получаю следующую ошибку

google.api_core.exceptions.PermissionDenied: 403 Отказано в доступе для «location / region / europe-west1 '(или оно может не существовать))

Я не знаю, если у меня нет правильных прав или у меня ошибка в синтаксисе

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Мне удалось решить проблему с добавлением зоны при создании экземпляра клиента:

    your_region = "europe-west1"
    client_cluster = dataproc_v1.ClusterControllerClient(credentials = credentials_gcp, client_options = {'api_endpoint': f'{your_region}-dataproc.googleapis.com:443'})
0 голосов
/ 24 октября 2019

Эта ошибка означает, что ваш проект не может использовать этот регион. Однако, я думаю, проблема в том, как вы задаете регион Dataproc как regions/europe-west1-b. Вместо этого, пожалуйста, попробуйте europe-west1

...