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 LTI 外部工具详解

Canvas LTI 集成是将第三方学习工具嵌入 Canvas 中,实现无缝整合和交互,提供更丰富的学习体验和功能扩展...

国际学校部署 Canvas 学习系统常见问题

国际学校作为面向高端用户群体,历来以追求更高教学品质和更具前瞻性的服务体系作为发展方向,随着疫情肆虐...