Не могу обновить криптографию в us-central1 - PullRequest
5 голосов
/ 06 января 2020

Почему-то не получается обновить ключи в области us-central1. В моем IAM есть роли обновления и списка, и я использую этот код:

import google.cloud.kms as kms

self.client = kms.KeyManagementServiceClient()
name = 'client-1'
key_path = self.client.crypto_key_path(config.PROJECT, config.KMS_LOCATION, config.KMS_RING, name)

update_mask = {'paths': ['rotation_period', 'next_rotation_time']}
self.client.update_crypto_key({
        'name': key_path,
        'rotation_period': {'seconds': 0},
        'next_rotation_time': {'seconds': 0}
    }, update_mask)

. Мне выдается следующая ошибка:

google.api_core.exceptions.NotFound: 404 запрос касается местоположения «us-central1», но был отправлен в местоположение «global». Либо Cloud KMS недоступен в «us-central1», либо запрос был ошибочно направлен.

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

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

1 Ответ

2 голосов
/ 07 января 2020

Это ошибка, которую мы отслеживаем на https://github.com/googleapis/gapic-generator/issues/3066

. Тем временем, причина ошибки в том, что UpdateCryptoKey не может правильно вычислить регион, когда Первый аргумент dict. Если это resources_pb2.CryptoKey, он работает нормально. В качестве примера:

import google.cloud.kms as kms
from google.cloud.kms_v1.proto import resources_pb2

client = kms.KeyManagementServiceClient()

ck = resources_pb2.CryptoKey()
ck.name = 'projects/{proj}/locations/us-central1/keyRings/{kr}/cryptoKeys/{key}'
ck.next_rotation_time.GetCurrentTime()

update_mask = {'paths': ['next_rotation_time']}
client.update_crypto_key(ck, update_mask)

Надеюсь, это позволит вам обойти эту проблему, пока мы ее исправим. Приносим извинения за доставленные неудобства и благодарим за терпение!

...