开始使用Amazon SDK for Java2.x - Amazon SDK for Java
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

现在,您可以使用 Amazon S3转移管理器(开发人员预览)中的Amazon SDK for Java2.x 用于加速文件传输。给它一个尝试,告诉我们您的想法

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

开始使用Amazon SDK for Java2.x

这些区域有:Amazon SDK for Java2.x 提供了用于Amazon Web Services(Amazon)。使用开发工具包,您可以构建使用Amazon S3、Amazon EC2、DynamoDB, 以及其他.

本教程介绍如何使用Apache Maven来定义Amazon SDK for Java,然后编写连接到Amazon S3上传文件。

请按照以下步骤完成本教程:

第 1 步:针对本教程进行设置

在开始本教程之前,您需要一个活跃的 Amazon Web Services 账户 ,一个Amazon Identity and Access Management(IAM) 用户具有编程访问密钥和Amazon S3,以及配置为使用该访问密钥作为Amazon.

请按照以下步骤操作,为本教程进行设置:

创建 账户

如果您没有 Amazon Web Services 账户 ,请访问的Amazon Web Services注册页,按照屏幕上的提示创建并激活一个新帐户。有关详细说明,请参阅如何创建和激活新的 Amazon Web Services 账户 ?.

激活新的 Amazon Web Services 账户 ,请按照中的说明操作创建您的第一个IAM管理员用户和组中的IAM用户指南。使用此帐户而不是 root 帐户访问Amazon控制台。有关更多信息,请参阅 。 IAM用户指南.

创建 IAM 用户

要完成此教程,需要使用IAM具有读写访问权限的用户Amazon S3. 向发出请求Amazon Web Services使用Amazon SDK for Java中,创建访问密钥以用作凭据。

  1. 登录到的IAM控制台

  2. 在左侧导航窗格中,选择用户。然后选择添加用户

  3. Enter测试软件开发工具包作为用户名,然后选择方案访问复选框。选择 Next:Permissions (下一步:权限)

  4. UNTER设置权限中,选择直接附加现有策略.

  5. 在策略列表中,选择AmazonS3FullAccess政策。选择 Next:标签

  6. 选择 Next:审核。然后选择 。创建用户.

  7. 在存储库的成功屏幕中,选择下载 .csv.

    下载的文件包含本教程的访问密钥 ID 和私有访问密钥。将您的私有访问密钥视为密码;保存在受信任的位置,不要共享该密钥。

    注意

    您将要不是有另一个机会下载或复制私有访问密钥。

安装 Java 和阿帕奇 Maven

您的开发环境需要安装 Java 8 或更高版本并安装 Apache Maven。

配置凭证

使用您的访问密钥 ID 和秘密访问密钥配置您的开发环境。这些区域有:Amazon SDK for Java当您的应用程序发出请求时,将此访问密钥用作凭据Amazon Web Services.

  1. 在文本编辑器中,使用以下代码创建一个新文件:

    [default] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY
  2. 在刚刚创建的文本文件中,将您的访问密钥与您独一无二的Amazon访问密钥 ID,然后替换您的 _AW_ 秘密 _ 访问 _ 密钥与您独一无二的Amazon秘密访问密钥。

  3. 保存文件而不具有文件扩展名。有关基于您的操作系统的正确位置和文件名,请参阅下表。

    操作系统 文件名

    Windows

    C:\Users\<yourUserName>\.aws\credentials

    Linux、macOS、Unix

    ~/.aws/credentials

第 2 步:创建项目

要为本教程创建项目,首先创建一个 Maven 项目。接下来,您将项目配置为依赖于Amazon SDK for Java和对于任何Amazon Web 服务你使用的,例如Amazon S3. 然后,您将 Maven 编译器配置为使用 Java 1.8。

  1. 打开终端或命令提示符窗口,然后导航到您选择的目录,例如桌面或主文件夹。

  2. 使用以下命令创建一个名为的新目录myapp使用项目配置文件 (pom.xml)和一个基本的 Java 类。

    mvn -B archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DgroupId=com.example.myapp \ -DartifactId=myapp

要将项目配置为Amazon SDK for Java和Amazon S3,并使用 Java 1.8

  • 在文件夹中myapp,请打开上一过程中创建的pom.xml文件。用以下代码替换其内容,然后保存您的更改。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <groupId>com.example.myapp</groupId> <artifactId>myapp</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>myapp</name> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.16.60</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build> </project>

这些区域有:dependencyManagement部分包含对Amazon SDK for Java和dependencies部分有一个Amazon S3. Apache Maven 编译器插件在build部分使用 Java 1.8。

第 3 步:编写代码

创建和配置项目后,编辑项目的默认类App来使用下面的示例代码。

