Конфигурация CORS для хранилища Google Cloud не устанавливается с помощью клиента Python

Конфигурация CORS для хранилища облачных хранилищ не устанавливается с помощью Python.

Я выполняю шаги, указанные в: http://google-cloud-python.readthedocs.io/en/latest/storage/buckets.html

То есть,

>>> policies = bucket.cors
>>> policies.append({'origin': '/foo', ...})
>>> policies[1]['maxAgeSeconds'] = 3600
>>> del policies[0]
>>> bucket.cors = policies
>>> bucket.update()

Если я получаю конфигурацию CORS для корзины после выполнения вышеупомянутых шагов, это дает пустой список.

1 ответ

Решение

bucket.cors является отображением последовательности каждой политики CORS.

Так как вы не рассказываете, как именно вы обновляете записи CORS, я предполагаю, что вы передаете словарь из нескольких пар ключ-значение для добавления. Это происходит автоматически, поскольку не соответствует ожидаемой схеме для записей политики.

Вместо этого напишите

import os
os.environ.update(
    {'GOOGLE_APPLICATION_CREDENTIALS': '<path-to-your-key-file>'}
)

import google.cloud.storage

storage_client = google.cloud.storage.Client()

bucket_name = '<your-bucket-name>'
bucket = storage_client.get_bucket(bucket_name)

policies = bucket.cors
policies.extend([
    {'origin': ['http://hello-world.example']},
    {'maxAgeSeconds': 3600}
])
bucket.cors = policies
bucket.update()
print(bucket.cors)

Обратите внимание, что источником является список источников для получения заголовков ответов CORS, как описано в веб-документе Storage JSON API. Другие политики также должны быть переданы с правильным типом значения.

Вы также можете добавить каждую политику отдельно таким образом:

...
policies.append(
    {'origin': ['http://hello-world.example']},
)
policies.append(
    {'maxAgeSeconds': 3600}
)
Другие вопросы по тегам