Amazon Redshift とのやり取りに AWS SDK for Java を使用する
AWS SDK for Java には AmazonRedshiftClientBuilder
というクラスがあります。このクラスを使用して Amazon Redshift とやり取りすることができます。AWS SDK for Java のダウンロードの詳細については、「AWS SDK for Java
注記
AWS SDK for Java には、Amazon Redshift へのアクセスに使用できるスレッドセーフのクライアントが用意されています。最善の方法としては、ご利用のアプリケーションでクライアントを 1 つ作成し、そのクライアントをスレッド間で再利用することです。
AmazonRedshiftClientBuilder
および AwsClientBuilder
クラスを使用して、エンドポイントを設定し、AmazonRedshift
クライアントを作成できます。その後、クライアントオブジェクトを使用して、Cluster
オブジェクトのインスタンスを作成できます。Cluster
オブジェクトには、基盤となる Amazon Redshift クエリ API のアクションに対応するメソッドが含まれます (これらのアクションについては、Amazon Redshift API リファレンスを参照してください)。メソッドを呼び出す場合、対応するリクエストオブジェクトを作成する必要があります。リクエストオブジェクトには、実際のリクエストで渡す必要がある情報が含まれます。Cluster
オブジェクトでは、リクエストに対するレスポンスで Amazon Redshift から返される情報が提供されます。
次の例では、AmazonRedshiftClientBuilder
クラスを使用して、エンドポイントを設定してから 2 ノードの ds2.xlarge クラスターを作成する方法を示しています。
String endpoint = "https://redshift.us-east-1.amazonaws.com/"; String region = "us-east-1"; AwsClientBuilder.EndpointConfiguration config = new AwsClientBuilder.EndpointConfiguration(endpoint, region); AmazonRedshiftClientBuilder clientBuilder = AmazonRedshiftClientBuilder.standard(); clientBuilder.setEndpointConfiguration(config); AmazonRedshift client = clientBuilder.build(); CreateClusterRequest request = new CreateClusterRequest() .withClusterIdentifier("exampleclusterusingjava") .withMasterUsername("masteruser") .withMasterUserPassword("12345678Aa") .withNodeType("ds2.xlarge") .withNumberOfNodes(2); Cluster createResponse = client.createCluster(request); System.out.println("Created cluster " + createResponse.getClusterIdentifier());
Eclipse を使用した Amazon Redshift の Java 実行例
Eclipse を使用した Java コード実行の一般的な手順例
Eclipse で新しい AWS Java プロジェクトを作成します。
AWS Toolkit for Eclipse 入門ガイドの「Setting up the AWS Toolkit for Eclipse」の手順に従います。
お読みになっているこのドキュメントのセクションからサンプルコードをコピーし、新しい Java クラスファイルとしてプロジェクトに貼り付けます。
コードを実行します。
コマンドラインからの Amazon Redshift の Java 実行例
コマンドラインからの Java コード実行例の一般的な手順
-
次のように環境をセットアップし、テストします。
-
作業するディレクトリを作成し、そのディレクトリに
src
、bin
、およびsdk
サブフォルダを作成します。 -
AWS SDK for Java をダウンロードし、作成した
sdk
サブフォルダに展開します。SDK を展開すると、sdk
フォルダ内に 4 つのサブフォルダが作成されます (lib
、third-party
フォルダなど)。 -
SDK for Java に AWS 認証情報を指定します。詳細については、AWS SDK for Java デベロッパーガイドの「Providing AWS credentials in the AWS SDK for Java」を参照してください。
Java プログラムコンパイラ (
javac
) と Java アプリケーションランチャー (java
) を作業ディレクトリから実行できることを確認します。次のコマンドを実行することでテストできます。javac -help java -help
-
実行するコードを .java ファイルに記入し、そのファイルを
src
フォルダに保存します。このプロセスを説明するために、ここでは、AWS SDK for Java を使用したクラスターの管理 のコードを使用し、src
ディレクトリのファイルがCreateAndModifyClusters.java
になるようにしています。-
コードをコンパイルします。
javac -cp sdk/lib/aws-java-sdk-1.3.18.jar -d bin src\CreateAndModifyClusters.java
別バージョンの AWS SDK for Java を使用している場合、バージョンのクラスパス (
-cp
) を調整します。 -
コードを実行します。次のコマンドでは、読みやすくするために改行が加えられています。
java -cp "bin; sdk/lib/*; sdk/third-party/commons-logging-1.1.1/*; sdk/third-party/httpcomponents-client-4.1.1/*; sdk/third-party/jackson-core-1.8/*" CreateAndModifyClusters
お使いのオペレーティングシステムに合わせて、必要に応じてクラスパスの区切り文字を変更してください。例えば、Windows の区切り文字は例のように「;」ですが、Unix の場合は「:」です。コード例によっては、この例よりも多くのライブラリが必要になる場合があります。また、使用している AWS SDK のバージョンによってはサードパーティーのフォルダ名が異なる場合があります。このような場合は、必要に応じてクラスパス (
-cp
) を調整してください。このドキュメントのサンプルを実行するには、Amazon Redshift をサポートする AWS SDK のバージョンを使用してください。AWS SDK for Java の最新バージョンを取得するには、AWS SDK for Java
にアクセスします。
エンドポイントの設定
デフォルトで、AWS SDK for Java はエンドポイント https://redshift.us-east-1.amazonaws.com/
を使用しています。次の Java コードスニペットに示すように、client.setEndpoint
メソッドを使用してエンドポイントを明示的に設定できます。
client = new AmazonRedshiftClient(credentials); client.setEndpoint("https://redshift.us-east-1.amazonaws.com/");
クラスターをプロビジョニングできる AWS リージョンのリストについては、Amazon Web Services 用語集の「Regions and endpoints」のセクションを参照してください。