[ 云计算 | AWS 实践 ] 使用 Java 检查指定的密钥是否存在于给定的 Amazon ...

打印 上一主题 下一主题

主题 902|帖子 902|积分 2706


本文收录于【#云计算入门与实践 - AWS】专栏中,收录 AWS 入门与实践相关博文。
本文同步于个人公众号:【云计算洞察
更多关于云计算技术内容敬请关注:CSDN【#云计算入门与实践 - AWS】专栏。
本系列已更新博文:


  • [ 云计算 | AWS 实践 ] Java 应用中使用 Amazon S3 进行存储桶和对象操作完全指南
  • [ 云计算 | AWS 实践 ] Java 怎样重命名 Amazon S3 中的文件和文件夹
  • [ 云计算 | AWS 实践 ] 使用 Java 列出存储桶中的全部 AWS S3 对象
  • [ 云计算 | AWS 实践 ] 使用 Java 更新现有 Amazon S3 对象
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [ 云计算 | AWS 实践 ] 使用 Java 检查指定的密钥是否存在于给定的 Amazon S3 存储桶中

  
一、前言

在本博文中,我们将探究怎样使用 Java 检查指定的秘钥是否存在于亚马逊 S3 存储桶中。
Amazon S3 是一个非常流行的云存储服务,为存储和检索数据提供了可伸缩、安全和高可用的平台。就个人而言,后续很多的公有云平台或者一些 SaaS 服务,都或多或少有 Amazon S3 的影子。
对于开发人员来说,了解特定的秘钥是否存在是至关紧张的,以便根据必要进行操作或访问。我们将渐渐先容设置 AWS SDK 并使用它实行此检查所需的步调。
二、前期预备

首先,我们必要确保 AWS SDK Maven 依靠包已归并到项目中,让我们创建一个新的 Java 项目并将以下 Maven 依靠项添加到 pom.xml 文件中:
  1. <dependency>
  2.     <groupId>software.amazon.awssdk</groupId>
  3.     <artifactId>s3</artifactId>
  4.     <version>2.21.0</version>
  5. </dependency>
复制代码
三、创建 AmazonS3 客户端的实例

一旦我们设置好了 AWS 的 Java SDK,我们就创建 Amazon S3 客户端的实例来与存储桶进行交互。
让我们指定 AWS 凭证和存储桶位置区域并创建客户端:
  1. AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
  2.   .withRegion(Regions.US_EAST_1)
  3.   .withCredentials(new AWSStaticCredentialsProvider(credentials))
  4.   .build();
复制代码
四、检查秘钥是否存在(两种方法)

此处是我们博文的重点,接下来将会讲授两种方法,来先容怎样检查秘钥是否存在。
4.1 使用 headObject() 检查密钥是否存在

检查 Amazon S3 存储桶中是否存在特定密钥的最简单、最明显的方法是使用headObject()方法。
我们必要使用其构建器方法创建一个 HeadObjectRequest 实例,并将存储桶名称和对象密钥通报给它。然后我们可以将请求对象通报给headObject()方法。
参考示例代码如下:
  1. try {
  2.     // 创建一个HeadObjectRequest对象,用于检查指定的秘钥是否存在于存储桶中
  3.     HeadObjectRequest headObjectRequest = HeadObjectRequest.builder()
  4.         .bucket(bucket)  // 指定存储桶名称
  5.         .key(key)  // 指定秘钥名称
  6.         .build();
  7.     // 发起HeadObject请求以检查对象是否存在
  8.     s3Client.headObject(headObjectRequest);
  9.     System.out.println("对象存在"); // 输出对象存在的信息
  10.     return true; // 返回true,表示对象存在
  11. } catch (S3Exception e) {
  12.     if (e.statusCode() == 404) {
  13.         System.out.println("对象不存在"); // 输出对象不存在的信息
  14.         return false; // 返回false,表示对象不存在
  15.     } else {
  16.         throw e; // 抛出异常
  17.     }
  18. }
复制代码
此方法检查指定存储桶位置是否存在对象,并返回包罗对象元数据的 HeadObjectResponse 对象。假如指定的键不存在,则该方法会抛出 NoSuchKeyException 异常。
4.2 使用 listObjectsV2() 检查密钥是否存在

另一种选择是使用listObjectsV2()方法。为此,我们必要创建一个 ListObjectsV2Request 对象并将存储桶名称通报给它。接下来,我们调用 listObjectsV2 方法来获取 ListObjectsV2Response。然后我们可以遍历相应的内容来检查所需的密钥是否存在。
示例代码如下:
  1. public boolean doesObjectExistByListObjects(String bucketName, String key) {
  2.     // 创建ListObjectsV2Request对象以列出指定存储桶中的对象
  3.     ListObjectsV2Request listObjectsV2Request = ListObjectsV2Request.builder()
  4.         .bucket(bucketName) // 指定存储桶名称
  5.         .build();
  6.    
  7.     // 发起列出对象的请求并获取响应
  8.     ListObjectsV2Response listObjectsV2Response = s3Client.listObjectsV2(listObjectsV2Request);
  9.     // 通过流处理检查是否存在指定的秘钥对应的对象
  10.     return listObjectsV2Response.contents()
  11.         .stream()
  12.         .filter(s3ObjectSummary -> s3ObjectSummary.getValueForField("key", String.class)
  13.             .equals(key)) // 根据秘钥筛选对象
  14.         .findFirst()
  15.         .isPresent(); // 返回是否存在指定的对象
  16. }
复制代码
虽然这种方法可能不如headObject()方法高效,但在其他选项不可用时,它会很有帮助。
别的,listObjectsV2()的另一个优点是可以同时列出多个对象,这在特定情况下可能很有用。
   注意:这种方法可能由于多次迭代而更慢、效率较低。在选择最佳选项时,权衡各方面的利弊非常紧张,要根据具体情况来决定。
  五、文末总结

在本文中,我们探究了使用 AWS Java SDK 来检查特定秘钥是否存在于 Amazon S3 存储桶中的几种方法。
这此中包罗怎样设置 Amazon S3 客户端并使用headObject()方法来检查秘钥是否存在。我们还探究了listObjects()方法作为替代方案。
在选择方法时,必要权衡利弊,根据具体情况选择最适合的方案。无论是简单直接的方式照旧更为灵活的多对象列举,都能帮助开发人员更好地管理和操作 Amazon S3 存储桶中的数据。
通过本文的先容,读者可以更清晰地了解怎样利用 AWS Java SDK 在开发中判断特定秘钥在 S3 存储桶中的存在性,为相关开发提供了有益的参考与引导。
  1. [ 本文作者 ]   bluetata
  2. [ 原文链接 ]   https://bluetata.blog.csdn.net/article/details/134566027
  3. [ 最后更新 ]   11/23/2023 2:15
  4. [ 版权声明 ]   如果您在非 CSDN 网站内看到这一行,
  5. 说明网络爬虫可能在本人还没有完整发布的时候就抓走了我的文章,
  6. 可能导致内容不完整,请去上述的原文链接查看原文。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表