.NET Core AWS S3云存储
前言
最近有需要用到AWS S3云存储上传附件,这里对利用.NET或.NET Core在调用SDK APi需要注意的一点小问题做个记录,或许能对后续有用到的童鞋提供一点帮助
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(); Console.WriteLine("Writing an object");
WritingAnObject(); Console.WriteLine("Reading an object");
ReadingAnObject(); Console.WriteLine("Deleting an object");
DeletingAnObject(); Console.WriteLine("Listing objects");
ListingObjects();
}
AWS S3上传附件要提供上传凭证和配置,AK(awsAccessKeyId)和SK(awsSecretAccessKey)作为凭证。Region(awsRegion)和EndPoint(awsEndPoint)作为配置,大部分情况下我们都是利用如下构造
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
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存储对象时暂遇到或需注意上述两个小问题,在此做一记录,若能帮到有需要的童鞋,将再好不过了。
.NET Core AWS S3云存储的更多相关文章
- 腾讯云VS AWS :云存储网关性能谁更优?
p { text-indent: 2em } 随着企业规模的扩大及业务的扩展,现有IT基础设施特别是存储设备无法满足爆炸性的数据增长,企业 IT 部门为了解决该问题,往往面临市场上多种存储产品及 ...
- AWS S3 对象存储服务
虽然亚马逊云非常牛逼,虽然亚马逊云财大气粗,虽然亚马逊用的人也非常多,可是这个文档我简直无法接受,特别是客服,令人发指的回复速度,瞬间让人无语,可是毕竟牛逼.忍了,躺一次坑而已 1.图片上传 1.1 ...
- 云存储的未来:Scale Up还是Scale Out?
云存储的几十年发展历程,其计算架构模型,也从Scale Up走向Scale Out.但是展望未来数字世界的海量需求,目前流行的模型还能够持续满足吗?本文通过对云存储历史的回顾,及对Scale Up ...
- AWS S3国内与国外的区别
S3云存储国际版目前正被某墙,国内部分地区只能下载不能上传,所以建议S3使用国内AWS的. 国内S3与国外S3在编程时注意以下几点: 1)URL不通用 国际版的S3可以使用不带Region的URL,例 ...
- 【系统设计】S3 对象存储
在本文中,我们设计了一个类似于 Amazon Simple Storage Service (S3) 的对象存储服务.S3 是 Amazon Web Services (AWS) 提供的一项服务, 它 ...
- Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传
背景起,有奏乐: 有伟人曰:学习技能的最好途径莫过于理论与实践相结合. 初学Node这货时,每每读教程必会Fall asleep. 当真要开发系统时,顿觉精神百倍,即便踩坑无数也不失斗志. 因为同团队 ...
- s3存储桶:s3可扩展的云存储
S3(Simple Storage Service,简单存储服务),即可扩展的云存储,又称桶存储,S3 是一种面向 Internet 的存储服务.S3为任意类型的文件提供临时或永久的存储服务.用于存储 ...
- harbor使用aws s3存储
参考:http://www.vmtocloud.com/how-to-configure-harbor-registry-to-use-amazon-s3-storage/ s3 bucket权限:更 ...
- aws S3存储概念
S3存储(Simple Storage Service) 存储桶:存储桶是S3中用于存储对象的容器.每个对象都存储在一个存储桶中. 对象:对象是S3中存储的基本实体.对象由对象数据和元数据组成.数据部 ...
随机推荐
- C语言讲义——“编译、链接”
HelloWorld 最简HelloWorld include <stdio.h> 指令:标准输入输出头文件. main函数 C语言程序的唯一入口. #include <stdio. ...
- 走进flex布局
简介:flex 是一个CSS的display 属性中新添加一个值. 随着inline-flex的使用,它将使它适用的元素成为一个flex container(伸缩容器),而这个元素的每个子元素将成为 ...
- 怎样安装Arch Linux以及Deepin桌面环境
一.概述 Arch Linux 是一个轻量级的Linux发行版本,实际上,Arch Linux提供给用户很多选择,用户可以自定义自己的安装过程,不x像其他很多的Linux发行版本,安装过程甚至是一个只 ...
- 最佳置换算法OPT
原文链接:https://www.jianshu.com/p/544ee20e307c
- 国产开源数据库:腾讯云TBase在分布式HTAP领域的探索与实践
导语 | TBase 是腾讯TEG数据平台团队在开源 PostgreSQL 的基础上研发的企业级分布式 HTAP 数据库系统,可在同一数据库集群中同时为客户提供强一致高并发的分布式在线事务能力以及高 ...
- PyQt(Python+Qt)学习随笔:使用pyqtConfigure建立信号和槽的连接
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在PyQt中,一般信号和槽的连接是通过connect方法建立的,语法如下: connect(slot ...
- Leetcode学习笔记(3)
题目1 ID88 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量 ...
- python+request+unittest+HTMLTestRunner
https://www.imooc.com/article/details/id/20813 https://www.cnblogs.com/fennudexiaoniao/p/7771931.htm ...
- vulnstack靶机实战01
前言 vulnstack是红日安全的一个实战环境,地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/最近在学习内网渗透方面的相关知识,通过对靶机的 ...
- 模拟数组 push() 方法
var array =[]; Array.prototype.push = function (){ for (var i=0; i< arguments.length; i++){ this[ ...