Yandex Cloud provider for Strapi upload plugin
npm install strapi-provider-upload-yandex-cloudPlugin version 1 works with Strapi 3.
Plugin version 2 works with Strapi 4.
---
Yandex.Cloud:
Docs:
Pre-install: create Yandex.Cloud account and a bucket in Object storage.
``using yarn
yarn add strapi-provider-upload-yandex-cloud
Parameters
| Parameter | Description | Example |
| ------------- | ------------- | ------------- |
| YANDEX_CLOUD_ACCESS_KEY_ID | key ID |
pg2ywMziH_9zeZfA7t3w |
| YANDEX_CLOUD_ACCESS_SECRET | key secret | aTiO354YNpnO9zKjqBiP1U3nm3F3CoXGLYcldZBC |
| YANDEX_CLOUD_REGION | bucket region | ru-central1 |
| YANDEX_CLOUD_BUCKET | bucket name | strapi-bucket-test |Example
:zero:
Create Strapi project: (docs).
After successfully creating the project stop the dev server:
CTRL + C.:one:
Install upload plugin:
npm install strapi-provider-upload-yandex-cloud --save.NOTE: Be sure that you are in a folder with your Strapi project:
cd strapi-yandex-cloud-project.After successful installation your package.json file will have a code:
`
"dependencies": {
...
"strapi": "^4.7.0",
"strapi-provider-upload-yandex-cloud": "^2.0.4",
...
},
`:two:
Go to code editor to your project folder and create config file for your bucket:
./config/plugins.js (file plugins.js in config folder in the root of your Strapi project) with the code:Strapi v4:
`javascript
module.exports = ({ env }) => ({
upload: {
config: {
provider: 'strapi-provider-upload-yandex-cloud',
providerOptions: {
endpoint: 'https://storage.yandexcloud.net',
accessKeyId: env('YANDEX_CLOUD_ACCESS_KEY_ID'),
secretAccessKey: env('YANDEX_CLOUD_ACCESS_SECRET'),
region: env('YANDEX_CLOUD_REGION'),
params: {
Bucket: env('YANDEX_CLOUD_BUCKET'),
CacheControl: "public, max-age=864000"
},
},
},
},
});
`NOTE
You can pass aws s3 params in params object, such as CacheControl, ContentEncoding, etc. More params at:
Strapi v4: Security Middleware Configuration
Go to code editor to your project folder and create config file for your bucket:
./config/middlewares.js (file middlewares.js in config folder in the root of your Strapi project) with the code:`javascript
const BUCKET = process.env.YANDEX_CLOUD_BUCKET;
const BUCKET_URL = https://${BUCKET}.storage.yandexcloud.net;module.exports = [
'strapi::errors',
'strapi::cors',
'strapi::poweredBy',
'strapi::logger',
'strapi::query',
'strapi::body',
'strapi::favicon',
'strapi::public',
{
name: 'strapi::security',
config: {
contentSecurityPolicy: {
useDefaults: true,
directives: {
'connect-src': ["'self'", 'https:'],
'img-src': ["'self'", 'data:', 'blob:', BUCKET_URL],
'media-src': ["'self'", 'data:', 'blob:', BUCKET_URL],
upgradeInsecureRequests: null,
},
},
},
},
];
`Strapi v3 (not supported by Strapi since 2023):
`javascript
module.exports = ({ env }) => ({
upload: {
provider: 'yandex-cloud',
providerOptions: {
endpoint: 'https://storage.yandexcloud.net',
accessKeyId: process.env.YANDEX_CLOUD_ACCESS_KEY_ID,
secretAccessKey: process.env.YANDEX_CLOUD_ACCESS_SECRET,
region: process.env.YANDEX_CLOUD_REGION,
params: {
Bucket: process.env.YANDEX_CLOUD_BUCKET,
CacheControl: "public, max-age=864000"
}
}
}
});
`:three:
Create a .env file in the root of your Strapi project.
Example of
.env.local:`
HOST=0.0.0.0
PORT=1337YANDEX_CLOUD_ACCESS_KEY_ID=pg2ywMziH_9zeZfA7t3w
YANDEX_CLOUD_ACCESS_SECRET=aTiO354YNpnO9zKjqBiP1U3nm3F3CoXGLYcldZBC
YANDEX_CLOUD_REGION=ru-central1
YANDEX_CLOUD_BUCKET=strapi-bucket-test
`:four:
Test the new uploader.
1. Start Strapi dev server:
npm run develop`.2. Open Strapi media library v3 or Strapi media library v4 in a browser and upload a test image.