国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[ 云計算 | AWS 實踐 ] Java 應(yīng)用中使用 Amazon S3 進(jìn)行存儲桶和對象操作完全指南

這篇具有很好參考價值的文章主要介紹了[ 云計算 | AWS 實踐 ] Java 應(yīng)用中使用 Amazon S3 進(jìn)行存儲桶和對象操作完全指南。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

[ 云計算 | AWS 實踐 ] Java 應(yīng)用中使用 Amazon S3 進(jìn)行存儲桶和對象操作完全指南,# 云計算入門與實踐 - AWS,# 云計算解決方案與架構(gòu)(FY23H2~FY24),云計算,aws,java,云平臺

本文收錄于【#云計算入門與實踐 - AWS】專欄中,收錄 AWS 入門與實踐相關(guān)博文。

本文同步于個人公眾號:【云計算洞察

更多關(guān)于云計算技術(shù)內(nèi)容敬請關(guān)注:CSDN【#云計算入門與實踐 - AWS】專欄。

本系列已更新博文:

  • [ 云計算 | AWS 實踐 ] Java 應(yīng)用中使用 Amazon S3 進(jìn)行存儲桶和對象操作完全指南
  • [ 云計算 | AWS 實踐 ] Java 如何重命名 Amazon S3 中的文件和文件夾
  • [ 云計算 | AWS 實踐 ] 使用 Java 列出存儲桶中的所有 AWS S3 對象
  • [ 云計算 | AWS 實踐 ] 使用 Java 更新現(xiàn)有 Amazon S3 對象
  • [ 云計算 | AWS 實踐 ] 基于 Amazon S3 協(xié)議搭建個人云存儲服務(wù)
  • [ 云計算 | AWS 實踐 ] 使用 Java 檢查指定的密鑰是否存在于給定的 Amazon S3 存儲桶中

一、前言

在本文中,我們將探索如何利用 Java 編程與 Amazon S3(即簡單存儲服務(wù))存儲系統(tǒng)進(jìn)行互動。

需要牢記,S3 的結(jié)構(gòu)異常簡單:每個存儲桶能夠容納大量的對象,這些對象可以通過 SOAP 接口或 REST 風(fēng)格的 API 進(jìn)行訪問。

接下來,我們將使用適用于Java的AWS開發(fā)工具包來實現(xiàn)S3存儲桶的創(chuàng)建、列舉以及刪除。同時,我們還將學(xué)會如何上傳、列舉、下載、復(fù)制、移動、重命名以及刪除這些存儲桶內(nèi)的各個對象。

二、所需 Maven 依賴

在開始之前,我們需要在項目中聲明 AWS SDK 依賴項:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>s3</artifactId>
    <version>2.20.52</version>
</dependency>

要查看最新版本,我們可以檢查 Maven Central,或者其他的國內(nèi) Maven 倉庫。

三、先決必要的幾個條件信息

要使用AWS SDK,我們需要一些東西:

  1. AWS 帳戶:我們需要一個 Amazon Web Services 帳戶。如果我們沒有,我們可以直接在 AWS 控制臺創(chuàng)建一個帳戶。
  2. AWS 安全憑證:這些是我們的訪問密鑰,允許我們以編程方式調(diào)用 AWS API 操作。我們可以通過兩種方式獲取這些憑證:使用“安全憑證”頁面的訪問密鑰部分中的 AWS 根賬戶憑證,或者使用IAM控制臺中的 IAM 用戶憑證。
  3. 選擇 AWS 區(qū)域(Region):我們還必須選擇要存儲 Amazon S3 數(shù)據(jù)的 AWS 區(qū)域。請記住,S3 存儲價格因地區(qū)而異。有關(guān)更多詳細(xì)信息,請參閱官方文檔。

四、創(chuàng)建客戶端連接

首先,我們需要創(chuàng)建一個客戶端連接來訪問 Amazon S3 Web 服務(wù)。為此,我們將使用 Amazon S3 接口:

AWSCredentials credentials = new BasicAWSCredentials(
  "<AWS accesskey>", 
  "<AWS secretkey>"
);

然后我們將配置客戶端:

AmazonS3 s3client = AmazonS3ClientBuilder
  .standard()
  .withCredentials(new AWSStaticCredentialsProvider(credentials))
  .withRegion(Regions.US_EAST_2)
  .build();

