ニフクラ ブログ

ニフクラやクラウドの技術について、エンジニアが語るブログです。

ニフティクラウド SDK for Java を、サンプルソースを利用して動かしてみる。

こんにちは、ニフティクラウドのテクニカルアカウントエンジニアチームです。

ニフティクラウドでは、REST APIの提供以外にもサーバーの操作やステータス参照などを可能にする Java API を提供しています。
本記事では、そのためのツール「ニフティクラウド SDK for Java」を利用し、簡単な動作確認をしながらニフティクラウドを操作していきたいと思います。

はじめに

今回は、「APIの概要はある程度掴んではいるものの、プログラミングについてはハードル高く苦手意識が…」とか、「そもそもプログラム組んだことないし…」という方に、「ニフティクラウドSDK for Javaで用意されているサンプルソースを利用すればハードルはそれほど高くありません!」という観点で、検証を進めていきたいと思います。

なお、Javaソース内で指定するパラメーターは以下を参照しています。

▼利用可能なREST API一覧
http://cloud.nifty.com/api/rest/reference.htm

検証概要

今回の検証では、総合開発環境(IDE)である「Eclipse」に対し、ニフティクラウド SDK for Javaのサンプルソースを組み込み、以下の動作確認を行います。

  • OSイメージ一覧の取得
    ニフティクラウドが提供しているOSイメージ一覧を取得し、検証用に使用するサーバーの"イメージID"を確認します。
  • サーバー作成
    APIを実行し、GUIにて正常にサーバーが作成されていることを確認します。
  • サーバー停止
    APIを実行し、GUIにて正常にサーバーが停止されていることを確認します。
  • サーバー起動
    APIを実行し、GUIにて正常にサーバーが起動されていることを確認します。

検証環境作成

1.事前準備

  1. 利用OSに合ったEclipseを以下URL先よりダウンロードし任意の場所に解凍します。 今回の検証では「pleiades-e4.3-java-jre_20140321.zip」をダウンロードしています。

    ▼Pleiades - 統合開発環境 Eclipse 日本語化プラグイン
    http://mergedoc.osdn.jp

  2. ニフティクラウドSDK for Java、以下URL先よりダウンロードし任意の場所に解凍します。

    ▼クラウド API(ニフティクラウド SDK)
    http://cloud.nifty.com/api/sdk/#niftycloud
    ファイル名は「NIFTY_Cloud_SDK_for_Java.zip」です。

    api_01

  3. 以下URL先にてエンドポイントを確認します。

    ▼クラウド API(エンドポイント)
    http://cloud.nifty.com/api/endpoint.htm

    今回は「east-1」で検証しますので、エンドポイントは
    https://east-1.cp.cloud.nifty.com/api/」を使用します。

    api_02

  4. AccessKey/SecretAccessKey を取得します。
    1. コントロールパネル右上のNiftyIDを選択すると、アカウントメニューが表示されます。 次にメニューから「アカウント管理」をクリックします。

      api_03

    2. アクセスキーをコピーして保存しておきます。次に「シークレットアクセスキー」の右隣にある「表示」をクリックします。

      api_04

    3. シークレットアクセスキーも同じくコピーして保存しておきます。

      api_05

    【ご注意】
    SecretAccessKey が外部に漏れると、第三者から API が実行される可能性があります。外部に漏れないよう、SecretAccessKey の取り扱いには十分ご注意ください。

2.Javaプロジェクト作成

  1. Eclipse起動
    Eclipseを起動します。

    ※起動途中に下図ワークスペースの選択画面が表示されますが、デフォルトのままで構いません。

    api_06

  2. Eclipse起動後、Javaのプロジェクトを作成します。

    1. メニュー[ファイル]-[新規]-[Javaプロジェクト]をクリックします。
    2. 「新規Javaプロジェクト」作成画面の「プロジェクト名」箇所に任意のプロジェクト名を入力し、「完了」をクリックします。

      今回は「NiftyAPI」と入力しました。

      api_07

    3. Javaプロジェクトが作成されたことを確認します。

      api_08

  3. JavaプロジェクトNiftyAPI配下にソース・フォルダーを作成します。

    1. 先ほど作成したJavaプロジェクト「NiftyAPI」を選択し、右クリックメニュー[新規]-[ソースフォルダー]をクリックします。

      api_09

    2. フォルダ名に「src」と入力し、「完了」をクリックします。

      api_10

    3. JavaプロジェクトNiftyAPI配下にソース・フォルダー「src」が作成されたことを確認します。

      api_11

3.プロジェクトの設定

