Я пытаюсь загрузить несколько веб-файлов в хранилище, используя python. У меня есть служебная учетная запись, настроенная для включения учетных данных, и поэтому она должна работать. Однако каждый раз, когда я пытаюсь запустить этот код, я получаю эту ошибку:
Запрещено: 403 GET https://storage.googleapis.com/storage/v1/b/voterfile-oh?projection=noAcl: xxx@yyy.zzz.com не имеет доступа к storage.buckets.get к voterfile- о.
Могу ли я получить помощь по этому вопросу? Я не смог собрать какую-либо полезную информацию по этому вопросу , а также не получил ответ, который решил проблему.
def upload_voterfile(bucket_name):
from google.cloud import storage
from google.oauth2.service_account import Credentials
import os
import json
credentials_dict = {credentials}
with open('credentials.json', 'w') as json_file:
json.dump(credentials_dict, json_file)
credentials = Credentials.from_service_account_file('credentials.json')
client = storage.Client(credentials=credentials, project='oh-data-pipeline')
bucket = client.get_bucket(bucket_name)
county_list= ['Adams','Allen', 'Ashland', 'Ashtabula', 'Athens', 'Auglaize', 'Belmont', 'Brown', 'Butler', 'Carroll',
'Champaign', 'Clark', 'Clermont', 'Clinton', 'Columbiana', 'Coshocton', 'Crawford', 'Cuyahoga', 'Darke',
'Defiance', 'Delaware', 'Erie', 'Fairfield', 'Fayette', 'Franklin', 'Fulton', 'Gallia', 'Geauga', 'Greene',
'Guernsey', 'Hamilton', 'Hancock', 'Hardin', 'Harrison', 'Henry', 'Highland', 'Hocking', 'Holmes',
'Huron', 'Jackson', 'Jefferson', 'Knox', 'Lake', 'Lawrence', 'Licking', 'Logan', 'Lorain', 'Lucas', 'Madison',
'Mahoning', 'Marion', 'Medina', 'Meigs', 'Mercer', 'Miami', 'Monroe', 'Montgomery', 'Morgan', 'Morrow',
'Muskingum', 'Noble', 'Ottawa', 'Paulding', 'Perry', 'Pickaway', 'Pike', 'Portage', 'Preble', 'Putnam',
'Richland', 'Ross', 'Sandusky', 'Scioto', 'Seneca', 'Shelby', 'Stark', 'Summit', 'Trumbull', 'Tuscarawas',
'Union', 'Van Wert', 'Vinton', 'Warren', 'Washington', 'Wayne', 'Williams', 'Wood', 'Wyandot']
for f, g in zip(range(1, 89), county_list):
file = urllib.request.urlopen('https://www6.sos.state.oh.us/ords/f?p=VOTERFTP:DOWNLOAD::FILE:NO:2:P2_PRODUCT_NUMBER:{}'.format(f))
blob = bucket.blob('{}'.format(g))
blob.upload_from_string(data=file.read(), content_type="text/plain")
if __name__ == "__main__":
upload_voterfile(bucket_name='voterfile-oh')