五、Amazon S3 存儲桶操作

5.1. 創(chuàng)建桶

需要注意的是,存儲桶命名空間是由系統(tǒng)的所有用戶共享的。因此,我們的存儲桶名稱在 Amazon S3 中的所有現(xiàn)有存儲桶名稱中必須是唯一的(稍后我們將了解如何檢查這一點)。

另外,根據(jù)官方文檔規(guī)定,Bucket 名稱必須符合以下要求:

  • 名稱不應(yīng)包含下劃線
  • 名稱長度應(yīng)介于 3 到 63 個字符之間
  • 名稱不應(yīng)以破折號結(jié)尾
  • 名稱不能包含相鄰的句點
  • 名稱后面不能包含破折號(例如,“my-.bucket.com”和“my.-bucket”無效)
  • 名稱不能包含大寫字符

現(xiàn)在讓我們創(chuàng)建一個存儲桶:

String bucketName = "baeldung-bucket";

if(s3client.doesBucketExist(bucketName)) {
    LOG.info("Bucket name is not available."
      + " Try again with a different Bucket name.");
    return;
}
CreateBucketRequest bucketRequest = CreateBucketRequest.builder()
    .bucket(bucketName)
    .build();

s3Client.createBucket(bucketRequest);

在創(chuàng)建存儲桶之前,我們必須使用doesBucketExist()方法檢查存儲桶名稱是否可用。如果名稱可用,那么我們將構(gòu)建一個CreateBucketRequest 并提供存儲桶名稱。最后一步是將bucketRequest傳遞給 S3Client 的CreateBucketRequest createBucketRequestcreateBucket。

5.2. 列出桶

現(xiàn)在我們已經(jīng)創(chuàng)建了一些存儲桶,讓我們使用listBuckets ()方法打印 S3 環(huán)境中可用的所有存儲桶的列表。此方法將返回一個ListBucketsResponse, 其中包含有關(guān)存儲桶的信息。

ListBucketsResponse listBucketsResponse = s3Client.listBuckets();

// Display the bucket names
List<Bucket> buckets = listBucketsResponse.buckets();
System.out.println("Buckets:");
for (Bucket bucket : buckets) {
    System.out.println(bucket.name());
}

這將列出 S3 環(huán)境中存在的所有存儲桶:

baeldung-bucket
baeldung-bucket-test2
elasticbeanstalk-us-east-2

5.3. 刪除桶

在刪除存儲桶之前,確保存儲桶是空的非常重要。 否則,將會拋出異常。

首先,我們需要構(gòu)建一個DeleBucketRequest實例并向其傳遞存儲桶名稱。然后,我們調(diào)用 s3Client 對象上的deleteBucket方法,并將請求作為參數(shù)傳遞。

另請注意,只有存儲桶的所有者才能刪除它,無論其權(quán)限如何(訪問控制策略):

try {
    DeleteBucketRequest deleteBucketRequest = DeleteBucketRequest.builder()
        .bucket(bucketName)
        .build();

    s3Client.deleteBucket(deleteBucketRequest);
    System.out.println("Successfully deleted bucket : " + bucketName);
} catch (S3Exception e) {
    System.err.println(e.getMessage());
    System.exit(1);
}

六、Amazon S3 對象操作

Amazon S3 存儲桶內(nèi)的文件或數(shù)據(jù)集合稱為對象。我們可以對對象執(zhí)行多種操作,例如上傳、列出、下載、復(fù)制、移動、重命名和刪除。

6.1. 上傳對象

上傳對象是一個非常簡單的過程。首先,我們將構(gòu)建一個PutObjectRequest實例,指定存儲桶名稱和密鑰。然后,我們將該請求和包含數(shù)據(jù)的文件的路徑傳遞給 s3Client 的putObject方法:

PutObjectRequest request = PutObjectRequest.builder()
    .bucket(bucketName)
    .key(key)
    .build();

return s3Client.putObject(request, Path.of(file.toURI()) );

6.2. 列出對象

我們將使用listObjects()方法列出 S3 存儲桶中的所有可用對象:

ListObjectsV2Request listObjectsV2Request = ListObjectsV2Request.builder()
    .bucket(bucketName)
    .build();
ListObjectsV2Response listObjectsV2Response = s3Client.listObjectsV2(listObjectsV2Request);

