I am new to google cloud storage and I try to set up a function that downloads a blob once a day. At the moment I am working in my Jupyter Notebook but finally, the code will run in an Azure Function. I am struggling with setting up the client that connects me to the bucket. I have a service account credential JSON which enables me to connect to google.
Locally I have found a solution:
from google.cloud import storage
client = storage.Client.from_service_account_json('<PATH_TO_SERVICE_ACCOUNT_JSON>')
The problem is that I do not have a path where I store my JSON in the cloud but I store it in the key vault. I came up with the following solution:
from google.cloud import storage
import json
from google.oauth2 import service_account
string_key = get_key_from_key_vault()
service_account_info = json.loads(string_key)
google_credentials = service_account.Credentials.from_service_account_info(
service_account_info
)
scoped_credentials = google_credentials.with_scopes(
['https://www.googleapis.com/auth/cloud-platform.read-only'])
print(type(scoped_credentials))
client = storage.Client(credentials = scoped_credentials)
I am not totally sure if I need the scoped_credentials = ...
part but I only have read permissions on the bucket. (if I skip the part the error stays the same)
When I go for this solution I get the following error:
DefaultCredentialsError: Could not automatically determine credentials. Please set
GOOGLE_APPLICATION_CREDENTIALS or explicitly create credentials and re-run the application. For
more information, please see https://cloud.google.com/docs/authentication/getting-started
I do not have a clue what I am doing wrong because I think that I already set the credentials explicitly.
Best P
you can set the environment variable GOOGLE_APPLICATION_CREDENTIALS
with the path of the json file and authenticate your function by starting the storage client without parameters.
client = storage.Client()
*by default the storage client uses the file path on the environment variable GOOGLE_APPLICATION_CREDENTIALS
It is the easiest way to use JSON credentials and it is compatible with most of Google Cloud python libraries.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With