Amazon Redshift とのやり取りに AWS SDK for Java を使用する - Amazon Redshift

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 コード実行の一般的な手順例

  1. Eclipse で新しい AWS Java プロジェクトを作成します。

    AWS Toolkit for Eclipse 入門ガイドの「Setting up the AWS Toolkit for Eclipse」の手順に従います。

  2. お読みになっているこのドキュメントのセクションからサンプルコードをコピーし、新しい Java クラスファイルとしてプロジェクトに貼り付けます。

  3. コードを実行します。

コマンドラインからの Amazon Redshift の Java 実行例

コマンドラインからの Java コード実行例の一般的な手順

  1. 次のように環境をセットアップし、テストします。

    1. 作業するディレクトリを作成し、そのディレクトリに srcbin、および sdk サブフォルダを作成します。

    2. AWS SDK for Java をダウンロードし、作成した sdk サブフォルダに展開します。SDK を展開すると、sdk フォルダ内に 4 つのサブフォルダが作成されます (libthird-party フォルダなど)。

    3. SDK for Java に AWS 認証情報を指定します。詳細については、AWS SDK for Java デベロッパーガイドの「Providing AWS credentials in the AWS SDK for Java」を参照してください。

    4. Java プログラムコンパイラ (javac) と Java アプリケーションランチャー (java) を作業ディレクトリから実行できることを確認します。次のコマンドを実行することでテストできます。

      javac -help java -help
  2. 実行するコードを .java ファイルに記入し、そのファイルを src フォルダに保存します。このプロセスを説明するために、ここでは、AWS SDK for Java を使用したクラスターの管理 のコードを使用し、src ディレクトリのファイルが CreateAndModifyClusters.java になるようにしています。

  3. コードをコンパイルします。

    javac -cp sdk/lib/aws-java-sdk-1.3.18.jar -d bin src\CreateAndModifyClusters.java

    別バージョンの AWS SDK for Java を使用している場合、バージョンのクラスパス (-cp) を調整します。

  4. コードを実行します。次のコマンドでは、読みやすくするために改行が加えられています。

    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」のセクションを参照してください。