jarファイルを組み込んでいきます。

  1. 事前準備にてダウンロードした「NIFTY_Cloud_SDK_for_Java.zip」を解凍すると、以下のようなフォルダ構成となっています。

    api_12

  2. 「dist\lib\nifty-cloud-api-lib.jar」をEclipseへドラック&ドロップします。

    ※以降、jarファイルを組み込む時は、同様の手順を実施します。

    api_13

    「ファイル操作」ボップアップが表示されるので、「ファイルをコピー」にチェックを入れ「OK」をクリックします。

    api_14

  3. 組み込んだjarファイルをビルド・パスに追加します。

    nifty-cloud-api-lib.jarを選択し、右クリックメニュー内[ビルド・パス]-[ビルド・パスに追加]をクリックします。

    api_15

  4. 参照ライブラリーへ追加されたことを確認します。

    api_16

  5. 「NIFTY_Cloud_SDK_for_Java\third-party」フォルダをEclipseへドラック&ドロップします。 ※2と同様の手順で実施します。

  6. 組み込んだjarファイルをビルド・パスに追加します。

    パッケージ・エクスプローラーにて、[NiftyAPI]-[third-party]-[xxxxx.jar](※4ファイル)を選択し、右クリックメニュー内[ビルド・パス]-[ビルド・パスに追加]をクリックします。

    api_17

    api_18

  7. 4ファイルがすべて参照ライブラリーへ追加されたことを確認します。

    api_19

  8. 「NIFTY_Cloud_SDK_for_Java\src\com\nifty\cloud\sdk\sample」フォルダ内の以下ファイルをNiftyAPI配下のsrcソース・フォルダーへドラック&ドロップします。

    使用するサンプルソース
    • DescribeImagesSample.java
    • RunInstancesSample.java
    • StopInstancesSample.java
    • StartInstancesSample.java

    api_20

  9. 対象ソースをダブルクリック選択し、右ペインに表示されるソース内「package com.nifty.cloud.sdk.sample;」にカーソルを合わせると下図のようなポップアップ画面が表示されます。

    次にポップアップ内の「'xxxxxxxSample.java'をパッケージ'com.nifty.cloud.sdk.sample'に移動」をクリックします。

    ※8で追加した対象ソースすべてに対し、当手順を行います。

    api_21

  10. 対象ソースが[NiftyAPI]-[src]-[com.nifty.cloud.sdk.sample]へ移動したことを確認します。

    api_22

動作確認

ここから実際に動かしていきます。

組み込んだサンプルソースを正常に動作させるために必要な各種パラメーターの修正も行います。 本記事初めの方で紹介しました「利用可能なREST API一覧」を参照しつつ進めていきます。

1.OSイメージ情報の取得

使用ソース「DescribeImagesSample.java」

  1. 対象ソース内の下記パラメーター設定箇所を修正します。

    api_23

    ▼アクセスキー入力

    String accessKey = "<Input Your AccessKey>"; ←事前に取得しておいたアクセスキーを入力します。
    String secretKey = "<Input Your SecretAccessKey>"; ←事前に取得しておいたシークレットアクセスキーを入力します。
    

    ▼クライアント設定情報
    ※インターネットへ接続する為の設定箇所です。利用環境に応じて修正してください。

    ClientConfiguration config = new ClientConfiguration();
    // config.setUserAgent("NIFTY Cloud API Java SDK");
    // config.setProtocol(Protocol.HTTPS);
    // config.setProxyHost("proxy_host");
    // config.setProxyPort(0);
    // config.setProxyUsername("proxy_username");
    // config.setProxyPassword("proxy_password");
    // config.setMaxErrorRetry(3);
    // config.setMaxConnections(50);
    // config.setSocketTimeout(30);
    // config.setConnectionTimeout(30);
    // config.setSocketSendBufferSizeHint(0, 0);
    // config.setSignatureVersion(SignatureVersion.Version_2);
    // config.setSignatureMethod(SignatureMethod.HmacSHA256);
    // config.setRequestMethod("GET");
    

    ▼エンドポイントを指定

    client.setEndpoint("endpoint_url"); ←事前に確認しておいたエンドポイントを入力します。

    ▼リクエストパラメーター設定

    今回は特に設定はしません。
  2. メニューバー[実行]-[実行]をクリックし、修正したソースを動かしてみます。

    api_26

    [実行]クリック後、以下ポップアップ画面が表示されますので、「OK」をクリックします。

    api_25

  3. コンソールを開き、以下のように結果が返ってくればOSイメージ情報取得要求は成功です。
    ※コンソールは、メニューバー[ウィンドウ]-[ビューの表示]-[コンソール]から開きます。

    api_26

  4. 処理結果内容の下記箇所で作成するサーバーの"OSイメージID"を確認できます。 作成するサーバーはWindows Server 2012 R2を予定していますので…IDは「39」です。

    Image
    ImageId           : 39 ← OSイメージID
    ImageLocation     : 
    State             : available
    OwnerId           : niftycloud
    :
    :

2.サーバー作成

