开源CMS Drupal 如何将本地文件存储到亚马逊S3上?

 

对于网站而已,文件和资源是用户访问的重要内容,如果将文件和资源存储到云平台上,便开源提高用户访问的体验性,以及更加高效友好的管理资源文件。此外,云平台还有安全控制、流量控制、与CDN更好集成、跨国跨区域等一般WEB服务器不具备的功能,因此存储到云平台将是最优管理解决方案。

亚马逊云平台简称AWS(Amazon Web Services),提供了对云存储的支持,简称S3 (Simple Storage Service),是一个高效、持久化、安全性高以及可扩展的存储云平台,对于我们做外贸网站以及英文网站,亚马逊是一个很好的解决方案。

 

本文就Drupal如何与亚马逊S3平台集成,做一个简单的介绍。关于英文网站的介绍,可以参考我们之前的文章:

  1. 构建英文网站应该用什么框架?
  2. 常见的CMS平台比较
  3. 外贸网站如何实现网站多语言版本开发?

 

 

 

为什么要选择亚马逊S3?

 

亚马逊S3是亚马逊的一个服务,提供了对文件和资源的存储管理,用亚马逊存储代替本机存储,有以下优点:

 

  1. 高可用。亚马逊提供99.99999%的高可用性,并且亚马逊会将内容复制,防止单点损坏,因此亚马逊对高可用,防止文件损坏、丢失方面做了大量工作,是安全的保障。
  2. 信息安全及合规。亚马逊集成了文件智能识别等技术,可以帮助识别敏感信息,支持文件加密,防止内容泄露。因此在信息安全方面,亚马逊非常强大。
  3. 方便管理。亚马逊提供了WEB工具以及客户端工具,可以方便的管理、复制、下载存储的文件资源。
  4. 可扩展。亚马逊提供了完整、丰富的API集成说明和案例,API访问方式等。并且可以很方便的集成CDN、流媒体播放等功能,因此扩展性极强。
  5. 低成本。相比较而言,亚马逊的S3是按量使用收费,对于云平台的使用来讲,成本还是比较低的。

 

 

Drupal与亚马逊S3的集成

 

首先,Drupal已经有S3的集成模块,我们先下载如下两个模块,

  • S3 file system - 集成Drupal的文件存储到 Amazon S3,这个可以代替Drupal默认的文件操作,因此Drupal本机可以不用做文件管理。
  • S3 filesystem CORS upload -可以实现浏览器到S3的直传功能,因此不用再走web服务器,性能大大提高。

 

(1) 创建亚马逊账号

首先,是创建亚马逊账号,这个比较简单,按照流程一步一步创建一个亚马逊账号即可。

创建好之后,登录进去,我们需要一个客户端访问的credentials, 点击Security Credentials, 进去后然后点击 Access keys 去创建一个Access keys,创建完成之后下载保存,后面会用到。

(2)配置亚马逊S3 Bucket

Bucket类似一个容器,可以存储各种文件,我们到亚马逊的后台,创建一个Bucket,到后台按指引,创建一个Bucket即可,并且打开公共访问选项。

 

 

(3)Durpal后台的设置

在Drupal里面安装我们之前所说,安装S3模块,安装成功之后,到模块的配置界面,如下图所示,进行配置。

需要填上我们之前保存的credentials的文件路径。

 

此外,也可以把亚马逊的访问路径,保存到Drupal的settings.php文件里面,这样可以通过代码方便管理。

$settings['s3fs.access_key'] = '*************************';
$settings['s3fs.secret_key'] = '*************************';
$config['s3fs.settings']['bucket'] = 'techxbucket';
$config['s3fs.settings']['region'] = 'ap-south-1';
$settings['s3fs.use_s3_for_public'] = FALSE;
$settings['s3fs.upload_as_private'] = TRUE;

 

(4)配置存储位置

可以给Drupal的Field设置存储位置,一般我们新建一个文件字段,可以配置其存储位置,这个时候就可以选择S3作为存储位置。

 

 

另外,也可以安装Drupal的flysystem模块,然后选择使用S3作为Drupal的文件系统,这样就将整个网站用户上传的文件就会自动到亚马逊的S3里面,无需做其他额外的开发操作。

如果要更高级的使用方式,比如流媒体、加密展示、防盗链等,则需要S3的API进行操作,需要进一步的开发。

 

最后,关于新闻网站的建设,可以参考我们其他相关文章,

  1. 如何通过开源方案自建视频课程平台
  2. 在线视频教育学习平台介绍
  3. 构建英文网站应该用什么框架?
  4. 常见的CMS平台比较
  5. 外贸网站如何实现网站多语言版本开发?