Python: Как перечислить расположение сегмента для каждого сегмента IBM COS? - PullRequest
0 голосов
/ 27 февраля 2019

Я использую Python SDK для IBM Cloud Object Storage и хочу перебрать все видимые сегменты и вернуть их местоположение.Проблема, с которой я сталкиваюсь, заключается в том, что для некоторых сегментов возвращается ошибка The specified bucket does not exist..Согласно этому SO-ответу, это вызвано различными типами хранилищ .

Как я могу все же с этим справиться и, по крайней мере, получить местоположение для доступных корзин?Вот примерный код Python:

cos = ibm_boto3.client('s3',
                    ibm_api_key_id=api_key,
                    ibm_service_instance_id=service_instance_id,
                    ibm_auth_endpoint=auth_endpoint,
                    config=Config(signature_version='oauth'),
                    endpoint_url=service_endpoint)


# Call COS to list current buckets
response = cos.list_buckets()

# Get a list of all bucket names from the response
buckets = [bucket['Name'] for bucket in response['Buckets']]
print(response)

for bucketname in buckets:
   print(bucketname, cos.get_bucket_location(Bucket=bucketname)['LocationConstraint'])

1 Ответ

0 голосов
/ 28 февраля 2019

Я прибег к этому временному решению на данный момент:

def locations(buckets):
   locs={}
   for b in buckets:
      try: 
         locs[b]=cos.get_bucket_location(Bucket=b)['LocationConstraint']
      except: 
         locs[b]=None
         pass
   return locs

Он пытается получить местоположение.Если это не удается, присваивается Нет , что хорошо переводится в ноль при преобразовании в JSON.

...