.NET Core AWS S3云存储

【导读】最近有需要用到AWS S3云存储上传附件,这里对利用.NET或.NET Core在调用SDK APi需要注意的一点小问题做个记录,或许能对后续有用到的童鞋提供一点帮助

Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。

这意味着各种规模和行业的客户都可以使用 S3 来存储并保护各种用例(如数据湖、网站、移动应用程序、备份和还原、存档、企业应用程序、IoT 设备和大数据分析)的数据,容量不限。Amazon S3 提供了易于使用的管理功能,因此您可以组织数据并配置精细调整过的使用权限控制,从而满足特定的业务、组织和合规性要求。Amazon S3 可达到 99.999999999%(11 个 9)的持久性,并为全球各地的公司存储数百万个应用程序的数据。

AWS S3云存储

官方已提供针对.NET/.NET Core针对S3的APi

https://docs.aws.amazon.com/sdkfornet/v3/apidocs/

以及SDK demo

https://github.com/awslabs/aws-sdk-net-samples

首先我们下载针对.NET Core的SDK包(AWSSDK.Core)以及通过S3存储对象包(AWSSDK.S3),如下图所示

接下来我们再利用官方所给SDK Demo,如下:

using (client = new AmazonS3Client(RegionEndpoint.USWest2))
{Console.WriteLine("Listing buckets");ListingBuckets();Console.WriteLine("Creating a bucket");CreateABucket();......
}

因为上述构造S3客户端直接使用地区,所以此时并不能直接复制拿来使用,AWS S3上传附件要提供上传凭证和配置

一般情况下我们都是利用如下构造

public AmazonS3Client(AWSCredentials credentials, AmazonS3Config clientConfig);

因凭证就是AK/SK,我们也可直接提供AK、SK,如下构造,一切根据实际业务对接情况而具体分析

public AmazonS3Client(string awsAccessKeyId, string awsSecretAccessKey, AmazonS3Config clientConfig);

通过官网介绍,凭证可以通过配置文件、环境变量等等共享,这一块并不是重点,未细看,请忽略,我直接将其存放到配置文件中。最终构造AWSS3Client,如下代码:

//提供awsAccessKeyId和awsSecretAccessKey构造凭证
var credentials = new BasicAWSCredentials(awsAccessKeyId, awsSecretAccessKey);//提供awsEndPoint(域名)进行访问配置
var clientConfig = new AmazonS3Config
{ServiceURL = awsEndPoint
};var amazonS3Client = new AmazonS3Client(credentials, clientConfig);

AWS提供了常用的ReginEndPoint,但若对接方提供了自定义Region,则需通过如下配置获取RegionEndPoint,参数地区awsRegion比如为cn.south.shenzhen

var clientConfig = new AmazonS3Config
{RegionEndpoint = RegionEndpoint.GetBySystemName(awsRegion),ServiceURL = awsEndPoint
};

此时再运行将会抛出如下异常:

针对上述访问配置,继续配置ForcePathStyle为true,说明请求都将采用路径风格地址,根据猜测因为我们使用指定域名(ServiceURL)来发送请求,所以必须要指定此属性。

var clientConfig = new AmazonS3Config
{RegionEndpoint = RegionEndpoint.GetBySystemName(awsRegion),ServiceURL = awsEndPoint,ForcePathStyle = true
};

????  .NET Core使用AWS S3云存储 ,无非就是APi调用侠,没啥技术含量,只不过需要稍稍需注意以上两个小问题就好,继而则可对桶、对象进行相关业务逻辑操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle数据库查看size,[oracle] 查看oracle数据库表空间使用率,定位数据size较大对象...

