云计算-使用Java访问S3 (Accessing S3 using Java)

        为了访问桶,我们使用AWS Java API。我们将使用API的2.0版本,但在撰写本文时,这是一个非常新的版本,因此您在互联网上找不到许多代码示例。版本1与版本2不兼容,不同的子版本之间也不兼容,因此我们必须非常小心地选择我们使用的API版本。在本单元中,我们将同时使用1.x版本和2.x版本。这是因为AWS上的大多数Java文档都是1.x版本。

       由于用于完成简单任务的类和接口很多。这是因为AWS并非用原生Java构建,因此每个数据结构都将有一个Java类/对象来提供对它的语言级访问。即使是对AWS接口的调用结果也将返回Java对象而不是简单的Java原始数据类型。习惯这一点需要一段时间。您还应该注意,所有类都记录在Java API文档中,因此当您遇到困难时,您需要学会如何导航文档。

        在本实验室剩余的部分,我们将操纵桶中的对象。在本单元中,我们不需要以编程方式操纵桶本身,而是我们将使用AWS控制台界面来操纵桶。但是,也有一整套Java API类和接口,用于在您的Java程序中操纵桶,您可以在自己的时间里尝试。

        我们使用Maven通过从Maven仓库加载所有适当的类来构建我们的Java程序。依赖关系和其他配置信息由pom.xml文件指定。

        我们可以添加与上周我们使用的pom.xml相关的S3依赖,并在本周用于S3。在后续的实验室会话中,我们将仅指定我们使用的亚马逊产品的相关API,您将需要将其插入类似于这个文件中的文件。请注意,此文件包含一些额外的指令,以便于您调试。这不是一个最小的pom.xml文件。例如,它包括shade插件,允许您在target目录运行jar文件。它还指定了UTF-8编码,以消除一些烦人的警告信息。

        第二个重要的“设置”活动是导入您在程序中使用的所有API类、接口、异常等。这些应该逐个导入,以帮助减小代码大小并帮助分析您的代码。AWS API是一个非常大的软件片段,因此这并不像听起来那么容易。您需要非常熟悉API文档,以找出应该从哪里导入类、接口和异常。在线会话中将显示一些这样做的技巧。本周我们需要的S3依赖项是:

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

        我们可以将此依赖项与上周的pom.xml文件一起添加,并在本周用于S3。

        我们已经知道在Cloud9中创建新的maven应用的命令,如下所示。

mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=au.edu.scu.app -DartifactId=s3app

        附加文件:

  • pom.xml 使用ReadSpeaker docReader打开此文档 2.023 KB

从桶中读取对象

        有很多方法可以从桶中获取对象。我们可以将对象读入程序中的一个Java对象,我们可以将对象读入当前机器中的一个文件,我们可以将对象作为输入流读取,我们还可以使用多部分读取来读取大对象。这里我们将看一个技术,将对象读入本地文件。如果我们希望操纵对象,我们可以打开文件并使用标准的Java文件处理读取其数据。

        为了将对象读入本地文件系统,我们可以编写以下代码(完整程序)。这里我们打算从本实验室会话中较早创建的桶中读取index.html文件。您的桶名称将不同!

        我们需要导入以下类。

package au.edu.scu.app;

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.se
Minio is an open-source object storage server that provides a scalable and secure file storage system, often used as an alternative to Amazon S3. Docker Compose is a tool for defining and running multi-container Docker applications. When you combine Minio with Docker Compose, you can easily set up and manage a Minio instance within a Docker environment. To create a `docker-compose.yml` file for Minio, you&#39;ll define the necessary services, networks, and volumes. Here&#39;s a basic outline of what a `docker-compose.yml` configuration might look like: ```yaml version: &#39;3&#39; services: minio: image: minio/minio container_name: minio_server ports: - "9000:9000" # HTTP port - "9001:9001" # HTTPS port (optional) environment: MINIO_ACCESS_KEY: your-access-key MINIO_SECRET_KEY: your-secret-key MINIO_ROOT_USER: your-username MINIO_ROOT_PASSWORD: your-password volumes: - ./data/minio:/data networks: - minio-net networks: minio-net: driver: overlay volumes: minio-data: ``` In this example: - `image`: Uses the official Minio Docker image. - `ports`: Maps the container ports to host ports for accessing Minio. - `environment`: Sets up environment variables for authentication and other settings. - `volumes`: Mounts a local directory to persist data within the host machine. - `networks`: Creates a network for the service to communicate within the compose setup. Here are some related questions: 1. What is the purpose of specifying the `MINIO_ROOT_USER` and `MINIO_ROOT_PASSWORD`? 2. How does mounting a volume ensure data persistence when using Minio in Docker? 3. Can you explain the difference between using `9000` and `9001` ports in the configuration?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yamai Yuzuru

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值