Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: make GOOGLE_APPLICATION_CREDENTIALS optional #2295

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

asfaltboy
Copy link

The variable can often be omitted in environments that use default credentials such as GKE (Google cloud's managed Kubernetes) or VM instances.

Django-storages also acknowledges this, and it provides GS_CREDENTIALS as a way around systems where the default credentials are not used or undesired.

However, it's impossible to not set the environment variable setting, and without passing a path to a valid file that contains a valid JSON structure of a service account key, this code will raise an error.

Refs:

The variable can often be omitted in environments that use default
credentials such as GKE (Google cloud's managed Kubernetes) or VM
instances.

Django-storages also acknowledges this, and it provides GS_CREDENTIALS
as a way around systems where the default credentials are not used
or undesired.

However, it's impossible to not set the environment variable setting,
and without passing a path to a valid file that contains a valid JSON
structure of a service account key, this code will raise an error.

Refs:
* https://django-storages.readthedocs.io/en/latest/backends/gcloud.html#authentication-settings
* https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.default
* https://github.com/googleapis/google-auth-library-python/blob/d2ab3afdb567850121fec7de1d86fb5fb0fa80ed/google/oauth2/service_account.py#L643-L658
* https://github.com/googleapis/google-auth-library-python/blob/d2ab3afdb567850121fec7de1d86fb5fb0fa80ed/google/auth/_service_account_info.py#L78-L80
@sweep-ai
Copy link

sweep-ai bot commented Oct 21, 2023

Apply Sweep Rules to your PR?

  • Apply: Leftover TODOs in the code should be handled.
  • Apply: All new business logic should have corresponding unit tests in the tests/ directory.
  • Apply: Any clearly inefficient or repeated code should be optimized or refactored.

@asfaltboy
Copy link
Author

@doccano could anyone kindly review this PR?

@drmayu7
Copy link

drmayu7 commented Mar 15, 2024

+1

Comment on lines +14 to +18
_google_application_credentials = env("GOOGLE_APPLICATION_CREDENTIALS", "")
if _google_application_credentials:
GS_CREDENTIALS = service_account.Credentials.from_service_account_file(
_google_application_credentials
)
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps we ought to set the default to None when not set:

Suggested change
_google_application_credentials = env("GOOGLE_APPLICATION_CREDENTIALS", "")
if _google_application_credentials:
GS_CREDENTIALS = service_account.Credentials.from_service_account_file(
_google_application_credentials
)
_google_application_credentials = env("GOOGLE_APPLICATION_CREDENTIALS", "")
if _google_application_credentials:
GS_CREDENTIALS = service_account.Credentials.from_service_account_file(
_google_application_credentials
)
else:
GS_CREDENTIALS = None

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants