项目

AWS BLOB 存储提供程序

AWS BLOB 存储提供程序可以将 BLOB 存储在 Amazon 简单存储服务 (S3) 中。

请先阅读 BLOB 存储文档 了解如何使用 BLOB 存储系统。本文档仅介绍如何配置容器以使用 AWS BLOB 作为存储提供程序。

安装

使用 ABP CLI 将 Volo.Abp.BlobStoring.Aws NuGet 包添加到您的项目中:

  • 如果尚未安装,请先安装 ABP CLI
  • 在要添加 Volo.Abp.BlobStoring.Aws 包的 .csproj 文件所在目录打开命令行(终端)。
  • 运行 abp add-package Volo.Abp.BlobStoring.Aws 命令。

如需手动操作,请将 Volo.Abp.BlobStoring.Aws NuGet 包安装到项目中,并在项目的 ABP 模块 类中添加 [DependsOn(typeof(AbpBlobStoringAwsModule))]

配置

配置在模块的 ConfigureServices 方法中完成,具体说明请参考 BLOB 存储文档

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

Configure<AbpBlobStoringOptions>(options =>
{
    options.Containers.ConfigureDefault(container =>
    {
        container.UseAws(Aws =>
        {
            Aws.AccessKeyId = "您的 AWS 访问密钥 ID";
            Aws.SecretAccessKey = "您的 AWS 访问密钥";
            Aws.UseCredentials = "设置为 true 以使用凭据";
            Aws.UseTemporaryCredentials = "设置为 true 以使用临时凭据";
            Aws.UseTemporaryFederatedCredentials = "设置为 true 以使用联合临时凭据";
            Aws.ProfileName = "从中获取凭据的配置文件名称";
            Aws.ProfilesLocation = "查看 AWS 凭据文件的路径";
            Aws.Region = "服务的系统名称";
            Aws.Name = "联合用户名";
            Aws.Policy = "策略";
            Aws.DurationSeconds = "过期时间(秒)";
            Aws.ContainerName = "您的 AWS 容器名称";
            Aws.CreateContainerIfNotExists = true;
        });
    });
});

有关如何为特定容器配置此提供程序的详细信息,请参阅 BLOB 存储文档

选项

  • AccessKeyId (string):AWS 访问密钥 ID。
  • SecretAccessKey (string):AWS 访问密钥。
  • UseCredentials (bool):使用 凭据 访问 AWS 服务,默认值:false
  • UseTemporaryCredentials (bool):使用 临时凭据 访问 AWS 服务,默认值:false
  • UseTemporaryFederatedCredentials (bool):使用 联合用户临时凭据 访问 AWS 服务,默认值:false
  • ProfileName (string):从中获取凭据的 配置文件名称
  • ProfilesLocation (string):查看 AWS 凭据文件的路径。
  • Region (string):服务的系统名称。
  • Policy (string):要作为内联会话策略使用的 IAM 策略(JSON 格式)。
  • DurationSeconds (int):临时访问凭证的有效期(秒),最小值为 900,最大值为 3600。注意:如果使用子账户操作的 OSS,值为 0。
  • ContainerName (string):可以在 AWS 中指定容器名称。如果未指定,则使用 BlobContainerName 属性定义的 BLOB 容器名称(参见 BLOB 存储文档)。请注意,AWS 对容器命名有一些 规则。容器名称必须是有效的 DNS 名称,符合 以下命名规则
    • 容器名称长度必须在 363 个字符之间。
    • 容器名称只能包含 小写 字母、数字、点(.)和连字符(-)。
    • 容器名称必须以字母或数字开头和结尾。
    • 容器名称不能格式化为 IP 地址(例如 192.168.5.4)。
    • 容器名称不能以 xn-- 开头(适用于 2020 年 2 月后创建的容器)。
    • 容器名称在分区内必须唯一。
    • 与 Amazon S3 传输加速一起使用的容器名称不能包含点(.)。有关传输加速的更多信息,请参阅 Amazon S3 传输加速。
  • CreateContainerIfNotExists (bool):默认值为 false。如果 AWS 中不存在容器,AwsBlobProvider 将尝试创建它。

AWS BLOB 名称计算器

AWS BLOB 提供程序组织 BLOB 名称并实现了一些约定。默认情况下,BLOB 的完整名称由以下规则确定:

  • 如果 当前租户null(或容器的多租户已禁用 - 参见 BLOB 存储文档 了解如何为容器禁用多租户),则附加 host 字符串。
  • 如果当前租户不为 null,则附加 tenants/<租户 ID> 字符串。
  • 附加 BLOB 名称。

其他服务

  • AwsBlobProvider 是实现 AWS BLOB 存储提供程序的主要服务。如果需要通过 依赖注入 覆盖/替换它(不要替换 IBlobProvider 接口,而是替换 AwsBlobProvider 类)。
  • IAwsBlobNameCalculator 用于计算完整的 BLOB 名称(如上所述)。默认由 DefaultAwsBlobNameCalculator 实现。
  • IAmazonS3ClientFactory 用于创建 OSS 客户端。默认由 DefaultAmazonS3ClientFactory 实现。如果需要自定义,可以覆盖/替换它。
在本文档中