List<S3Object> contents = listObjectsV2Response.contents();

System.out.println("Number of objects in the bucket: " + contents.stream().count());
contents.stream().forEach(System.out::println);

要列出 AWS S3 存儲桶中的對象,我們需要創(chuàng)建一個ListObjectsV2Request實例并指定存儲桶名稱。然后,我們在 s3Client 對象上調(diào)用 listObjectsV2方法,并將請求作為參數(shù)傳遞。此方法返回一個ListObjectsV2Response,其中包含有關(guān)存儲桶中對象的信息。

6.3. 下載對象

要下載對象,我們首先創(chuàng)建一個GetObjectRequest實例并將存儲桶名稱和密鑰作為輸入?yún)?shù)傳遞給它。然后,我們將其提供給 getObjectAsBytes()方法并獲取響應(yīng)。一旦我們得到響應(yīng),我們就可以提取字節(jié)數(shù)組。最后一步是處理字節(jié)數(shù)組:

GetObjectRequest objectRequest = GetObjectRequest.builder()
    .bucket(bucketName)
    .key(objectKey)
    .build();

ResponseBytes<GetObjectResponse> responseResponseBytes = s3Client.getObjectAsBytes(objectRequest);

byte[] data = responseResponseBytes.asByteArray();

// Write the data to a local file.
java.io.File myFile = new java.io.File("/Users/user/Desktop/hello.txt" );
OutputStream os = new FileOutputStream(myFile);
os.write(data);
System.out.println("Successfully obtained bytes from an S3 object");
os.close();

6.4. 復(fù)制、重命名和移動對象

我們可以通過調(diào)用 s3client 上的copyObject()方法來復(fù)制對象,該方法接受CopyObjectRequest實例。因此,CopyObjectRequest接受四個參數(shù):

  1. 源存儲桶名稱
  2. 源存儲桶中的對象鍵
  3. 目標(biāo)存儲桶名稱(可以與源存儲桶名稱相同)
  4. 目標(biāo)存儲桶中的對象鍵
CopyObjectRequest copyObjectRequest = CopyObjectRequest.builder()
    .sourceBucket(sourceBucketName)
    .sourceKey(sourceKey)
    .destinationBucket(destinationBucketName)
    .destinationKey(destinationKey)
    .build();

return s3Client.copyObject(copyObjectRequest);

注意:我們可以結(jié)合使用copyObject()方法和deleteObject()來執(zhí)行移動和重命名任務(wù)。這將涉及首先復(fù)制對象,然后將其從舊位置刪除。

6.5. 刪除對象

要刪除對象,我們將在s3client上調(diào)用deleteObject()方法并傳遞DeleteObjectRequest實例。為了創(chuàng)建DeleteObjectRequest實例,我們需要傳遞要刪除的對象的鍵和存儲桶名稱:

DeleteObjectRequest deleteObjectRequest = DeleteObjectRequest.builder()
    .bucket(bucketName)
    .key(objectKey)
    .build();

s3Client.deleteObject(deleteObjectRequest);

6.6. 刪除多個對象

要一次刪除多個對象,我們首先創(chuàng)建DeleteObjectsRequest對象并傳遞存儲桶。然后我們將傳遞一個包含所有要刪除的對象鍵的 ArrayList。

一旦我們有了這個DeleteObjectsRequest對象,我們就可以將它作為參數(shù)傳遞給我們的 s3client 的deleteObjects()方法。如果成功,它將刪除我們提供的所有對象:

ArrayList<ObjectIdentifier> toDelete = new ArrayList<>();
for(String objKey : keys) {
    toDelete.add(ObjectIdentifier.builder()
        .key(objKey)
        .build());
}

DeleteObjectsRequest deleteObjectRequest = DeleteObjectsRequest.builder()
    .bucket(bucketName)
    .delete(Delete.builder()
        .objects(toDelete).build())
    .build();

s3Client.deleteObjects(deleteObjectRequest);

七、文末總結(jié)

在本文中,我們重點介紹了在存儲桶級別和對象級別與 Amazon S3 Web 服務(wù)交互的基礎(chǔ)知識。重點在 Java 應(yīng)用中使用 Amazon S3(Simple Storage Service)進(jìn)行存儲桶和對象操作的方法、詳細(xì)說明了如何進(jìn)行存儲桶操作,包括創(chuàng)建桶和列出桶。在對象操作部分,我們涵蓋了上傳、列出和下載對象的過程,還介紹了復(fù)制、重命名、移動對象以及刪除對象的方法。此外,我們還提供了刪除多個對象的操作步驟。通過本文,小伙伴們可以了解如何通過 Java 代碼有效地與 Amazon S3 進(jìn)行交互,實現(xiàn)對存儲桶和對象的各種操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-713792.html

[ 本文作者 ]   bluetata
[ 原文鏈接 ]   https://bluetata.blog.csdn.net/article/details/132531011
[ 最后更新 ]   11/19/2023 23:45
[ 版權(quán)聲明 ]   如果您在非 CSDN 網(wǎng)站內(nèi)看到這一行,
說明網(wǎng)絡(luò)爬蟲可能在本人還沒有完整發(fā)布的時候就抓走了我的文章,
可能導(dǎo)致內(nèi)容不完整,請去上述的原文鏈接查看原文。