下面的示例类为Amazon S3,然后使用它来上传文本文件。创建服务客户端Amazon S3,实例化一个S3 客户端对象使用静态工厂方法builder. 向 上传文件Amazon S3,首先构建一个PutObjectRequest对象,提供存储桶名称和密钥名称。然后,调用 S3 客户端的putObject方法,使用RequestBody,其中包含对象内容和PutObjectRequest对象。

  1. 在项目文件夹中myapp中,导航到目录src/main/java/com/example/myapp. 打开 App.java 文件。

  2. 用以下代码替换其内容并保存文件。

    package com.example.myapp; import java.io.IOException; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.model.CreateBucketConfiguration; import software.amazon.awssdk.services.s3.model.CreateBucketRequest; import software.amazon.awssdk.services.s3.model.DeleteBucketRequest; import software.amazon.awssdk.services.s3.model.DeleteObjectRequest; import software.amazon.awssdk.services.s3.model.HeadBucketRequest; import software.amazon.awssdk.services.s3.model.PutObjectRequest; import software.amazon.awssdk.services.s3.model.S3Exception; import software.amazon.awssdk.services.s3.S3Client; public class App { public static void main(String[] args) throws IOException { Region region = Region.US_WEST_2; S3Client s3 = S3Client.builder().region(region).build(); String bucket = "bucket" + System.currentTimeMillis(); String key = "key"; tutorialSetup(s3, bucket, region); System.out.println("Uploading object..."); s3.putObject(PutObjectRequest.builder().bucket(bucket).key(key) .build(), RequestBody.fromString("Testing with the {sdk-java}")); System.out.println("Upload complete"); System.out.printf("%n"); cleanUp(s3, bucket, key); System.out.println("Closing the connection to {S3}"); s3.close(); System.out.println("Connection closed"); System.out.println("Exiting..."); } public static void tutorialSetup(S3Client s3Client, String bucketName, Region region) { try { s3Client.createBucket(CreateBucketRequest .builder() .bucket(bucketName) .createBucketConfiguration( CreateBucketConfiguration.builder() .locationConstraint(region.id()) .build()) .build()); System.out.println("Creating bucket: " + bucketName); s3Client.waiter().waitUntilBucketExists(HeadBucketRequest.builder() .bucket(bucketName) .build()); System.out.println(bucketName +" is ready."); System.out.printf("%n"); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } public static void cleanUp(S3Client s3Client, String bucketName, String keyName) { System.out.println("Cleaning up..."); try { System.out.println("Deleting object: " + keyName); DeleteObjectRequest deleteObjectRequest = DeleteObjectRequest.builder().bucket(bucketName).key(keyName).build(); s3Client.deleteObject(deleteObjectRequest); System.out.println(keyName +" has been deleted."); System.out.println("Deleting bucket: " + bucketName); DeleteBucketRequest deleteBucketRequest = DeleteBucketRequest.builder().bucket(bucketName).build(); s3Client.deleteBucket(deleteBucketRequest); System.out.println(bucketName +" has been deleted."); System.out.printf("%n"); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } System.out.println("Cleanup complete"); System.out.printf("%n"); } }

第 4 步:构建并运行应用程序

创建项目并包含示例类后,构建并运行应用程序。要查看上传的文件,请在Amazon S3控制台中,编辑代码以删除清理步骤,然后重建项目。

  1. 打开终端或命令提示符窗口,然后导航至您的项目目录myapp.

  2. 使用以下命令可生成项目:

    mvn package
  3. 打开终端或命令提示符窗口,然后导航至您的项目目录myapp.

  4. 使用以下命令可运行应用程序。

    mvn exec:java -Dexec.mainClass="com.example.myapp.App"

当您运行应用程序时,它会将一个新的文本文件上传到Amazon S3. 之后,它还将删除文件和存储桶。

  1. InApp.java,请注释掉该行cleanUp(s3, bucket, key);并保存文件。

  2. 通过运行项目mvn package.

  3. 通过运行文件上传文件mvn exec:java -Dexec.mainClass="com.example.myapp.App"

  4. 登录到S3 控制台以查看新创建的存储桶中的新文件。

查看文件后,通过删除对象,然后删除存储桶来清理测试资源。

成功!

如果你的 Maven 项目构建并运行没有错误,那么恭喜你!您已成功构建了第一个 Java 应用程序,使用Amazon SDK for Java.

Cleanup

清除您在本教程中创建的资源:

  • InS3 控制台,删除运行应用程序时创建的任何对象和任何存储桶。

  • In的IAM控制台,删除测试软件开发工具包用户。

    如果删除此用户,还可以删除credentials文件。

  • 删除项目文件夹 (myapp)。

后续步骤

现在您已掌握了基本知识,您可以了解以下信息: