

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

# 使用 AWS SDK for Java 2.x
<a name="using"></a>

本章向您展示如何 AWS SDK for Java 2.x 有效地使用。了解创建服务客户端、发出请求、处理响应和管理错误。本章介绍了同步和异步编程、分页结果、资源监视 Waiter 以及性能优化。

您还将找到客户端重复使用、故障排除指导、Lambda 启动优化、HTTP/2 支持和 DNS 配置的最佳实践。

**Contents**
+ [使用提出 AWS 服务 请求 AWS SDK for Java 2.x](work-witih-clients.md)
  + [使用服务客户端发出请求](work-witih-clients.md#using-service-client)
    + [创建服务客户端](work-witih-clients.md#work-with-clients-create)
    + [默认客户端配置](work-witih-clients.md#using-default-client)
    + [配置服务客户端](work-witih-clients.md#using-configure-service-clients)
    + [关闭服务客户端](work-witih-clients.md#using-closing-client)
  + [提出请求](work-witih-clients.md#using-making-requests)
    + [使用请求来覆盖客户端配置](work-witih-clients.md#using-override-client-config-request)
  + [处理回复](work-witih-clients.md#using-handling-responses)
+ [使用AWS SDK for Java 2.x 异步编程](asynchronous.md)
  + [使用异步客户端 API](asynchronous.md#basics-async-non-streaming)
  + [使用异步方法处理流](asynchronous.md#basics-async-streaming)
  + [配置高级异步选项](asynchronous.md#advanced-operations)
+ [使用的最佳实践 AWS SDK for Java 2.x](best-practices.md)
  + [通过配置 API 超时来防止请求挂起](best-practices.md#bestpractice5)
  + [通过重复使用服务客户端来提高性能](best-practices.md#bestpractice1)
  + [通过关闭未使用的服务客户端来防止资源泄漏](best-practices.md#bestpractice-close-client)
  + [通过关闭输入流来防止连接池耗尽](best-practices.md#bestpractice2)
  + [针对您的应用程序工作负载优化 HTTP 性能](best-practices.md#bestpractice3)
  + [使用适用于异步客户端的 OpenSSL 提高 SSL 性能](best-practices.md#bestpractice4)
  + [使用 SDK 指标监控应用程序性能](best-practices.md#bestpractice6)
+ [处理中的错误 AWS SDK for Java 2.x](handling-exceptions.md)
  + [为什么使用未选中的异常？](handling-exceptions.md#why-unchecked-exceptions)
  + [AwsServiceException （和子类）](handling-exceptions.md#sdkserviceexception-and-subclasses)
  + [SdkClientException](handling-exceptions.md#sdkclientexception)
  + [异常和重试行为](handling-exceptions.md#retried-exceptions)
+ [在 2.x 中使用分页结果 适用于 Java 的 AWS SDK](pagination.md)
  + [同步分页](pagination.md#synchronous-pagination)
    + [迭代页面](pagination.md#iterate-pages)
    + [迭代对象](pagination.md#iterate-objects)
      + [使用流](pagination.md#use-a-stream)
      + [使用 for-each 循环](pagination.md#for-loop)
    + [手动分页](pagination.md#manual-pagination)
  + [异步分页](pagination.md#asynchronous-pagination)
    + [迭代表名称页面](pagination.md#iterate-pages-async)
      + [使用 `Subscriber`](pagination.md#use-a-subscriber)
      + [使用 `Consumer`](pagination.md#id1pagination)
    + [迭代表名称](pagination.md#iterate-objects-async)
      + [使用 `Subscriber`](pagination.md#id2)
      + [使用 `Consumer`](pagination.md#for-loop-async)
    + [使用第三方库](pagination.md#use-third-party-library)
+ [在中使用服务员 AWS SDK for Java 2.x](waiters.md)
  + [先决条件](waiters.md#prerequisiteswaiters)
  + [使用 Waiter](waiters.md#id1waiters)
    + [同步编程](waiters.md#synchronous-programming)
    + [异步编程](waiters.md#asynchronous-programming)
  + [配置 Waiter](waiters.md#configuring-waiters)
    + [配置 Waiter](waiters.md#configure-a-waiter)
    + [覆盖特定请求的配置](waiters.md#override-configuration-for-a-specific-request)
  + [代码示例](waiters.md#code-examples)
+ [故障排除 FAQs](troubleshooting.md)
  + [如何修复“`java.net.SocketException`: Connection reset”或“server failed to complete the response”错误？](troubleshooting.md#faq-socketexception)
  + [如何修复“连接超时”？](troubleshooting.md#faq-connection-timeout)
  + [如何修复“`java.net.SocketTimeoutException`: Read timed out”？](troubleshooting.md#faq-socket-timeout)
  + [如何修复“Unable to execute HTTP request: Timeout waiting for connection from pool”错误？](troubleshooting.md#faq-pool-timeout)
  + [我该如何修复 `NoClassDefFoundError`、`NoSuchMethodError` 或 `NoSuchFieldError`？](troubleshooting.md#faq-classpath-errors)
  + [如何修复“`SignatureDoesNotMatch`”错误或“The request signature we calculated does not match the signature you provided”错误？](troubleshooting.md#faq-signature-does-not-match-error)
  + [如何修复“`java.lang.IllegalStateException`: Connection pool shut down”错误？](troubleshooting.md#faq-connection-pool-shutdown-exception)
  + [如何修复 “无法加载来自链中任何提供商的证书 AwsCredentialsProviderChain”？](troubleshooting.md#faq-credentials-provider-chain)
    + [常见原因和解决方案](troubleshooting.md#faq-cred-provider-chain-common-causes-and-solutions)
      + [检查您的凭证配置](troubleshooting.md#faq-cred-provider-chain-check-config)
        + [对于 Amazon EC2 实例](troubleshooting.md#faq-cred-check-ec2)
        + [对于容器环境](troubleshooting.md#faq-cred-check-container-env)
        + [对于本地开发](troubleshooting.md#faq-cred-check-local-dev)
        + [对于 Web 身份联合验证](troubleshooting.md#faq-cred-check-web-id-federation)
      + [网络或代理连接问题](troubleshooting.md#faq-credentials-provider-chain-network-issues)
+ [缩短 SDK 的启动时间 AWS Lambda](lambda-optimize-starttime.md)
  + [使用 AWS 基于 CRT 的 HTTP 客户端](lambda-optimize-starttime.md#lambda-quick-url)
  + [移除未使用的 HTTP 客户端依赖项](lambda-optimize-starttime.md#lambda-quick-remove-deps)
  + [配置服务客户端以进行快捷查找](lambda-optimize-starttime.md#lambda-quick-clients)
  + [在 Lambda 函数处理程序之外初始化 SDK 客户端](lambda-optimize-starttime.md#lambda-quick-initialize)
  + [尽量减少依赖关系注入](lambda-optimize-starttime.md#lambda-quick-di)
  + [使用 Maven Archetype 瞄准 AWS Lambda](lambda-optimize-starttime.md#lambda-quick-maven)
  + [考虑一下适用于 Java 的 Lambda SnapStart](lambda-optimize-starttime.md#lambda-quick-snapstart)
  + [影响启动时间的 2.x 版更改](lambda-optimize-starttime.md#example-client-configuration)
  + [其他资源](lambda-optimize-starttime.md#lambda-quick-resources)
+ [`ContentStreamProvider`在 AWS SDK for Java 2.x](content-stream-provider.md)
  + [使用 `mark()` 和 `reset()`](content-stream-provider.md#csp-impl-mark-reset)
  + [如果 `mark()` 和 `reset()` 不可用，则使用缓冲](content-stream-provider.md#csp-impl-unsupported-streams)
  + [创建新流](content-stream-provider.md#csp-impl-new-stream)
+ [为 DNS 名称查找设置 JVM TTL](jvm-ttl-dns.md)
  + [如何设置 JVM TTL](jvm-ttl-dns.md#how-to-set-the-jvm-ttl)
    + [选项 1：在应用程序中以编程方式进行设置](jvm-ttl-dns.md#set-ttl-programmatically)
    + [选项 2：将其设置在 java.security 文件中](jvm-ttl-dns.md#set-ttl-java-security-file)
    + [选项 3：使用 JDK 系统属性回退（命令行）](jvm-ttl-dns.md#set-ttl-system-property)
+ [在 适用于 Java 的 AWS SDK 中使用 HTTP/2](http2.md)