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

您现在可以使用Amazon S3转移经理(开发人员预览版)中的Amazon SDK for Java2.x 用于加速文件传输。试试一下然后告诉我们您的想法

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

使用 Amazon SDK for Java 2.x

完成中的步骤后设置开发工具包,你准备好向Amazon例如服务Amazon S3、DynamoDB、IAM、Amazon EC2,以及其他。

创建服务客户端

向Amazon Web Service,必须首先使用静态工厂方法将对象实例化为该服务的客户端builder. 然后,使用生成器中的 setter 对它进行自定义。常用的 setter 方法会返回 builder 对象,由此可以将方法调用组合起来,这样不仅方便而且代码更加便于阅读。在配置需要的属性后,可以调用 build 方法创建客户端。

例如,此代码片段实例化了Ec2Client对象作为服务客户端Amazon EC2:

Region region = Region.US_WEST_2; Ec2Client ec2Client = Ec2Client.builder() .region(region) .build();
注意

开发工具包中的服务客户端是线程安全的。为了获得最佳性能,应将其作为永久对象。每个客户端自己有连接池资源,当客户端收集到垃圾时相应资源会释放。

服务客户端对象是不可变的,因此必须为向其发出请求的每个服务创建一个新客户端,或者如果要使用不同的配置向同一服务发出请求。

指定Region在服务中并非所有人都需要客户端构建器Amazon服务;但是,最佳做法是为您在应用程序中进行的 API 调用设置区域。请参阅Amazon区域选择了解更多信息。

使用默认客户端

客户端生成器包含名为 create 的另一个工厂方法。此方法将使用默认配置创建服务客户端。它使用默认提供程序链加载凭证和Amazon Web Services 区域. 如果不能根据运行应用程序的环境确定凭证或区域,则对 create 的调用失败。请参阅使用凭证选择区域有关如何确定凭证和区域的更多信息。

例如,此代码片段实例化了DynamoDbClient对象作为服务客户端Amazon DynamoDB:

DynamoDbClient dynamoDbClient = DynamoDbClient.create();

提出请求

你可以使用服务客户端向该客户端发出请求Amazon Web Service.

例如,此代码段演示了如何创建一个RunInstancesRequest创建新的对象Amazon EC2实例:

RunInstancesRequest runInstancesRequest = RunInstancesRequest.builder() .imageId(amiId) .instanceType(InstanceType.T1_MICRO) .maxCount(1) .minCount(1) .build(); ec2Client.runInstances(runInstancesRequest);

处理响应

您可以使用响应处理程序从Amazon服务。

例如,此代码段演示了如何创建一个RunInstancesResponse要处理来自的响应的对象Amazon EC2通过打印出instanceId对于上述请求中的新实例:

RunInstancesResponse runInstancesResponse = ec2Client.runInstances(runInstancesRequest); System.out.println(runInstancesResponse.instances().get(0).instanceId());

关闭客户端

当您不再需要服务客户端时,请关闭该客户端。

ec2Client.close();
注意

扩展服务客户端AutoClosable接口,但作为最佳做法-尤其是使用短期代码,例如Amazon Lambda函数-你应该明确调用close()方法。

处理异常

SDK 使用运行时(或未选中的)异常,为您提供对错误处理的精细控制,并确保异常处理随应用程序而扩展。

网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的SdkServiceException,或者其中一个子类,是 SDK 将抛出的最常见的异常形式。这些例外代表了来自Amazon服务。您还可以处理SdkClientException,当客户端出现问题(例如,在你的开发或应用程序环境中),例如网络连接失败时,就会发生这种情况。

此代码片段演示了在将文件上传到的同时处理服务异常的一种方法Amazon S3.

Region region = Region.US_WEST_2; s3Client = S3Client.builder() .region(region) .build(); try { PutObjectRequest putObjectRequest = PutObjectRequest.builder() .bucket(bucketName) .key(key) .build(); s3Client.putObject(putObjectRequest, RequestBody.fromString("SDK for Java test")); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); }

请参阅处理异常了解更多信息。

使用服务员

有些请求需要一些时间来处理,例如在中创建新表DynamoDB或者创建新的Amazon S3存储桶。为了确保在代码继续运行之前资源已准备就绪,请使用Waiter.

例如,此代码片段在中创建一个新表(“myTable”)DynamoDB,等待桌子出现在ACTIVE状态,然后打印出响应:

DynamoDbClient dynamoDbClient = DynamoDbClient.create(); DynamoDbWaiter dynamoDbWaiter = dynamoDbClient.waiter(); WaiterResponse<DescribeTableResponse> waiterResponse = dynamoDbWaiter.waitUntilTableExists(r -> r.tableName("myTable")); waiterResponse.matched().response().ifPresent(System.out::println);

请参阅使用服务员了解更多信息。

配置服务客户端

要自定义服务客户端的配置,请在出厂方法上使用 setterbuilder. 为了方便起见并创建更具可读性的代码,您可以链接方法以设置多个配置选项。

例如,请参阅以下代码段。

ClientOverrideConfiguration clientOverrideConfiguration = ClientOverrideConfiguration.builder() .apiCallAttemptTimeout(Duration.ofSeconds(1)) .retryPolicy(RetryPolicy.builder().numRetries(10).build()) .addMetricPublisher(CloudWatchMetricPublisher.create()) .build(); Region region = Region.US_WEST_2; S3Client s3Client = S3Client.builder() .region(region) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(clientOverrideConfiguration) .httpClientBuilder(ApacheHttpClient.builder() .proxyConfiguration(proxyConfig.build(ProxyConfiguration.builder())) .build()) .build();

HTTP 客户端

您可以在使用构建的应用程序中更改 HTTP 客户端的默认配置Amazon SDK for Java. 有关如何配置 HTTP 客户端和设置的信息,请参阅。HTTP 配置.

重试

您可以在服务客户端中更改重试的默认设置,包括重试模式和退避策略。有关更多信息,请参阅RetryPolicy班级中的Amazon SDK for JavaAPI 参考。

有关重试的更多信息,请参阅Amazon服务,请参阅中的错误重试和指数退避Amazon.

超时

您可以使用为每个服务客户端配置超时apiCallTimeoutapiCallAttemptTimeoutsetter。这些区域有:apiCallTimeout设置是允许客户端完成 API 调用执行的时间。这些区域有:apiCallAttemptTimeout设置是在放弃前等待 HTTP 请求完成前要等待的时间长度。

有关更多信息,请参阅 。apiCallTimeoutapiCallAttemptTimeout中的Amazon SDK for JavaAPI 参考。

执行拦截器

您可以编写代码,在请求/响应生命周期的不同部分拦截 API 请求和响应的执行。这使您能够发布指标、在运行中修改请求、调试请求处理、查看异常等。有关更多信息,请参阅 。ExecutionInterceptor界面中的Amazon SDK for JavaAPI 参考。

其他信息