使用ソース「RunInstancesSample.java」

  1. コントロールパネルを確認すると、現時点ではサーバーがない状態です。

    api_27

  2. 「RunInstancesSample.java」のパラメータ設定を修正します。

    アクセスキー入力/クライアント設定情報/エンドポイント情報はOSイメージ情報取得と同じです。

    ▼リクエストパラメーター設定

    RunInstancesRequest request = new RunInstancesRequest();
    request.setImageId("39"); ←OSイメージID
    // request.setMinCount(0);
     :
     省略
     :
    request.setInstanceType("small4"); ←サーバータイプ。今回はsmall4を指定。
    // Placement placement = new Placement();
     :
     省略
     :
    request.setAccountingType("2"); ←利用料金タイプ 1:月額課金/2:従量課金
    request.setInstanceId("APITEST"); ←サーバー名
    request.setAdmin("admin"); ←管理者アカウント
    request.setPassword("password"); ←管理者アカウントパスワード
    request.setIpType("none"); ←グローバルIP none(グローバルIPなし)
    // request.setAgreement(true);
    // request.setPublicIp("publicIp");
  3. メニューバー[実行]-[実行]をクリックし、修正したソースを動かしてみます。
    ※手順はOSイメージ取得と同様です。

  4. コンソールを開き、以下のように結果が返ってくれば作成要求は成功です。

    api_28

  5. コントロールパネルの状況を確認します。

    サーバーの作成が始まってます。

    api_29

    しばらく待ち、ステータスが「オンライン」になれば作成完了です。

    api_30

3.サーバー停止

使用ソース「StopInstancesSample.java」

  1. 「StopInstancesSample.java」のパラメータ設定を修正します。 アクセスキー入力/クライアント設定情報/エンドポイント情報はOSイメージ情報取得と同じです。

    ▼リクエストパラメーター設定

    StopInstancesRequest request = new StopInstancesRequest();
    List instanceIds = new ArrayList(); ←コメントアウトを外す
    instanceIds.add("APITEST"); ←サーバー名
    request.setInstanceIds(instanceIds); ←コメントアウトを外す
    // request.setForce(false);
  2. メニューバー[実行]-[実行]をクリックし、修正したソースを動かしてみます。 ※手順はOSイメージ取得と同様です。

  3. コンソールを開き、以下のように結果が返ってくれば停止要求は成功です。

    api_31

  4. コントロールパネルの状況を確認します。 今回はすでに停止していました。

    タイミングによっては「処理中」となっていますが、しばらく待つと停止されます。

    api_32

4.サーバー起動

使用ソース「StartInstancesSample.java」

手順はこれまでと同様です。今回はサーバー起動時にサーバータイプを変更するようパラメーターを指定してみます。

  1. 「StartInstancesSample.java」のパラメーター設定を修正します。 アクセスキー入力/クライアント設定情報/エンドポイント情報はOSイメージ情報取得と同じです。

    ▼リクエストパラメーター設定
    StartInstancesRequest request = new StartInstancesRequest();
    List instances = new ArrayList(); ←コメントアウトを外す。
    InstanceIdSet instanceIdSet = new InstanceIdSet(); ←コメントアウトを外す。
    instanceIdSet.setInstanceId("APTTEST"); ←サーバー名。
    instanceIdSet.setInstanceType("small2"); ←サーバータイプを「small2」へ変更。
    // instanceIdSet.setAccountingType("accountingType");
    instances.add(instanceIdSet); ←コメントアウトを外す。
    request.setInstances(instances); ←コメントアウトを外す。
    // request.setUserData(new String(Base64.encodeBase64Chunked("userData".getBytes())));
    // request.setUserDataEncoding("base64");
    invokeStartInstances(client, request);
  2. メニューバー[実行]-[実行]をクリックし、修正したソースを動かしてみます。 ※手順はOSイメージ取得と同様です。

  3. コンソールを開き、以下のように結果が返ってくれば起動要求は成功です。

    api_33

  4. コントロールパネルの状況を確認します。

    api_34

    しばらく待ちスタータスが「オンライン」になれば起動完了です。 また、サーバータイプも「small4」から「small2」へ変更されていることも確認できます。

    api_35

まとめ

今回は、このようにニフティクラウド SDK for Javaのサンプルソースを使用し、単体処理ごとに動作確認を行いました。

各処理ごとにサンプルソースが用意されていることもあり、思っていたほど難しいこともなく動作させることができました。

今回検証したSDKのほかにも「ニフティクラウド エンジニアリングパーツ SDK for Java」や「ニフティクラウド ストレージ SDK for Java」を提供しております。

どちらもサンプルソースを用意しておりますので、同様の使用感で利用いただくことができます。

▼ニフティクラウド SDK
http://cloud.nifty.com/api/sdk/

それでもやはり…という方に、ニフティクラウド SDK for Javaをラッピングしたシェル(Linux 用)、バッチ(Windows用)のCLI(Command line interface)も提供しています。

普段からコマンドライン操作が多いインフラ・運用エンジニアの方には、CLIもお勧めです。

コマンドラインからニフティクラウドを操作することができ、ジョブスケジューリングソフトなどと併用することで自動運用も可能となります。

CLI動作検証は以下に掲載していますので、併せてご覧いただけると幸いです。

▼ニフティクラウド API REST、SDK for Java、CLI の提供を開始しました
http://blog.pfs.nifcloud.com/147/