Невозможно получить списки: произошла ошибка (AccessDenied) при вызове операции ListBuckets: Доступ запрещен, IBM COS из Watson Studio - PullRequest
0 голосов
/ 11 марта 2020

Я надеюсь, что кто-нибудь может помочь мне с этой проблемой. У меня такое ощущение, что это, вероятно, связано с учетными данными, которые я использую, но я не знаю, что я делаю неправильно.

Я очень плохо знаком с Python и хотя я понимаю хранилища объектов из на уровне «создания корзины», я изо всех сил пытаюсь получить gr asp в доступе из интерфейса программирования.

В идеале я хотел бы иметь разные учетные данные для разных задач, поэтому «Администратор» для всех операции с ведением до указанного c пользователя для заданных c операций с ведением.

Я проверил несколько вещей, таких как CRN из CLI, и могу перечислить сегменты, но я вхожу в систему со своим Учетные данные IBM, поэтому я подозреваю, что при запуске я получаю эти учетные данные:

 Ibmcloud cos list-buckets

Я пытался использовать ключи API из списка ресурсов хранения.

Итак, из документации я пробуя следующие команды:


COS_ENDPOINT="https://s3.eu-gb.cloud-object-storage.appdomain.cloud"
COS_API_KEY_ID = "............................................"
COS_AUTH_ENDPOINT = "https://iam.eu-gb.bluemix.net/oidc/token"
COS_RESOURCE_CRN = "the last part from the CRN string"

# Create resource.  In an ideal world, cos_m will be the big boss and I could use other
# users like cos_r or cos_a for specific bucket tasks

cos_m = ibm_boto3.resource("s3",
    ibm_api_key_id=COS_API_KEY_ID,
    ibm_service_instance_id=COS_RESOURCE_CRN,
    ibm_auth_endpoint=COS_AUTH_ENDPOINT,
    config=Config(signature_version="oauth"),
    endpoint_url=COS_ENDPOINT)

def get_buckets():
    print("Retrieving list of buckets")
    try:
        buckets = cos_r.buckets.all()
        for bucket in buckets:
            print("Bucket Name: {0}".format(bucket.name))
    except ClientError as be:
        print("CLIENT ERROR: {0}\n".format(be))
    except Exception as e:
        print("Unable to retrieve list buckets: {0}".format(e))

get_buckets()


Returns the error:

Retrieving list of buckets
Unable to retrieve list buckets: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

I have also tried a set of credentials that work on a specific bucket, but I don't think those credentials have the ability to do operations such as list-buckets.

I hope this makes sense and thanks for taking a look.
...