Amazon S3 概念及如何集成到 .net 8 C#

news/2024/12/11 16:13:35/文章来源:https://www.cnblogs.com/carmen-019/p/18598416

本文主要分为两个部分:

1、Amazon S3 相关概念

2、.net 集成的代码

* 阅读提示 :鼠标悬停在 章节标题 上可见 文章目录




Amazon S3(Simple Storage Service)是一个高度可扩展、数据可用性高安全性强的对象存储服务

Amazon S3 使用对象存储架构,数据以对象的形式存储在桶(buckets)中,每个对象都有一个唯一的键(key)。

 

1、概念

bucket

bucket 是存储 object 的容器,可以按照业务划分出一个 bucket,一个 bucket 中存储多个 object,每个 object 都有自己的唯一标识 key。

 

bucket 类型

bucket 主要有 3 种类型,分别是 General purpose bucket,Direcotry bucket,Table bucket。

  • General purpose bucket

创建 bucket 时的默认类型,它也是 S3 中最主要使用的类型

  • Directory bucket

这种类型的 bucket 的 location type 限制使用 Availability Zone 或者 Local Zone

为了低延迟,可以指定你的 Amazon EC2、Amazon EKS 或者 Amazon ECS 计算实例位于同一位置 AWS 区域和可用区。

  • Table bucket

提供一种便于大数据分析的表格式的存储方式。

支持 Apache Iceberg 格式,查询速度高于普通 S3 bucket。

无缝集成:可以和 AWS 的分析服务(像 Amazon Athena, Amazon Redshift, AWS Glue Data Catalog)以及开源查询引擎(如 Apache Spark)无缝集成

更多:

[1] Tabular Data Storage At Scale - Amazon S3 Tables - AWS

[2] Table buckets - Amazon Simple Storage Service

 

 

bucket 属性

下表将列出一些在配置 bucket 时需要关注的、比较常用的 bucket 属性

region 这个 bucket 所属物理位置,和 AWS 账号的 region 是一致的
name  
access 读写权限相关
versioning 在 bucket 中允许存储一个 object 有不同的版本
tag 可选项,加一些标签来区分其他的 bucket
default encryption 对于存储的 object 是否加密,可以不启用;启用需要选择加密方式
object lock 当写入该 object 的时候是否锁定该 object
lifecycle 生命周期管理,一个 object 被上传到 ticket 之后多少时间要触发什么动作,或者多久该 object 被清除掉等等配置
.. ..

 

生命周期管理的一个示例:

此处配置当一个 object 被 upload 到 bucket 后,一天之后该数据过期,但过期并不做任何处理,即并不会被删除

 

object

当进入一个指定的 bucket 后,会看到它的 object 列表

 

每一个 object 都有一个自己的 key,这是检索、找回这个 object 唯一方式

  • object 可以是一个文件
  • object 支持类似于文件夹似的对象管理方式,通过对 key 的命名方式来实现

例如

object

key

object 1

folder1/key1

object 2

folder1/key2

object 3

folder1/key3

这里实际上有 3 个object,但是在 Amazon S3 中查找这 3 个文件的时候,它会以文件目录的方式显示。

使其看起来像是一个文件夹类型的 object,但这只是 S3 网页上的呈现方式,是一种做好分类以便于查阅的前端手段。

 

 

  • S3 是分布式存储

为了数据高可用性,S3 会多处备份,所以有些 object key 看似逻辑相似,但物理存储位置都是不同的。

 

 

 

安全性保证

  • 支持数据加密

 

  • 权限管理

 

  • bucket policy 访问策略

这里是 json 的格式配置哪个AWS用户可以访问该 S3 的哪个 bucket 资源,可以允许什么操作

 

 

 

监控与指标 Metric

  • 常规监控指标:bucket 大小,object 数量

 

  • 与 AWS cloud watch 集成

 

 

 

 

2、与 .net 8 api 项目集成

1、配置 AWS 凭证

确保本地机器 AWS 凭证已配置好,通常,凭证文件位于 ~/.aws/credentials。

 

2、包依赖

dotnet add package AWSSDK.S3

 

在你的 .NET 项目中,创建一个 Amazon S3 客户端实例:

using Amazon.S3;
using Amazon.S3.Model;var s3Client = new AmazonS3Client();
// new AmazonS3Client(config.AccessKey, config.SecretKey, RegionEndpoint.GetBySystemName(config.Region));

 

下列实例代码使用的是 3.7.9.56 版本 SDK

<PackageReference Include="AWSSDK.S3" Version="3.7.9.56" />

 

3、实现基本操作

你可以实现基本的 S3 操作,如创建 bucket、上传文件、下载文件等。

  • 创建 bucket
var putBucketRequest = new PutBucketRequest
{BucketName = "your-bucket-name",UseClientRegion = true
};var putBucketResponse = await s3Client.PutBucketAsync(putBucketRequest);

 

  • 上传文件
var putObjectRequest = new PutObjectRequest
{
    BucketName = "your-bucket-name",
    Key = "your-file-key",
    FilePath = "path/to/your/file"
};var putObjectResponse = await s3Client.PutObjectAsync(putObjectRequest);

 

  • 下载文件
