BLOB Storing Aws提供程序

BLOB存储Aws提供程序可以将BLOB存储在Amazon Simple Storage Service中.

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

安装

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

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

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

配置

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

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

  1. Configure<AbpBlobStoringOptions>(options =>
  2. {
  3. options.Containers.ConfigureDefault(container =>
  4. {
  5. container.UseAws(Aws =>
  6. {
  7. Aws.AccessKeyId = "your Aws access key id";
  8. Aws.SecretAccessKey = "your Aws access key secret";
  9. Aws.UseCredentials = "set true to use credentials";
  10. Aws.UseTemporaryCredentials = "set true to use temporary credentials";
  11. Aws.UseTemporaryFederatedCredentials = "set true to use temporary federated credentials";
  12. Aws.ProfileName = "the name of the profile to get credentials from";
  13. Aws.ProfilesLocation = "the path to the aws credentials file to look at";
  14. Aws.Region = "the system name of the service";
  15. Aws.Name = "the name of the federated user";
  16. Aws.Policy = "policy";
  17. Aws.DurationSeconds = "expiration date";
  18. Aws.ContainerName = "your Aws container name";
  19. Aws.CreateContainerIfNotExists = false;
  20. });
  21. });
  22. });

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

选项

  • AccessKeyId (string): AWS Access Key ID.
  • SecretAccessKey (string): AWS Secret Access Key.
  • UseCredentials (bool): 使用本地凭证访问AWS服务,默认: false.
  • UseTemporaryCredentials (bool): 使用临时凭证访问AWS服务,默认: false.
  • UseTemporaryFederatedCredentials (bool): 使用联合身份用户临时凭证访问AWS服务, 默认: false.
  • ProfileName (string): 本地凭证配置文件名称.
  • ProfilesLocation (string): 本地配置文件位置.
  • Region (string): 服务的地区名称.
  • Policy (string): JSON格式的IAM策略.
  • DurationSeconds (int): 设置临时访问凭证的有效期,单位是s,最小为900,最大为129600.
  • ContainerName (string): 你可以在Aws中指定容器名称. 如果没有指定它将使用 BlogContainerName 属性定义的BLOB容器的名称(请参阅BLOB存储文档). 请注意Aws有一些命名容器的规则,容器名称必须是有效的DNS名称,符合以下命名规则:
    • Bucket名称必须介于 3 到 63 个字符之间.
    • Bucket名称只能由小写字母、数字、句点 (.) 和连字符 (-) 组成.
    • Bucket名称必须以字母或数字开头和结尾.
    • Bucket名称不能是ip (例如, 192.168.5.4).
    • Bucket名称不能以 xn— 开头, (对于2020年2月以后创建的 Bucket).
    • Bucket名称在分区中必须唯一 .
    • Bucket 与 Amazon S3 Transfer Acceleration 一起使用时名称中不能有句点 (.).
  • CreateContainerIfNotExists (bool): 默认值为 false, 如果Aws中不存在容器, AwsBlobProvider 将尝试创建它.

Aws BLOB 名称计算器

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

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

其他服务

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