Просмотр исходного кода

create a client that uses Application Default Credentials

yohei0125 3 лет назад
Родитель
Сommit
05318c72f4
1 измененных файлов с 12 добавлено и 3 удалено
  1. 12 3
      packages/app/src/server/service/file-uploader/gcs.js

+ 12 - 3
packages/app/src/server/service/file-uploader/gcs.js

@@ -2,8 +2,8 @@ import loggerFactory from '~/utils/logger';
 
 
 const logger = loggerFactory('growi:service:fileUploaderAws');
 const logger = loggerFactory('growi:service:fileUploaderAws');
 
 
-const urljoin = require('url-join');
 const { Storage } = require('@google-cloud/storage');
 const { Storage } = require('@google-cloud/storage');
+const urljoin = require('url-join');
 
 
 let _instance;
 let _instance;
 
 
@@ -17,11 +17,20 @@ module.exports = function(crowi) {
     return configManager.getConfig('crowi', 'gcs:bucket');
     return configManager.getConfig('crowi', 'gcs:bucket');
   }
   }
 
 
+  /**
+   * see https://googleapis.dev/nodejs/storage/latest/Storage.html
+   */
   function getGcsInstance() {
   function getGcsInstance() {
     if (_instance == null) {
     if (_instance == null) {
       const keyFilename = configManager.getConfig('crowi', 'gcs:apiKeyJsonPath');
       const keyFilename = configManager.getConfig('crowi', 'gcs:apiKeyJsonPath');
-      // see https://googleapis.dev/nodejs/storage/latest/Storage.html
-      _instance = new Storage({ keyFilename });
+      if (keyFilename == null) {
+        // Create a client that uses Application Default Credentials
+        _instance = new Storage();
+      }
+      else {
+        // Create a client with explicit credentials
+        _instance = new Storage({ keyFilename });
+      }
     }
     }
     return _instance;
     return _instance;
   }
   }