Per-project gsutil service accounts
When using any library for Google Cloud you can specify a service account with GOOGLE_APPLICATION_CREDENTIALS
, but
unfortunately that doesn’t work when using gsutil
in shell scripts. The documentation suggests to use
gcloud auth activate-service-account
, but that “activates” the service account for all gsutil
invocations, and
doesn’t work if you installed a standalone version of gsutil
—without gcloud
.
I wanted to have one service account per project so that each project has access to the relevant resources only. The
solution I found is to use a Boto file: this is a ini-like file format used for AWS configuration, but gsutil
also
supports it. You can tell gsutil
to find such file with BOTO_CONFIG
or give it a list of paths to look in with
BOTO_PATH
.
In a simple project where the main code is a shell script, the setup would look like this:
In .boto
:
In script.sh
:
This is a bit cumbersome compared to GOOGLE_APPLICATION_CREDENTIALS
but it works well.