Canvas 部署 Amazon(亚马逊) S3 存储方案

发布于: 29 October, 2022
分享:

Canvas 支持服务器本地文件存储和云端文件存储,目前 Canvas 已完美支持亚马逊 AWS S3 云端存储方案,与本地文件存储方式相比,采用云端存储方案可大幅降低服务器网络带宽和服务器负载,提高用户下载文档速度,改善用户体验。对于计划长期使用 Canvas 的学校或机构,亦可降低文件存储的成本和运维风险。

第一步:登录 AWS Console

采用 S3 作为 Canvas 存储方案,可提供更加完善、灵活的文件存储方案。注意亚马逊 S3 存储桶方案,会产生额外费用,具体定价方案可查询 AWS 官方网站:https://www.amazonaws.cn/s3/pricing

 

第二步:创建 S3 存储桶(Bucket)

  1. 输入存储桶名称,仅限 0-9 A-z 字母和 "-" 组成
  2. 选择所在区域
  3. 其他选项保持默认,可根据需求后期调整,本文不做赘述

 

第三步:获取存储桶信息

  1. 打开刚刚创建的存储桶,点击 Properties (属性)选项卡
  2. 如果在第五步设置 IAM 账户权限时采用 Inline Policy 形式,复制 Amazon Resource Name (ARN) 备用

 

第四步:配置 CORS 跨域访问

参考文档:https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManageCorsUsing.html

  1. 打开 S3 存储桶
  2. 点击 Permissions (权限)选项卡,滚动至页面最下方 CORS 设置
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "HEAD",
            "GET",
            "POST",
            "PUT"
        ],
        "AllowedOrigins": [
            "https://your.canvas.domain"
        ],
        "ExposeHeaders": [],
        "MaxAgeSeconds": 3000
    }
]

第五步:创建 IAM 用户

AWS IAM 是 Amazon Web Services (AWS) 的身份和访问管理服务,它用于管理 AWS 资源的身份验证和授权。IAM 允许您精确控制谁可以访问您的 AWS 资源以及这些用户、应用程序或服务可以执行哪些操作。

以下是 AWS IAM 的主要功能和概念:

  • 用户 (User): 用户是人或实体,可以通过 IAM 创建并授予他们访问 AWS 资源的权限。每个用户都有唯一的凭证,如用户名和密码,或访问密钥 (Access Key ID 和 Secret Access Key)。
  • 组 (Group): 组是一种逻辑方式来分组用户,并为这些用户授予相同的权限。这使得管理用户和权限更为简单,您可以为组分配权限,而不必逐个分配给每个用户。
  • 角色 (Role): 角色是用于授权 AWS 服务或资源(如 EC2 实例、Lambda 函数等)的一种身份。角色允许 AWS 服务执行特定操作,而无需使用访问密钥,这提高了安全性。
  • 策略 (Policy): 策略是 JSON 文档,定义了哪些操作允许或禁止,以及允许或拒绝这些操作的资源。策略可以附加到用户、组或角色,并用于控制他们对 AWS 资源的访问。
  • 权限 (Permissions): 权限是指用户、组或角色在 IAM 中授予的操作和资源访问权限。这些权限由策略定义。
  • 多因素身份验证 (MFA): MFA 增强了帐户的安全性,要求用户提供两个或多个身份验证因素(通常是密码和硬件令牌或移动应用程序生成的代码)以进行身份验证。
  • 访问密钥 (Access Key): 访问密钥包括 Access Key ID 和 Secret Access Key,用于以编程方式访问 AWS 资源。这通常用于 API 调用、CLI 操作和应用程序的身份验证。

回到 AWS Console 主页面,搜索 IAM

根据实际需要创建新账户,并确保该账户拥有 AmazonS3FullAccess 权限即可,可以通过添加用户组或单独为账户设置 Policy 均可。

如果采用 Inline Policy,将第三步中的 ARN 复制到以下 JSON 配置信息:

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"s3:ListBucket",
				"s3:GetObject",
				"s3:PutObject",
				"s3:DeleteObject"
			],
			"Resource": [
				"arn:aws-cn:s3:::canvas-storage-001",
				"arn:aws-cn:s3:::canvas-storage-001/*"
			]
		}
	]
}

 

另一种 Policy 参考:

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "s3:*",
			"Resource": "arn:aws-cn:s3:::canvas-storage-cn/*",
			"Condition": {}
		},
		{
			"Effect": "Allow",
			"Action": [
				"s3:*"
			],
			"Resource": "arn:aws-cn:s3:::canvas-storage-cn",
			"Condition": {}
		}
	]
}

 

第六步:创建 Access keys

访问密钥包括 Access Key ID 和 Secret Access Key,用于以编程方式访问 AWS 资源。这通常用于 API 调用、CLI 操作和应用程序的身份验证。

在当前用户下,点击 Security credentials 选项卡:

访问密钥(Access key) 生成后,记得妥善保存,不要将其保存在公共平台,或代码仓库中。

 

第七步:Canvas 配置文件

Canvas 配置文件 domain.yml 中无需设置 files_domain

创建 file_store.yml 配置文件,如果文件已经存在,直接编辑即可:

$ cd /data/canvas #输入实际路径
$ cp config/file_store.yml.example config/file_store.yml
$ nano config/file_store.yml

 

将默认 production 注释,并添加 s3 节点:

#production:
  #storage: local
  #path_prefix: tmp/files
## amazon storage example. requires valid amazon_s3.yml
production:
  storage: s3

 

创建 amazon_s3.yml 配置文件,如果文件已经存在,直接编辑即可:

$ cd /data/canvas #输入实际路径
$ cp config/amazon_s3.yml.example config/amazon_s3.yml
$ nano config/amazon_s3.yml

 

打开文件后,查找 production 节点,按照上述步骤填写 bucket_name, access_key_id 和 secret_access_key,最后一个 region 设置项,根据实际的 AWS 所在区域填写。参照如下修改:

production:
  bucket_name: canvas_storage
  access_key_id: ************
  secret_access_key: *******************
  region: ap-east-1

 

第八步:重启 Canvas 实例

 

$ sudo /etc/init.d/canvas_init restart

登录 Canvas,尝试上传文件,并检查 AWS S3 存储桶对应文件状态。

0 留言

留言

您的留言将被人工审核,请勿发表色情、反动言论。

您可能感兴趣

Canvas 安装 Rich Content Editor (RCE)

Canvas 安装 Rich Content Editor (RCE) 可以为用户提供一个功能强大且用户友好的文本编辑工具

Canvas LTI XML 配置范例

Canvas 支持 LTI 标准协议,用于在 Canvas 学习管理系统(LMS)和外部教育工具或应用程序之间进行集成。这...

Canvas 部署 Amazon(亚马逊) S3 存储方案

Canvas 支持服务器本地文件存储和云端文件存储,目前 Canvas 已完美支持亚马逊 AWS S3 云端存储方案,与本...