Search code examples
ibm-cloudobject-storage

IBM - COS - SDK IAM token


I am trying to access my COS service using python.Referring IBM's Documentation was able to write the following code snippet

import ibm_boto3
from ibm_botocore.client import Config

api_key = 'key'
service_instance_id = 'resource-service-id'
auth_endpoint = 'http://iam.bluemix.net/'
service_endpoint = 'endpoint'
s3 = ibm_boto3.resource('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)
s3.Bucket('bucket name').download_file('object name','location where the object must be saved')

Is this correct ? Also while trying to execute the above code the compiler is not able to retrieve the authentication token from auth_endpoint. Am i missing something?

Please to help

Thanks in advance!

I am including the output for your reference...

  ibm_botocore.exceptions.CredentialRetrievalError: Error when retrieving credentials from https://iam.ng.bluemix.net/oidc/token: Retrieval of tokens from server failed

And I am using python 3.x


Solution

  • As instructed in README, the auth_endpoint should have /oidc/token at the end, for example, 'http://iam.bluemix.net/oidc/token'.

    auth_endpoint = 'https://iam.bluemix.net/oidc/token'