strapi-provider-upload-aws-s3-plus-cdn-public-access
v1.0.8
Published
AWS S3 provider for strapi upload with optional CDN configuration. Adapted from strapi-provider-upload-aws-s3
Downloads
6
Maintainers
Readme
strapi-provider-upload-aws-s3-plus-cdn-public-access
Background
Forked from Stephen Trainor' strapi-provider-upload-aws-s3-plus-cdn NPM package. See original Github Repo here. This package additionally accomdates projects where the Amazon Cloudfront S3 bucket access is set to "Don't use OAI (bucket must allow public access)". While this isn't best security practice, sometimes this configuration is necessary and this package accomdates this setup.
Configuration
Your configuration is passed down to the provider. (e.g: new AWS.S3(config)
). You can see the complete list of options here
See the using a provider documentation for information on installing and using a provider. And see the environment variables for setting and using environment variables in your configs.
If using a CDN to deliver media files to end users, you can include a cdnUrl
property, as shown below.
Example
The allowPublicAccess variable needs to be set to true if your Cloudfront S3 bucket access is set to "Don't use OAI (bucket must allow public access)". Otherwise, make sure the allowPublicAccess variable is set to false.
./config/plugins.js
module.exports = ({ env }) => ({
// ...
upload: {
provider: 'aws-s3-plus-cdn-public-access',
providerOptions: {
accessKeyId: env('AWS_ACCESS_KEY_ID'),
secretAccessKey: env('AWS_ACCESS_SECRET'),
region: env('AWS_REGION'),
params: {
Bucket: env('AWS_BUCKET'),
},
cdnUrl: env('CDN_URL'), // Optional CDN URL - include protofol and trailing forward slash, e.g. 'https://assets.example.com/'
allowPublicAccess: env('AWS_CDN_ALLOW_PUBLIC_ACCESS'),
},
},
// ...
});
Note
Strapi will use the configured S3 bucket for upload and delete operations, but writes the CDN url (if configured) into the database record.
In the event that you need to change the storage backend in the future, to avoid the need to re-upload assets or to write custom queries to update Strapi database records, it is probably best to configure your CDN to use a URL that you control (e.g. use assets.mydomain.com rather than d12345687abc.cloudfront.net). If you need to change the storage backend later, you can simply update your DNS record.