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 名称,符合 以下命名规则:- 容器名称长度必须在 3 到 63 个字符之间。
- 容器名称只能包含 小写 字母、数字、点(.)和连字符(-)。
- 容器名称必须以字母或数字开头和结尾。
- 容器名称不能格式化为 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实现。如果需要自定义,可以覆盖/替换它。
抠丁客


