阿里云 BLOB 存储提供程序
阿里云 BLOB 存储提供程序支持将 BLOB 数据存储于阿里云对象存储服务。
请先阅读 BLOB 存储文档 了解存储系统的使用方法。本文档仅说明如何配置容器以使用阿里云作为存储提供程序。
安装
使用 ABP CLI 将 Volo.Abp.BlobStoring.Aliyun NuGet 包添加到项目:
- 若未安装 ABP CLI,请先完成安装
- 在需要添加包的项目目录(.csproj 文件所在目录)打开命令行终端
- 执行命令:
abp add-package Volo.Abp.BlobStoring.Aliyun
如需手动安装,请为项目添加 Volo.Abp.BlobStoring.Aliyun NuGet 包,并在项目的 ABP 模块类中添加依赖声明:[DependsOn(typeof(AbpBlobStoringAliyunModule))]
配置
配置操作需在模块类的 ConfigureServices 方法中完成(参见 模块化基础),具体规范请参考 BLOB 存储文档。
示例:配置默认使用阿里云存储提供程序
Configure<AbpBlobStoringOptions>(options =>
{
options.Containers.ConfigureDefault(container =>
{
container.UseAliyun(aliyun =>
{
aliyun.AccessKeyId = "您的阿里云访问密钥ID";
aliyun.AccessKeySecret = "您的阿里云访问密钥";
aliyun.Endpoint = "您的OSS端点";
aliyun.RegionId = "您的STS区域ID";
aliyun.RoleArn = "RAM角色ARN";
aliyun.RoleSessionName = "凭证名称";
aliyun.Policy = "权限策略";
aliyun.DurationSeconds = "过期时间";
aliyun.ContainerName = "您的阿里云容器名称";
aliyun.CreateContainerIfNotExists = true;
});
});
});
关于为特定容器配置此提供程序的详细说明,请参阅 BLOB 存储文档
配置选项
- AccessKeyId ([NotNull]string):访问阿里云API的密钥,具有账户完整权限。请妥善保管!建议遵循 阿里云安全最佳实践 ,使用RAM子用户AccessKey进行API调用
- AccessKeySecret ( [NotNull]string ):同上
- Endpoint ([NotNull]string):OSS服务的外网访问域名。详见文档说明
- UseSecurityTokenService (bool):使用STS临时凭证访问OSS服务,默认值:
false - RegionId (string):STS服务的访问地址。详见地域列表文档
- RoleArn ([NotNull]string):STS所需的角色ARN。详见RAM角色文档
- RoleSessionName ([NotNull]string):用于标识临时访问凭证,建议使用不同应用用户进行区分
- Policy (string):附加权限限制策略。详见权限策略文档
- DurationSeconds (int):临时访问凭证有效期(秒),最小900秒,最大3600秒
- ContainerName (string):可指定阿里云中的容器名称。未指定时使用
BlobContainerName特性定义的BLOB容器名称(参见 BLOB存储文档 )。请注意阿里云有严格的容器命名规则,必须符合以下命名规范:- 容器名称必须以字母或数字开头和结尾,只能包含字母、数字和短横线(-)
- 容器名称必须以小写字母和数字开头和结尾
- 容器名称长度必须在 3 到 63 个字符之间
- CreateContainerIfNotExists (bool):默认值
false。如果阿里云中不存在指定容器,AliyunBlobProvider将尝试创建 - TemporaryCredentialsCacheKey (bool):STS凭证的缓存键名
阿里云 BLOB 名称计算器
阿里云 BLOB 提供程序通过特定规则组织BLOB名称。默认情况下,BLOB的完整名称按以下规则生成:
- 当 当前租户 为
null时(或容器已禁用多租户——参见 BLOB存储文档 了解如何禁用),添加host字符串 - 当前租户不为
null时,添加tenants/<租户ID>字符串 - 最后附加BLOB名称
其他服务
AliyunBlobProvider是实现阿里云BLOB存储的核心服务,可通过依赖注入进行重写/替换(注意不要替换IBlobProvider接口,而是替换AliyunBlobProvider类)IAliyunBlobNameCalculator用于计算BLOB完整名称(如上所述),默认由DefaultAliyunBlobNameCalculator实现IOssClientFactory用于创建OSS客户端,默认由DefaultOssClientFactory实现。如需自定义实现,可对此服务进行重写/替换
抠丁客


