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存储提供程序
Configure<AbpBlobStoringOptions>(options =>
{
options.Containers.ConfigureDefault(container =>
{
container.UseAws(Aws =>
{
Aws.AccessKeyId = "your Aws access key id";
Aws.SecretAccessKey = "your Aws access key secret";
Aws.UseCredentials = "set true to use credentials";
Aws.UseTemporaryCredentials = "set true to use temporary credentials";
Aws.UseTemporaryFederatedCredentials = "set true to use temporary federated credentials";
Aws.ProfileName = "the name of the profile to get credentials from";
Aws.ProfilesLocation = "the path to the aws credentials file to look at";
Aws.Region = "the system name of the service";
Aws.Name = "the name of the federated user";
Aws.Policy = "policy";
Aws.DurationSeconds = "expiration date";
Aws.ContainerName = "your Aws container name";
Aws.CreateContainerIfNotExists = false;
});
});
});
参阅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中指定容器名称. 如果没有指定它将使用
BlobContainerName
属性定义的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客户端生成,可以替换/覆盖它.