项目

阿里云 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存储文档 )。请注意阿里云有严格的容器命名规则,必须符合以下命名规范
    • 容器名称必须以字母或数字开头和结尾,只能包含字母、数字和短横线(-)
    • 容器名称必须以小写字母和数字开头和结尾
    • 容器名称长度必须在 363 个字符之间
  • 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实现。如需自定义实现,可对此服务进行重写/替换
在本文档中