到了這里,關(guān)于[ 云計算 | AWS 實踐 ] Java 應(yīng)用中使用 Amazon S3 進(jìn)行存儲桶和對象操作完全指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [ 云計算 | AWS 實踐 ] 使用 Java 列出存儲桶中的所有 AWS S3 對象

    [ 云計算 | AWS 實踐 ] 使用 Java 列出存儲桶中的所有 AWS S3 對象

    本文收錄于【#云計算入門與實踐 - AWS】專欄中,收錄 AWS 入門與實踐相關(guān)博文。 本文同步于個人公眾號:【 云計算洞察 】 更多關(guān)于云計算技術(shù)內(nèi)容敬請關(guān)注:CSDN【#云計算入門與實踐 - AWS】專欄。 本系列已更新博文: [ 云計算 | AWS 實踐 ] Java 應(yīng)用中使用 Amazon S3 進(jìn)行存儲桶

    2024年02月06日
    瀏覽(20)
  • [ 云計算 | AWS 實踐 ] Java 如何重命名 Amazon S3 中的文件和文件夾

    [ 云計算 | AWS 實踐 ] Java 如何重命名 Amazon S3 中的文件和文件夾

    本文收錄于【#云計算入門與實踐 - AWS】專欄中,收錄 AWS 入門與實踐相關(guān)博文。 本文同步于個人公眾號:【 云計算洞察 】 更多關(guān)于云計算技術(shù)內(nèi)容敬請關(guān)注:CSDN【#云計算入門與實踐 - AWS】專欄。 本系列已更新博文: [ 云計算 | AWS 實踐 ] Java 應(yīng)用中使用 Amazon S3 進(jìn)行存儲桶

    2024年02月08日
    瀏覽(33)
  • AWS——04篇(AWS之Amazon S3(云中可擴(kuò)展存儲)-02——EC2訪問S3存儲桶)

    AWS——04篇(AWS之Amazon S3(云中可擴(kuò)展存儲)-02——EC2訪問S3存儲桶)

    關(guān)于AWS的前幾篇入門文章,如下: AWS——01篇(AWS入門 以及 AWS之EC2實例及簡單使用). AWS——02篇(AWS之服務(wù)存儲EFS在Amazon EC2上的掛載——針對EC2進(jìn)行托管文件存儲). AWS——03篇(AWS之Amazon S3(云中可擴(kuò)展存儲)-01入門). 我這里使用的都是前面創(chuàng)建好的,關(guān)于怎么創(chuàng)建,請

    2024年02月13日
    瀏覽(30)
  • AWS——03篇(AWS之Amazon S3(云中可擴(kuò)展存儲)-01入門)

    AWS——03篇(AWS之Amazon S3(云中可擴(kuò)展存儲)-01入門)

    關(guān)于AWS的其他入門,如下: AWS——01篇(AWS入門 以及 AWS之EC2實例及簡單使用). AWS——02篇(AWS之服務(wù)存儲EFS在Amazon EC2上的掛載——針對EC2進(jìn)行托管文件存儲). 2.1.1 簡述 Amazon S3:從任意位置存儲和檢索任意數(shù)量的數(shù)據(jù) Amazon S3 是一項對象存儲服務(wù),可提供業(yè)界領(lǐng)先的可擴(kuò)展

    2024年02月14日
    瀏覽(35)
  • Amazon云計算AWS之[1]基礎(chǔ)存儲架構(gòu)Dynamo

    Amazon云計算AWS之[1]基礎(chǔ)存儲架構(gòu)Dynamo

    面向服務(wù)的Amazon平臺基本架構(gòu) 為了保證其穩(wěn)定性,Amazon的系統(tǒng)采用 完全的分布式、去中心化的架構(gòu) 作為底層存儲架構(gòu)的Dynamo也同樣 采用無中心的模式 Dynamo只 支持簡單的鍵/值(key/value)方式的數(shù)據(jù)存儲 ,不支持復(fù)雜的查詢 Dynamo中 存儲的是數(shù)據(jù)值的原始形式 ,即按位存儲

    2024年04月26日
    瀏覽(25)
  • Amazon S3 對象存儲Java API操作記錄(Minio與S3 SDK兩種實現(xiàn))

    Amazon S3 對象存儲Java API操作記錄(Minio與S3 SDK兩種實現(xiàn))

    今年(2023年) 2月的時候做了個適配Amazon S3對象存儲接口的需求,由于4月份自學(xué)考試臨近,一直在備考就拖著沒總結(jié)記錄下,開發(fā)聯(lián)調(diào)過程中也出現(xiàn)過一些奇葩的問題,最近人剛從考試緩過來順手記錄一下。 Amazon S3(Simple Storage Service)對象存儲出現(xiàn)得比較早且使用簡單的RESTful

    2024年02月01日
    瀏覽(22)
  • 使用Ceph對象存儲的Amazon S3接口(基于nautilus版本)

    Ceph是一個分布式存儲系統(tǒng),提供了多種數(shù)據(jù)存儲方式,包括對象存儲。Amazon S3是一個流行的對象存儲服務(wù),Ceph提供了Amazon S3接口的兼容性,使得Ceph可以作為一個云存儲解決方案。 分片上傳接口是Amazon S3接口中的一個重要功能,它允許將大文件拆分成小的分片上傳,降低了上

    2024年02月06日
    瀏覽(26)
  • 【AWS】實操-保護(hù) Amazon S3 VPC 終端節(jié)點通信

    【AWS】實操-保護(hù) Amazon S3 VPC 終端節(jié)點通信

    數(shù)據(jù)安全至關(guān)重要。Amazon Web Services (AWS) 提供了多種解決方案和最佳實踐來幫助保護(hù)數(shù)據(jù)的安全。了解如何做出最佳決策來保護(hù)數(shù)據(jù)的安全,這項任務(wù)可能具有挑戰(zhàn)性。 在無路由指向互聯(lián)網(wǎng)的私有子網(wǎng)中運(yùn)行應(yīng)用程序,可將攻擊面限制為僅限內(nèi)部流量,從而實現(xiàn)數(shù)據(jù)安全。

    2024年02月10日
    瀏覽(19)
  • Amazon S3 的 java sdk簡單使用

    在開發(fā)過程中基本都需要使用到對象存儲技術(shù)。 對于一些國內(nèi)的項目來說,可以使用阿里云,七牛云,京東云等開發(fā)平臺進(jìn)行開發(fā)對接存儲對象。 而對于海外的項目,可能現(xiàn)有的國內(nèi)技術(shù)無法使用,這時候就遇到了amazon這個平臺了。在此只整理了其對接以及對象存儲和驗簽

    2024年02月02日
    瀏覽(18)
  • 【Terraform學(xué)習(xí)】使用 Terraform創(chuàng)建 S3 存儲桶事件(Terraform-AWS最佳實戰(zhàn)學(xué)習(xí))

    【Terraform學(xué)習(xí)】使用 Terraform創(chuàng)建 S3 存儲桶事件(Terraform-AWS最佳實戰(zhàn)學(xué)習(xí))

    ??本站以分享各種運(yùn)維經(jīng)驗和運(yùn)維所需要的技能為主 《python》:python零基礎(chǔ)入門學(xué)習(xí) 《shell》:shell學(xué)習(xí) 《terraform》持續(xù)更新中:terraform_Aws學(xué)習(xí)零基礎(chǔ)入門到最佳實戰(zhàn) 《k8》暫未更新 《docker學(xué)習(xí)》暫未更新 《ceph學(xué)習(xí)》ceph日常問題解決分享 《日志收集》ELK+各種中間件 《運(yùn)

    2024年02月10日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包