BLOB Storing Aliyun提供程序

BLOB存储Aliyun提供程序可以将BLOB存储在Aliyun Blob storage中.

阅读BLOB存储文档了解如何使用BLOB存储系统. 本文档仅介绍如何为容器配置Aliyun提供程序.

安装

使用ABP CLI添加Volo.Abp.BlobStoring.AliyunNuGet包到你的项目:

  • 安装 ABP CLI, 如果你还没有安装.
  • 在要添加 Volo.Abp.BlobStoring.Aliyun 包的 .csproj 文件目录打开命令行.
  • 运行 Volo.Abp.BlobStoring.Aliyun 命令.

如果要手动安装,在你的项目中安装 Volo.Abp.BlobStoring.Aliyun NuGet包然后将[DependsOn(typeof(AbpBlobStoringAliyunModule))]添加到项目内的ABP模块类中.

配置

如同BLOB存储文档所述,配置是在模块类的 ConfigureServices 方法完成的.

示例: 配置为默认使用Aliyun存储提供程序

  1. Configure<AbpBlobStoringOptions>(options =>
  2. {
  3. options.Containers.ConfigureDefault(container =>
  4. {
  5. container.UseAliyun(aliyun =>
  6. {
  7. aliyun.AccessKeyId = "your aliyun access key id";
  8. aliyun.AccessKeySecret = "your aliyun access key secret";
  9. aliyun.Endpoint = "your oss endpoint";
  10. aliyun.RegionId = "your sts region id";
  11. aliyun.RoleArn = "the arn of ram role";
  12. aliyun.RoleSessionName = "the name of the certificate";
  13. aliyun.Policy = "policy";
  14. aliyun.DurationSeconds = "expiration date";
  15. aliyun.ContainerName = "your aliyun container name";
  16. aliyun.CreateContainerIfNotExists = false;
  17. });
  18. });
  19. });

参阅BLOB存储文档 学习如何为指定容器配置提供程序.

选项

  • AccessKeyId ([NotNull]string): 云账号AccessKey是访问阿里云API的密钥,具有该账户完全的权限,请你务必妥善保管!强烈建议遵循阿里云安全最佳实践,使用RAM子用户AccessKey来进行API调用.
  • AccessKeySecret ([NotNull]string): 同上.
  • Endpoint ([NotNull]string): Endpoint表示OSS对外服务的访问域名. 访问域名和数据中心
  • UseSecurityTokenService (bool): 是否使用STS临时授权访问OSS,默认false. STS临时授权访问OSS
  • RegionId (string): STS服务的接入地址,每个地址的功能都相同,请尽量在同地域进行调用. 接入地址
  • RoleArn ([NotNull]string): STS所需角色ARN.
  • RoleSessionName ([NotNull]string): 用来标识临时访问凭证的名称,建议使用不同的应用程序用户来区分.
  • Policy (string): 在扮演角色的时候额外添加的权限限制. 请参见基于RAM Policy的权限控制.
  • DurationSeconds (int): 设置临时访问凭证的有效期,单位是s,最小为900,最大为3600.
  • ContainerName (string): 你可以在aliyun中指定容器名称. 如果没有指定它将使用 BlogContainerName 属性定义的BLOB容器的名称(请参阅BLOB存储文档). 请注意Aliyun有一些命名容器的规则,容器名称必须是有效的DNS名称,符合以下命名规则:
    • 只能包含小写字母,数字和短横线(-)
    • 必须以小写字母和数字开头和结尾
    • Bucket名称的长度限制在363个字符之间
  • CreateContainerIfNotExists (bool): 默认值为 false, 如果aliyun中不存在容器, AliyunBlobProvider 将尝试创建它.
  • TemporaryCredentialsCacheKey (bool): STS凭证缓存Key,默认Guid.NewGuid().ToString(“N”).

Aliyun BLOB 名称计算器

Aliyun BLOB提供程序组织BLOB名称并实现一些约定. 默认情况下BLOB的全名由以下规则确定:

  • 如果当前租户为 null(或容器禁用多租户 - 请参阅BLOB存储文档 了解如何禁用容器的多租户),则追加 host 字符串.
  • 如果当前租户不为 null,则追加 tenants/<tenant-id> 字符串.
  • 追加 BLOB 名称.

其他服务

  • AliyunBlobProvider 是实现Aliyun BLOB存储提供程序的主要服务,如果你想要通过依赖注入覆盖/替换它(不要替换 IBlobProvider 接口,而是替换 AliyunBlobProvider 类).
  • IAliyunBlobNameCalculator 服务用于计算文件路径. 默认实现是 DefaultAliyunBlobNameCalculator. 如果你想自定义文件路径计算,可以替换/覆盖它.
  • IOssClientFactory 服务用于生成OSS客户端. 默认实现是 DefaultOssClientFactory . 如果你想自定义OSS客户端生成,可以替换/覆盖它.