1.查看表空间使用情况with ts as (SELECT d.tablespace_name "Name", d.status "Status",TO_CHAR (NVL (a.MAXBYTES / 1024 / 1024 /1024, 0), 99,999,990.90) "Maxsize (G)",TO_CHAR (NVL (a.BYTES / 1024 / 1024 /1024, 0), 99,999,990.90) &q…

如何解决在ASP.NET Core中找不到图像时设置默认图像

背景web上如果图片不存在一般是打xx,这时候一般都是会设置默认的图片代替。现在用中间件的方式实现统一设置, 一次设置,全部作用 。此示例演示如何解决在ASP.NET Core中找不到图像时设置默认图像先决条件Visual Studio 2017或更高版本。启用V…

缩减oracle日志,[20180829]减少日志生成量.txt

[20180829]减少日志生成量.txt--//最近一段时间优化一下生产数据库,主要是问题比我预计要严重,实际上exadata实在太快了,把许多问题都给掩盖了.--//实际上这个问题很早就存在,我实在不想提,基于国内许多应用都可能存在类似问题,还是写一下.SQL ordered by Executions%CPU - CPU…

ACM中算法时间约束

ACM中算法时间约束 一般ACM竞赛C/C的时间限制是一秒,因此可以根据题目数据来推断该题所使用的算法。 算法的时间复杂度在 1 0 7 10^7 107左右合适,最多不能超过 1 0 8 10^8 108, O ( n ) O(n) O(n)的极限就在 1 0 8 10^8 108左右。 问题规…

MiniProfiler,一个.NET简单但有效的微型分析器

背景MVC MiniProfiler是Stack Overflow团队设计的一款对ASP.NET MVC的性能分析的小程序。可以对一个页面本身,及该页面通过直接引用、Ajax、Iframe形式访问的其它页面进行监控,监控内容包括数据库内容,并可以显示数据库访问的SQL(支持EF、EF …

oracle类似isempty,NULLs和empty strings在不同数据库的中特点

1.以oracle为例SQL> create table test(id int primary key,content varchar(20));SQL> INSERT INTO test (id, content) VALUES (1, NULL);SQL> INSERT INTO test (id, content) VALUES (2, );SQL> INSERT INTO test (id, content) VALUES (3, );SQL> INSERT …

龙芯.NET正式发布 稳步推进生态建设

2020年12月19日,2020中国. NET开发者大会于苏州开幕。此次大会上,龙芯发布了龙芯.NET 3。龙芯.NET 3基于.NET Core 3.1,支持该版本具备的所有主要功能,包括GC、AOT等。CoreCLR、CoreFX、ASP.NET Core等库的测试通过情况与x64/arm6…

有温度的技术,改善上亿人的生活

06有温度的技术,改善上亿人的生活鱼小皮哥,现在的 APP 真是越来越难用了,功能多、操作复杂、广告更多。唉,可不是么,而且人们的生活已经离不开 APP 了!老百鱼小皮我爷爷最近的视力下降的很快,用…

Linux链接文件包括,Linux操作系统——系统各目录有什么作用、以及文件链接过程...

三、 Linux 系统目录结构/bin — 用来贮存用户命令。目录 /usr/bin 也被用来贮存用户命令。/sbin — 许多系统命令(例如 shutdown)的贮存位置。目录 /usr/sbin 中也包括了许多系统命令。/root — 根用户(超级用户)的主目录。/mnt — 该目录中通常包括系统引导后被挂载的文件系统…

linux脚本传参修改配置文件,shell脚本修改配置文件指定行的值

配置文件内容为Version1ExpireTime300MaxProcessTime15MaxQueueSize2000MaxStatisticsTime1000000StatisticsCount10根据关键字MaxStatisticsTime获取行号,修改对应的value值change_file.sh#!/bin/bashfile_name"config.xml"key_value"MaxStatisticsTime"c…

刚转Java?那准备转回.NET5吧!

再过几天就2021年了,回首今年最大的变化就是.NET5的发布,终结了.NET Framework和.NET Core两个分支。虽然因为新冠疫情原因,原定于.NET5的部分功能被推迟到.NET6了,但.NET5是一个非常非常重要的版本,会载入史册的一个版…

azure linux 多磁盘 lvm,EVE-NG扩展磁盘空间(扩展LVM卷)

环境准备系统环境:EVE-PRO-VM-2.0.4-20前期是使用ova导入安装,精简置备,40G虚拟磁盘容量。空间不足,尝试了很久,记录操作记录如下:血泪教训:操作不当有可能引起数据丢失,需要提前备份…

在 xunit 测试项目中使用依赖注入

在 xunit 测试项目中使用依赖注入Intro之前写过几篇 xunit 依赖注入的文章,今天这篇文章将结合我在 .NET Conf 上的分享,更加系统的分享一下在测试中的应用案例。之所以想分享这个话题是因为我觉得在我们开发过程中测试是非常重要的一部分,高…

linux 端口qos,linux的qos机制 - cgroup篇 (2)

这篇重点讲述cgroup如何控制blkio子系统的qos,首先看下设置blkio.weight blkio.weight_device我的理解是blkio.weight是整个io子系统的权重值,而blkio.weight_device是针对特定的major:minor 设备的权重blkio.throttle.read_bps_device blkio.throttle.w…

利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具

利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具独立观察员 2020 年 12 月 26 日前一段看到微信公众号 “码农读书” 上发了一篇文章《如何使用 C# 中的 FileSystemWatcher》(翻译自:https://www.infoworld.com/article/3185447/how-to-work-w…

u盘安全删除 linux,为什么要安全删除U盘

原标题:为什么要安全删除U盘移除闪存设备时会对电脑造成危害吗?我们为什么要安全的移除它们?历史上,操作系统将磁盘作为信任对象不需要突然改变状态。当读写文件时,操作系统不希望文件在读写的过程中突然消失。如果文件…

如何在 C# 中使用 投影(Projection)

投影(Projection) 是一种可以将查询结果进行 塑性 的一种操作,你可以使用 投影 将一个 object 转成仅包含你需要属性的新对象,这篇文章中,我们就一起看看如何使用 投影 功能。C# 中的投影 LINQ 集成查询中有两个支持投影的扩展方法&#xff0…

Linux vi 双屏显示,manjaro AwesomeWM 上使用双显示器

安装manjaro时使用独显的单显示器,在主板上接第二个显示器一直没反应。几个问题和解决BIOS里检查是否关闭了集显开关大多数显卡的默认设置都会在识别独显后关闭集显,要使用集显上的接口需要单独设置。如果接口允许,最好将两个显示器都接在独显…

asp.net core中使用cookie身份验证

背景ASP.NET Core Identity 是一个完整的全功能身份验证提供程序,用于创建和维护登录名。 但是, cookie 不能使用基于的身份验证提供程序 ASP.NET Core Identity 。配置在 Startup.ConfigureServices 方法中,创建具有 AddAuthentication 和 A…

Linux语言写的高通滤波,高通滤波器c语言实现

描述高通滤波器,又称低截止滤波器、低阻滤波器,允许高于某一截频的频率通过,而大大衰减较低频率的一种滤波器。它去掉了信号中不必要的低频成分或者说去掉了低频干扰。高通滤波器是一种让某一频率以上的信号分量通过,而对该频率以…