storage/gcp: use base64 for json key (#1089)

This commit is contained in:
Marwan Sulaiman
2019-02-25 18:16:13 -05:00
committed by Aaron Schlesinger
parent a27ef13b71
commit dbe44e627a
2 changed files with 10 additions and 6 deletions
+4 -5
View File
@@ -182,15 +182,14 @@ SingleFlightType = "memory"
# Env override: ATHENS_STORAGE_GCP_BUCKET
Bucket = "MY_GCP_BUCKET"
# JSONKey allows Athens to be run outside of GCP
# JSONKey is a base64 encoded service account
# key that allows Athens to be run outside of GCP
# but still be able to access GCS. If you are
# running Athens inside GCP, you will most
# running Athens inside GCP, you will most
# likely not need this as GCP figures out
# internal authentication between products for you.
# Pro tip: if you are pasting this as a JSON inside a string,
# make sure you escape "\n" by making it "\\n".
# Env override: ATHENS_STORAGE_GCP_JSON_KEY
JSONKey = "SERVICE_ACCOUNT_KEY"
JSONKey = ""
[Storage.Minio]
# Endpoint for Minio storage
+6 -1
View File
@@ -2,6 +2,7 @@ package gcp
import (
"context"
"encoding/base64"
"fmt"
"time"
@@ -31,7 +32,11 @@ func New(ctx context.Context, gcpConf *config.GCPConfig, timeout time.Duration)
opts := []option.ClientOption{}
if gcpConf.JSONKey != "" {
creds, err := google.CredentialsFromJSON(ctx, []byte(gcpConf.JSONKey), storage.ScopeReadWrite)
key, err := base64.StdEncoding.DecodeString(gcpConf.JSONKey)
if err != nil {
return nil, errors.E(op, fmt.Errorf("could not decode base64 json key: %v", err))
}
creds, err := google.CredentialsFromJSON(ctx, key, storage.ScopeReadWrite)
if err != nil {
return nil, errors.E(op, fmt.Errorf("could not get GCS credentials: %v", err))
}