strapi-provider-upload-teko-gcs-v2 v1.0.0
strapi-provider-upload-google-cloud-storage
Non-Official Google Cloud Storage Provider for Strapi Upload
Installation
Install the package from your app root directory
with npm
npm install strapi-provider-upload-teko-gcs --saveor yarn
yarn add strapi-provider-upload-teko-gcsCreate your Bucket on Google Cloud Storage
How to create a bucket ?
Where my bucket can be located ?
Setting up Google authentication
- In the GCP Console, go to the Create service account key page..
- From the Service account list, select New service account.
- In the Service account name field, enter a name.
- From the Role list, select Cloud Storage > Storage Onject Admin or higher.
- Select
JSONfor Key Type - Click Create. A JSON file that contains your key downloads to your computer.
Setting up the a configuration file
You will find below many examples of configurations, for each example :
- Copy the full content of the downloaded JSON file
- Open the configuration file
- Paste it into the "Service Account JSON" field (as
stringorJSON, be careful with indentation) - Set the
bucketNamefield and replaceBucket-nameby yours previously create - Default
baseUrlis working, but you can replace it by yours (if you use a custom baseUrl) - Save the configuration file
- Enjoy !
Example with one configuration for all environments (dev/stage/prod)
./extensions/upload/config/settings.json
{
"provider": "google-cloud-storage",
"providerOptions": {
"serviceAccount": "<Your serviceAccount JSON object/string here>",
"bucketName": "Bucket-name",
"baseUrl": "https://storage.googleapis.com/{bucket-name}"
}
}Example with environment variable
./extensions/upload/config/settings.json
{
"provider": "google-cloud-storage",
"providerOptions": {
"serviceAccount": "${process.env.GCS_SERVICE_ACCOUNT || <Your serviceAccount JSON object/string here>}",
"bucketName": "${process.env.GCS_BUCKET_NAME || Bucket-name}",
"baseUrl": "${process.env.GCS_BASE_URL || https://storage.googleapis.com/{bucket-name}}"
}
}You can rename the environment variables as you like.
All variable are optional, you can setting up only bucketName if you need to change only the bucketName.
Example with multi configuration multi upload : one by environment (dev/stage/prod)
./extensions/upload/config/settings.js
const stagingProviderOptions = {
serviceAccount: '<Your serviceAccount JSON object/string here>', // json configuration
bucketName: 'Bucket-name', // name of the bucket
baseUrl: 'https://storage.googleapis.com/{bucket-name}',
}
const productionProviderOptions = {
serviceAccount: '<Your serviceAccount JSON object/string here>', // json configuration
bucketName: 'Bucket-name', // name of the bucket
baseUrl: 'https://storage.googleapis.com/{bucket-name}',
}
if (process.env.NODE_ENV === 'production') {
module.exports = {
provider: 'google-cloud-storage',
providerOptions: productionProviderOptions,
}
} else if (process.env.NODE_ENV === 'staging') {
module.exports = {
provider: 'google-cloud-storage',
providerOptions: stagingProviderOptions,
}
} else {
module.exports = {
provider: 'local',
}
}Overriding uploadProvider config with gcs key in Strapi custom config
Contents of gcs key in Strapi custom config, if set, will be merged over ./extensions/upload/config/settings.json,
./config/custom.json (config items set here will be merged over, overriding config set at ./extensions/upload/config/settings.json)
{
"gcs": {
"serviceAccount": "<Your serviceAccount JSON object/string here>",
"bucketName": "Bucket-name",
"baseUrl": "https://storage.googleapis.com/{bucket-name}"
}
}./config/environments/<development|staging|production>/custom.json (config items set here will be merged over and override the previous ones)
{
"gcs": {
"serviceAccount": "<Your serviceAccount JSON object/string here>",
"bucketName": "Bucket-name",
"baseUrl": "https://storage.googleapis.com/{bucket-name}"
}
}How to configure variable ?
serviceAccount :
JSON data provide by Google Account (explained before).
Can be set as a String or JSON Object.
bucketName :
The name of the bucket on Google Cloud Storage. You can find more information on Google Cloud documentation.
baseUrl :
Define your base Url, first is default value :
Important information
From release 3.0.0-beta.20 the bucketLocation is no longer supported.
The plugin will not create the bucket, you need to configure it before.
Resources
3 years ago