日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

發布時間:2025/3/8 C# 38 如意码农
生活随笔 收集整理的這篇文章主要介紹了 Amazon S3 概念及如何集成到 .net 8 C# 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Amazon S3(Simple Storage Service)是一個高度可擴展、數據可用性高安全性強的對象存儲服務

Amazon S3 使用對象存儲架構,數據以對象的形式存儲在桶(buckets)中,每個對象都有一個唯一的鍵(key)。

本文主要分為兩個部分:

1、Amazon S3 相關概念

2、.net 集成的代碼

* 閱讀提示 :鼠標懸停在 章節標題 上可見 文章目錄

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、處理錯誤和異常

確保在代碼中處理可能出現的錯誤和異常,例如網絡問題或權限問題。

總結

以上是生活随笔為你收集整理的Amazon S3 概念及如何集成到 .net 8 C#的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。