1. Storage - Buckets

Benodigdheden

  1. Service Account aanmaken

  2. Onder het iAM het betreffende service account de volgende rechten toekennen:

    • Storage Admin
    • Storage Object Admin
    • Storage Object Creator
    • Storage Object Viewer
    • App Engine Admin
    • App Engine Deployer
    • Cloud Build Editor

    Rollen / iAM

  3. De betreffende rollen erven over in de Storage van Google Cloud. Controleer dit in de Storage Browser per instantie:

    Rollen

Laravel & Google App Engine Storage

  1. Installeer de laravel-google-cloud-storage module van Suberbalist:

    composer require superbalist/laravel-google-cloud-storage

    Superbalist/laravel-google-cloud-storage

  2. Voer de provider toe:

    'providers' => [
        // ...
        Superbalist\LaravelGoogleCloudStorage\GoogleCloudStorageServiceProvider::class,
    ]
  3. Registreer de betreffende Google Cloud storage bucket als een "disk" in Laravel onder config/filesystems.php:

    'gcs' => [
            'driver' => 'gcs',
            'project_id' => env('GOOGLE_CLOUD_PROJECT_ID'),
            'storage_api_uri' => env('GOOGLE_CLOUD_STORAGE_API_URI')        
            'bucket' => env('GOOGLE_CLOUD_STORAGE_BUCKET'),
    
            // optional: place for local dev the iAM service-account.json in 
            // the root of the Laravel project
            'key_file' => env('GOOGLE_CLOUD_KEY_FILE', file_exists(__DIR__.'/../service-account.json') ? __DIR__.'/../service-account.json' : ''),
    
            // optional: /default/path/to/apply/in/bucket
            'path_prefix' => env('GOOGLE_CLOUD_STORAGE_PATH_PREFIX'),
    ]
  4. Gebruik:

    $disk = Storage::disk('gcs');
    
    // create a file
    $disk->put('avatars/1', $fileContents);
    
    // check if a file exists
    $exists = $disk->exists('file.jpg');
    
    // get file modification date
    $time = $disk->lastModified('file1.jpg');
    
    // copy a file
    $disk->copy('old/file1.jpg', 'new/file1.jpg');
    
    // move a file
    $disk->move('old/file1.jpg', 'new/file1.jpg');
    
    // get url to file
    $url = $disk->url('folder/my_file.txt');
    
    // Set the visibility of file to public
    $disk->setVisibility('folder/my_file.txt', 'public');
    
    // See https://laravel.com/docs/5.3/filesystem for full list of available functionality

ENV lokale configuratie

# GOOGLE GLOUD - INSTANCE
GOOGLE_CLOUD_PROJECT_ID=de-maastricht-studie-api
GOOGLE_CLOUD_STORAGE_BUCKET=staging.de-maastricht-studie-api.appspot.com

# GOOGLE GLOUD - STORAGE
APP_STORAGE=/tmp
VIEW_COMPILED_PATH=/tmp
FILESYSTEM_DRIVER=gcs
MEDIA_DISK=gcs

# GOOGLE GLOUD - MYSQL SETTINGS
DB_HOST= #GLOBAL_IP_ADDRESS_MYSQLHOST
DB_DATABASE= #DATABASE_NAME
DB_USERNAME=root
DB_PASSWORD= #MYSQL ROOT PASSWORD
DB_CONNECTION=mysql
DB_PORT=3306