AWS SDK for Java
開発者ガイド

サービスクライアントの作成

Amazon Web Services にリクエストを行うには、最初にサービスクライアントのオブジェクトを作成します。推奨される方法は、サービスクライアントビルダーを使用することです。

それぞれの AWS のサービスには、API サービス内の各アクション用のメソッドを備えたサービスインターフェイスがあります。たとえば、Amazon DynamoDB のサービスインターフェイスは、AmazonDynamoDB という名前です。各サービスインターフェイスに対応するクライアントビルダーがあり、サービスインターフェイスの実装を構築する際に使用できます。DynamoDB のクライアントビルダークラスは、AmazonDynamoDBClientBuilder という名前です。

クライアントビルダーの取得

クライアントビルダーのインスタンスを取得するには、次の例に示す静的ファクトリメソッド standard を使用します。

AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard();

ビルダーを取得すると、ビルダー API で多数の fluent setter を使用して、クライアントのプロパティをカスタマイズできます。たとえば、カスタムリージョンおよびカスタム認証情報プロバイダーは以下のように設定できます。

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")) .build();

注記

fluent withXXX メソッドは builder オブジェクトを返し、メソッドの呼び出しを連鎖させて利便性とコードの可読性を向上させることができます。必要なプロパティを設定後、build メソッドを呼び出してクライアントを作成することができます。作成後のクライアントはイミュータブルで、setRegion または setEndpoint の呼び出しはすべて失敗します。

ビルダーでは、同じ構成で複数のクライアントを作成できます。アプリケーションを記述している場合、ビルダーがミュータブルであり、スレッドセーフでないことに注意してください。

次のコードでは、クライアントインスタンスのファクトリとしてビルダーが使用されます。

public class DynamoDBClientFactory { private final AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")); public AmazonDynamoDB createClient() { return builder.build(); } }

ビルダーは、ClientConfiguration および RequestMetricCollector の fluent setter、および RequestHandler2 のカスタムリストも公開します。

すべての設定可能なプロパティをオーバーライドする完全な例を次に示します。

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")) .withClientConfiguration(new ClientConfiguration().withRequestTimeout(5000)) .withMetricsCollector(new MyCustomMetricsCollector()) .withRequestHandlers(new MyCustomRequestHandler(), new MyOtherCustomRequestHandler) .build();

非同期クライアントの作成

AWS SDK for Java には、(Amazon S3 を除く) すべてのサービス用の非同期クライアント、およびすべてのサービス用の対応する非同期クライアントビルダーもあります。

非同期 DynamoDB クライアントをデフォルトの ExecutorService で作成するには

AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")) .build();

同期クライアントビルダーがサポートする構成オプションに加え、非同期クライアントでは、カスタム ExecutorFactory を設定して、非同期クライアントが使用する ExecutorService を変更することができます。ExecutorFactory は関数型インターフェイスであり、Java 8 ラムダ式表現およびメソッド参照とともに使用することができます。

非同期クライアントをカスタムエグゼキューターで作成するには

AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard() .withExecutorFactory(() -> Executors.newFixedThreadPool(10)) .build();

DefaultClient の使用

同期クライアントビルダーと非同期クライアントビルダーの両方に、defaultClient という名前の別のファクトリメソッドがあります。このメソッドは、デフォルトプロバイダチェーンを使用して認証情報と AWS リージョンをロードすることで、デフォルト構成を持つサービスクライアントを作成します。アプリケーションを実行している環境から認証情報またはリージョンが決定できない場合、defaultClient の呼び出しは失敗します。認証情報とリージョンの決定に関する詳細については、「AWS 認証情報の使用」および「AWS リージョンの選択」を参照してください。

デフォルトサービスクライアントを作成するには

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();

クライアントのライフサイクル

SDK のサービスクライアントはスレッドセーフであり、最大のパフォーマンスを得るには、存続期間の長いオブジェクトとしてこれらを処理する必要があります。各クライアントは独自の接続プールリソースを備えています。リソースリークを回避するために、不要になったときは明示的にクライアントをシャットダウンしてください。

明示的にクライアントをシャットダウンする場合は、shutdown メソッドを呼び出します。shutdown の呼び出し後は、すべてのクライアントリソースが解放され、クライアントが使用できなくなります。

クライアントをシャットダウンするには

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); ddb.shutdown(); // Client is now unusable