var getObjectRequest = new GetObjectRequest
{BucketName = "your-bucket-name",Key = "your-file-key"
};using (var getObjectResponse = await s3Client.GetObjectAsync(getObjectRequest))
using (var responseStream = getObjectResponse.ResponseStream)
using (var fileStream = File.Create("path/to/save/file"))
{await responseStream.CopyToAsync(fileStream);
}

 

 

4、处理错误和异常

确保在代码中处理可能出现的错误和异常,例如网络问题或权限问题。

 

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

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

相关文章

SAP QM 客户退货检验的三种实现方案

SAP QM 客户退货检验的三种实现方案在SAP项目上,客户退货检验场景经常遇到。如果项目上启用QM模块,要在SAP 里实现客户退货场景的质量检验,有三种实现方式。本文将对这三种实现方案做简要说明,与同行共勉。1, 客户退货的收货启用移动类型651,物料激活检验类型06, 退货交货…

违规抽烟识别智慧矿山一体机在矿山监控项目中,如何选择合适的POE网络摄像机以及常见问题处理?

随着技术的飞速进步,POE(Power over Ethernet,以太网供电)技术在安防监控领域的应用越来越广泛,它为网络监控施工带来了革命性的改变。POE技术允许通过单一的以太网电缆同时传输数据和电力,大大简化了监控系统的布线复杂度,并降低了安装成本。在矿山监控系统中,选择适合…

ProCom: A Few-shot Targeted Community Detection Algorithm翻译

ProCom: A Few-shot Targeted Community Detection Algorithm翻译 ProCom:一种少样本目标社区检测算法 Xixi Wu; Kaiyu Xiong KDD 2024 复旦大学 Yun Xiong 通信作者 社区检测方法标注数据较少,论文通过预训练提示学习的方法解决该问题。 3方法 在本节中,将介绍提…

Github上博客园SimpleMemory主题美化插件使用体验

Github上博客园SimpleMemory主题美化插件使用体验 目录Github上博客园SimpleMemory主题美化插件使用体验基本设置SimpleMemory插件地址管理选项管理侧边栏管理页面定制合影 基本设置 进入博客园管理界面,完成基础设置。皮肤模版 选择SimpleMemory作为基础模版。 JS权限 如果开…

低成本解决方案,RK3506的应用场景分析!

RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低…

debug模式调试代码

第一步 打断点 点击debug的图标 鼠标遮住的就是debug按钮 第二步 按F8 单步执行 如果是函数F7会进入函数内部调试 从函数中退出 shift +F8

中电金信携手中远海科,共启贸易金融数智新篇章

在数智化转型成为驱动经济社会高质量发展的新引擎背景下,“数智方案”栏目聚焦金融等国计民生重点行业场景,依托中电金信“源启筑基+咨询引领+应用重构”的产品及服务体系,输出市场洞察和行业解决方案、应用案例,旨在全面推动行业IT架构升级、数智化转型。近年来,全球化进…

Topology-Driven Multi-View Clustering via Tensorial Refined Sigmoid Rank Minimization翻译

Topology-Driven Multi-View Clustering via Tensorial Refined Sigmoid Rank Minimization翻译 通过张量化改进的Sigmoid秩最小化实现的拓扑驱动多视图聚类 Zhibin Gu KDD 2024 北京交通大学 冯松鹤 通信作者 PANDA模型从欧几里得图中提取拓扑结构,以有效捕捉数据点…

解决跨境电商痛点:文档管理软件不可或缺

对于跨境电商卖家来说,业务管理的复杂程度远高于单一市场。面对产品信息翻译、市场调研、物流方案制定以及售后服务等多重任务,如何高效管理文档成为了一项关键能力。而随着双十二的临近,订单量激增,许多卖家面临的并非流量不足,而是管理失控。 从“杂乱文档”到“高效协作…

docker 部署的 蓝鲸bk-cmdb 的一些注意事项

官方地址: https://github.com/TencentBlueKing/bk-cmdb/blob/master/docs/wiki/container-support.md 官方的一些安装文档的槽点 1、没有告知docker部署的登录用户和密码。 2、什么信息也不给就直接恭喜你能用了:假设系统的地址是192.168.1.100,我部署时将端口映射为“-p 8…

Node.js版本管理工具之NVM的安装使用教程

一、NVM介绍 在工作中,不同的项目可能需要不同NodeJS版本,所以维护多个版本比较麻烦,因此NVM(node.js version management) 应运而生,顾名思义它是一个nodejs的版本管理工具,它可以多版本node并存,轻松切换node版本,下面就开始介绍他的安装配置及使用。 二、NVM的下载安…

js逆向学习-1 逆向rsa简单加密

js逆向学习-1RSA加密 Rsa加密包含一个key 和一个mode这个mode 默认 10001,也可以修改 观察发送的数据 首先点击登录 选择xhr这个筛选模块,可以看到这里面只有这个check的数据请求,然后查看发送的数据,可以看到这里的密码是进行加密的然后记录这些值 打断点 知道了请求和加…