メニュー
Amazon Redshift
管理ガイド (API Version 2012-12-01)

AWS SDK for Java を使用したリザーブドノードサービスの購入

以下の例は、AWS SDK for Java を使用して次の処理を実行する方法を示しています。

  • 既存のリザーブドノードを一覧表示します。

  • 指定したノード条件に基づいて、新しいリザーブドノードサービスを検索します。

  • リザーブドノードを購入します。

この例は、指定したノードタイプと固定価格に一致するすべてのリザーブドノードサービスをまず選択します。次に、見つかった各サービスに対してコードを実行して、サービスを購入できるようにします。

重要

この例を実行し、リザーブドノードサービスを購入するサービスを承認すると、サービスについて課金されます。

この例を実行するための詳しい手順については、「Eclipse を使用した Amazon Redshift の Java 実行例」を参照してください。リストに示している以外のノードタイプと固定価格について情報を得るには、そのノードタイプと固定価格でコードを更新します。

Copy
import java.io.DataInput; import java.io.DataInputStream; import java.io.IOException; import java.util.ArrayList; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.PropertiesCredentials; import com.amazonaws.services.redshift.AmazonRedshiftClient; import com.amazonaws.services.redshift.model.DescribeReservedNodeOfferingsRequest; import com.amazonaws.services.redshift.model.DescribeReservedNodeOfferingsResult; import com.amazonaws.services.redshift.model.DescribeReservedNodesResult; import com.amazonaws.services.redshift.model.PurchaseReservedNodeOfferingRequest; import com.amazonaws.services.redshift.model.ReservedNode; import com.amazonaws.services.redshift.model.ReservedNodeAlreadyExistsException; import com.amazonaws.services.redshift.model.ReservedNodeOffering; import com.amazonaws.services.redshift.model.ReservedNodeOfferingNotFoundException; import com.amazonaws.services.redshift.model.ReservedNodeQuotaExceededException; public class ListAndPurchaseReservedNodeOffering { public static AmazonRedshiftClient client; public static String nodeTypeToPurchase = "ds1.xlarge"; public static Double fixedPriceLimit = 10000.00; public static ArrayList<ReservedNodeOffering> matchingNodes = new ArrayList<ReservedNodeOffering>(); public static void main(String[] args) throws IOException { AWSCredentials credentials = new PropertiesCredentials( ListAndPurchaseReservedNodeOffering.class .getResourceAsStream("AwsCredentials.properties")); client = new AmazonRedshiftClient(credentials); try { listReservedNodes(); findReservedNodeOffer(); purchaseReservedNodeOffer(); } catch (Exception e) { System.err.println("Operation failed: " + e.getMessage()); } } private static void listReservedNodes() { DescribeReservedNodesResult result = client.describeReservedNodes(); System.out.println("Listing nodes already purchased."); for (ReservedNode node : result.getReservedNodes()) { printReservedNodeDetails(node); } } private static void findReservedNodeOffer() { DescribeReservedNodeOfferingsRequest request = new DescribeReservedNodeOfferingsRequest(); DescribeReservedNodeOfferingsResult result = client.describeReservedNodeOfferings(request); Integer count = 0; System.out.println("\nFinding nodes to purchase."); for (ReservedNodeOffering offering : result.getReservedNodeOfferings()) { if (offering.getNodeType().equals(nodeTypeToPurchase)){ if (offering.getFixedPrice() < fixedPriceLimit) { matchingNodes.add(offering); printOfferingDetails(offering); count +=1; } } } if (count == 0) { System.out.println("\nNo reserved node offering matches found."); } else { System.out.println("\nFound " + count + " matches."); } } private static void purchaseReservedNodeOffer() throws IOException { if (matchingNodes.size() == 0) { return; } else { System.out.println("\nPurchasing nodes."); for (ReservedNodeOffering offering : matchingNodes) { printOfferingDetails(offering); System.out.println("WARNING: purchasing this offering will incur costs."); System.out.println("Purchase this offering [Y or N]?"); DataInput in = new DataInputStream(System.in); String purchaseOpt = in.readLine(); if (purchaseOpt.equalsIgnoreCase("y")){ try { PurchaseReservedNodeOfferingRequest request = new PurchaseReservedNodeOfferingRequest() .withReservedNodeOfferingId(offering.getReservedNodeOfferingId()); ReservedNode reservedNode = client.purchaseReservedNodeOffering(request); printReservedNodeDetails(reservedNode); } catch (ReservedNodeAlreadyExistsException ex1){ } catch (ReservedNodeOfferingNotFoundException ex2){ } catch (ReservedNodeQuotaExceededException ex3){ } catch (Exception ex4){ } } } System.out.println("Finished."); } } private static void printOfferingDetails( ReservedNodeOffering offering) { System.out.println("\nOffering Match:"); System.out.format("Id: %s\n", offering.getReservedNodeOfferingId()); System.out.format("Node Type: %s\n", offering.getNodeType()); System.out.format("Fixed Price: %s\n", offering.getFixedPrice()); System.out.format("Offering Type: %s\n", offering.getOfferingType()); System.out.format("Duration: %s\n", offering.getDuration()); } private static void printReservedNodeDetails(ReservedNode node) { System.out.println("\nPurchased Node Details:"); System.out.format("Id: %s\n", node.getReservedNodeOfferingId()); System.out.format("State: %s\n", node.getState()); System.out.format("Node Type: %s\n", node.getNodeType()); System.out.format("Start Time: %s\n", node.getStartTime()); System.out.format("Fixed Price: %s\n", node.getFixedPrice()); System.out.format("Offering Type: %s\n", node.getOfferingType()); System.out.format("Duration: %s\n", node.getDuration()); } }