[ 云计算 | AWS 实践 ] 使用 Java 更新现有 Amazon S3 对象

这篇具有很好参考价值的文章主要介绍了[ 云计算 | AWS 实践 ] 使用 Java 更新现有 Amazon S3 对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[ 云计算 | AWS 实践 ] 使用 Java 更新现有 Amazon S3 对象,# 云计算入门与实践 - AWS,云计算,云平台,aws,java

本文收录于【#云计算入门与实践 - 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 存储桶中

一、前言

Amazon Simple Storage Service(Amazon S3)是一种广泛使用的存储服务,提供了可扩展、安全和持久的对象存储功能。在某些情况下,我们需要更新已存在于 Amazon S3 中的对象。在 S3 中,对象是不可变的,这意味着我们不能直接修改对象的内容。但是,我们可以通过覆盖对象内容的方式来有效地“更新”它。

本篇文章将介绍如何使用 AWS Java SDK,将位于同一 AWS S3 路径下的现有文件内容替换为新内容。

二、前期准备

2.1 导入Maven 依赖

首先,我们需要确保AWS SDK Maven依赖包已合并到项目中,让我们创建一个新的 Java 项目并将以下 Maven 依赖项添加到 pom.xml 文件中:

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

2.1 准备几个必要信息

要使用AWS SDK,我们需要以下几个要素:

AWS 帐户:首先,需要一个Amazon Web Services(AWS)帐户。如果尚未拥有,可直接在 AWS 控制台创建。

AWS 安全凭证:这些安全凭证是我们访问 AWS API 操作所需的访问密钥。可通过两种方式获取:使用 AWS 根帐户凭证中的“安全凭证”页面,或在 IAM 控制台中获取 IAM 用户凭证。

选择AWS区域(Region):同时需要选择一个 AWS 区域来存储 Amazon S3 数据。需注意,S3 存储价格因区域不同而异。详细信息可参考官方文档(点击这里)。

三、更新 S3 对象的步骤

3.1.初始化 S3 客户端

首先,我们需要创建客户端连接来访问 Amazon S3 Web 服务。为此,我们将使用 AmazonS3 接口:

无论是你怎么写,都要先初始化 S3 客户端对象,之后在进行操作即可,记住这个步骤。

AWSCredentials credentials = new BasicAWSCredentials(
        "AWS AccessKey",
        "AWS secretKey"
);

然后我们将配置客户端:

AmazonS3 s3client = AmazonS3ClientBuilder.standard()
        .withRegion(Regions.fromName("us-east-1"))
        .withCredentials(new AWSStaticCredentialsProvider(credentials))
        .build();

3.2 将新对象上传到 S3

现在我们可以使用 AWS Java SDK 在方法 putObject() 中将文件上传到 S3 存储桶:

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

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

下面是调用上述代码的代码片段:

s3Service.putObject(
    AWS_BUCKET,
    "Document/helloWord.txt",
    new File("/Users/bluetata/Document/helloWord.txt")
);

3.3 上传(覆盖)对象

由于 S3 中的对象是不可变的,因此“更新”对象涉及用新内容覆盖该对象。因此,为了更新,我们需要使用与添加文档相同的参数集来调用相同的putObject()方法:

public PutObjectResponse updateObject(String bucketName, String key, java.io.File file) {
    return this.putObject(bucketName, key, file);
}

此代码将用提供的新内容替换现有对象。如果具有给定键的对象不存在,S3 将创建一个新对象

3.4 验证更新

我们可能想要验证对象是否已成功更新。实现此目的的一种方法是检索对象的元数据并检查lastModified日期,或者计算对象的校验和并将其与预期值进行比较。

HeadObjectRequest req = HeadObjectRequest.builder()
    .bucket(bucketName)
    .key(key)
    .build();

HeadObjectResponse response = s3Client.headObject(request);
System.out.println("Last Modified: " + response.lastModified());

四、注意事项(重要)

需要牢记的是,在 S3 中,覆盖对象实际上是一次PUT操作,这可能会导致成本增加。在进行 S3 操作时,请时刻注意成本影响。

如果存储桶启用了版本控制,覆盖对象不会删除旧版本,而是会创建该对象的新版本。因此,我们会拥有对象的多个版本,每个版本都有独特的 ID。在需要时,我们可以检索任何以前的版本。

最后,如果元数据与该对象关联,请注意覆盖该对象将使用 PUT 操作期间提供的新元数据替换旧元数据。如果我们想保留旧的元数据,我们必须在请求中显式设置它。

五、文末总结

虽然我们不能直接修改 S3 对象的内容,但是利用适用于 Java 的 AWS 开发工具包,可以轻松地用新内容覆盖对象。务必牢记的是:比如避免硬编码凭据以及了解操作可能带来的成本影响。通过这些步骤,我们能够自信地使用 Java 对 S3 对象进行管理和更新。

文末已经更新了 4 篇关于在 AWS 中各种操作 S3 的博文,希望对你有所帮助,更多博文敬请关注本博客。文章来源地址https://www.toymoban.com/news/detail-751926.html

[ 本文作者 ]   bluetata
[ 原文链接 ]   https://bluetata.blog.csdn.net/article/details/134498219
[ 最后更新 ]   11/20/2023 2:08
[ 版权声明 ]   如果您在非 CSDN 网站内看到这一行,
说明网络爬虫可能在本人还没有完整发布的时候就抓走了我的文章,
可能导致内容不完整,请去上述的原文链接查看原文。

到了这里,关于[ 云计算 | AWS 实践 ] 使用 Java 更新现有 Amazon S3 对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹

    本文收录于【#云计算入门与实践 - AWS】专栏中,收录 AWS 入门与实践相关博文。 本文同步于个人公众号:【 云计算洞察 】 更多关于云计算技术内容敬请关注:CSDN【#云计算入门与实践 - AWS】专栏。 本系列已更新博文: [ 云计算 | AWS 实践 ] Java 应用中使用 Amazon S3 进行存储桶

    2024年02月08日
    浏览(40)
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务

    本文收录于【#云计算入门与实践 - AWS】专栏中,收录 AWS 入门与实践相关博文。 本文同步于个人公众号:【 云计算洞察 】 更多关于云计算技术内容敬请关注:CSDN【#云计算入门与实践 - AWS】专栏。 本系列已更新博文: [ 云计算 | AWS 实践 ] Java 应用中使用 Amazon S3 进行存储桶

    2024年02月05日
    浏览(33)
  • Amazon S3 对象存储Java API操作记录(Minio与S3 SDK两种实现)

    今年(2023年) 2月的时候做了个适配Amazon S3对象存储接口的需求,由于4月份自学考试临近,一直在备考就拖着没总结记录下,开发联调过程中也出现过一些奇葩的问题,最近人刚从考试缓过来顺手记录一下。 Amazon S3(Simple Storage Service)对象存储出现得比较早且使用简单的RESTful

    2024年02月01日
    浏览(39)
  • 使用Ceph对象存储的Amazon S3接口(基于nautilus版本)

    Ceph是一个分布式存储系统,提供了多种数据存储方式,包括对象存储。Amazon S3是一个流行的对象存储服务,Ceph提供了Amazon S3接口的兼容性,使得Ceph可以作为一个云存储解决方案。 分片上传接口是Amazon S3接口中的一个重要功能,它允许将大文件拆分成小的分片上传,降低了上

    2024年02月06日
    浏览(34)
  • AWS——04篇(AWS之Amazon S3(云中可扩展存储)-02——EC2访问S3存储桶)

    关于AWS的前几篇入门文章,如下: AWS——01篇(AWS入门 以及 AWS之EC2实例及简单使用). AWS——02篇(AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储). AWS——03篇(AWS之Amazon S3(云中可扩展存储)-01入门). 我这里使用的都是前面创建好的,关于怎么创建,请

    2024年02月13日
    浏览(26)
  • AWS——03篇(AWS之Amazon S3(云中可扩展存储)-01入门)

    关于AWS的其他入门,如下: AWS——01篇(AWS入门 以及 AWS之EC2实例及简单使用). AWS——02篇(AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储). 2.1.1 简述 Amazon S3:从任意位置存储和检索任意数量的数据 Amazon S3 是一项对象存储服务,可提供业界领先的可扩展

    2024年02月14日
    浏览(31)
  • 【AWS】实操-保护 Amazon S3 VPC 终端节点通信

    数据安全至关重要。Amazon Web Services (AWS) 提供了多种解决方案和最佳实践来帮助保护数据的安全。了解如何做出最佳决策来保护数据的安全,这项任务可能具有挑战性。 在无路由指向互联网的私有子网中运行应用程序,可将攻击面限制为仅限内部流量,从而实现数据安全。

    2024年02月10日
    浏览(38)
  • Amazon S3 的 java sdk简单使用

    在开发过程中基本都需要使用到对象存储技术。 对于一些国内的项目来说,可以使用阿里云,七牛云,京东云等开发平台进行开发对接存储对象。 而对于海外的项目,可能现有的国内技术无法使用,这时候就遇到了amazon这个平台了。在此只整理了其对接以及对象存储和验签

    2024年02月02日
    浏览(33)
  • 使用 Python 和 AWS Boto3 更新 Amazon ECS 服务的启动命令

    在使用 Amazon Elastic Container Service (ECS) 部署容器化应用程序时,有时需要更新服务的启动命令。例如,您可能需要更改应用程序连接的数据库地址或其他配置参数。在本文中,我们将介绍如何使用 Python 和 AWS Boto3 库编写一个脚本,自动遍历 ECS 集群中的所有服务,并更新它们的任务定

    2024年03月26日
    浏览(76)
  • Amazon s3 sdk for java2.x 最新api的简单使用

    目录 创建存储桶 登录亚马逊控制台 查找服务“S3” 进入存储桶创建页面; 点击 “创建存储桶”进入创建页面; 获取密钥ID和密钥 点击右上方账户信息在下拉菜单中选择 “安全凭证”(Security credentials)进入我的安全凭证页面; 下滑找到 “访问密钥”标签  点击右侧  “

    2024年02月20日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包