目次


IBM Bluemix を使って管理される API を作成する

API Management サービスを利用して、クラウド内で独自の API を作成、管理、共有する

Comments

API は急速に、組織の最も重要なアセットの 1 つとなってきています。皆さんが作成した API を他の開発者や組織がそれぞれのアプリケーションやサービスで使用できるようにすると、イノベーションや収益化を実現する強力なシステムとなります。

IBM API Management は、API アクセスの制御、API のバージョン管理、レート制限の設定、そしてポートフォリオに含まれる各 API のパフォーマンス指標とアナリティクスの追跡に対応する強力なメカニズムです。IBM BluemixAPI Management サービスを利用すれば、どこからでも 1 箇所にアクセスして API の購入および管理をすることが可能になります。このチュートリアルでは、API を作成して、その API を Bluemix 組織に公開し、最後にサンプル・アプリケーション・コードから API を使用する、一連のプロセスを紹介します。

このページの冒頭にある動画で、ステップ 1 からステップ 7 までの簡単な概要を紹介しているので、実際に作業に取り掛かる前に、このプロセスの感触をつかんでください。

API Management の中核となっている信条の 1 つは、「あなたの API を他の人々が使用できるようにする」ことです。API Management と Bluemix の組み合わせが、API を Bluemix 組織間で共有することを可能にしています。

アプリケーションを作成するために必要となるもの

ステップ 1. API Management サービスをプロビジョニングする

  1. Bluemix にログインします。
  2. カタログで、「Category (カテゴリー)」リストから「Integration (統合)」を選択し、「API Management」のタイルをクリックします。 Bluemix カタログから API Management を選択する画面のスクリーンショット
    Bluemix カタログから API Management を選択する画面のスクリーンショット
  3. このサービスに関する情報のページで、プランの選択肢を検討して、いずれかのプランを選択します (このチュートリアルを作成している時点で使用可能なプランは、「Standard (標準)」プランのみです)。「CREATE (作成)」ボタンをクリックします。すると、API Management サービスがプロビジョニングされて起動されます。最初に表示されるのは、入門ページです。入門ページのスクリーンショット
    入門ページのスクリーンショット
    「LEARN MORE (詳細情報)」をクリックすることで、随時、資料を調べることができます。

ステップ 2. 初めての API を作成する

API Manager を使用して API を一から作成することも、Swagger または WSDL (Web Services Description Language) 定義に基づく既存の API をインポートすることもできます。このチュートリアルでは、swagger.io から Pet Store というサンプル API をインポートします。

  1. Bluemix の「Get started with API Management (API Management 入門)」ページで、「Import APIs, or compose a new one. (既存の API をインポートするか、新しい API を作成します。)」リンクをクリックします。しばらくすると、新しいタブに API Manager が開きます。
  2. 左側の「API」アイコンをクリックし、表示される画面で青の「+ API」ボタンをクリックして「Import Swagger (Swagger のインポート)」を選択します。
  3. Swagger 文書をアップロードするか、Swagger 文書の URL を参照するかのどちらかを選べます。「Add API From Swagger Definition (Swagger 定義から API を追加します)」ダイアログ・ボックスで、以下の URLを「Swagger URL」フィールドに貼り付けます。

    https://raw.githubusercontent.com/mhamann/apim-sample/master/petstore.json

    「Username (ユーザー名)」フィールドと「Password (パスワード)」フィールドは空のままにして、「Load (負荷)」 をクリックします。

  4. API Manager には、Swagger 文書に含まれているすべての API とリソースが一覧表示されています。「Add (追加)」をクリックし、以下のスクリーンショットに示されている設定で API を作成します。API Manager で API を作成するための画面のスクリーンショット
    API Manager で API を作成するための画面のスクリーンショット

    API リストに新しい API が表示されます。API Manager の API リストに表示された、新しく作成された API のスクリーンショット
    API Manager の API リストに表示された、新しく作成された API のスクリーンショット
  5. API のタイトルをクリックして API エディターを開きます。このエディターで、各種の API 属性を変更することができます。具体的には、名前、説明、パスの変更、リソースの追加と削除、そして認証と承認などのオプションの調整を行うことができます。
  6. API のパスをクリックして、/v2 から /petstore に変更します。
  7. 「Security (セキュリティー)」タブをクリックします。「Identify Application Using (アプリケーションの識別に使用)」オプションの下で、ドロップダウン・リストから「Client ID and Client Secret (クライアント ID とクライアント・シークレット)」を選択します。これは、API のセキュリティーを強化するためです。
  8. 右上にある「Save API (保存)」ボタンをクリックします。「Success API Saved (成功 API が保存されました」というメッセージが表示されたら、API は正常に作成されています。

ステップ 3. プランを作成する

API を公開して呼び出せるようにするには、その前に、API をプランの一部にする必要があります。API Management ではプランを使用して、API リソースへのアクセス管理、レート制限の設定、各種環境 (サンドボックス環境、テスト環境、本番環境など) へのAPI のステージングに対応します。1 つのプランには、任意の数の API からのリソースを含められるので、リソースのグループごとに異なるレート制限でアクセスできるようになっています。このステップでは、新しいプランを作成して、そのプランに API リソースを追加し、レート制限を設定し、最後にプランをデプロイします。後で、このプランを公開して Bluemix で使用できるようにします。

  1. 「Plan (計画)」ページを開きます。それには、API Manager で「Plan (計画)」アイコン 「Plan (計画)」アイコンのスクリーンショットをクリックするか、「Get started with API Management (API Management 入門)」ページに戻って新しいプランの作成オプションを選択します。
  2. API Manager で、「+ Plan (+ 計画)」ボタンをクリックします。プランの名前を入力してから、「Add (追加)」をクリックします。
  3. プランのリストに、新しく作成したプランが表示されます。プランのタイトルをクリックしてプラン・エディターを開きます。
  4. 次は、Pet Store API のリソースをプランに追加します。「+ Resource (+ リソース)」ボタンをクリックします。左側に API のリストが表示され、右側に API のリソースが表示されます。「Swagger Petstore」という API が選択された状態になっていない場合は、この API を選択します。API に含まれるすべてのリソースを選択し、「Add (追加)」をクリックします。選択したリソースが、プラン・エディターの下部に表示されます。Petstore API の選択済みリソースのスクリーンショット
    Petstore API の選択済みリソースのスクリーンショット
  5. プランのレート制限を設定するには、「Rate limit (レート制限)」セクションで編集アイコンをクリックします。レート制限を、1 日あたりのリクエスト数 10,000 に設定して、「Apply (適用)」をクリックします。レート制限の設定画面のスクリーンショット
    レート制限の設定画面のスクリーンショット
  6. ページの右上隅にある「Save (保存)」を選択して、プランの変更内容を永続化します。サンドボックスにデプロイするために「Save (保存)」をクリックする画面のスクリーンショット
  7. プランをデプロイする準備ができました。「Deploy (デプロイ)」アイコンをクリックしてデプロイ・メニューを表示します。選択肢として「Sandbox (サンドボックス)」が表示されるまで待ってから、この選択肢を選択します。しばらくすると、成功の通知が表示されます。成功の通知のスクリーンショット
    成功の通知のスクリーンショット

この時点で、プランのデプロイは完了し、他の開発者と共有できるようになります。

ステップ 4. API を使用する他の開発者を招待する (オプション)

API Management の中核となっている信条の 1 つは、「あなたの API を他の人々が使用できるようにする」ことです。API Management と Bluemix の組み合わせが、API を Bluemix 組織間で共有することを可能にしています。API を他の組織と共有するには、このステップに従ってください。共有しないのであれば、ステップ 5 までスキップして構いません。

  1. 「Developers (開発者)」ページを開きます。それには、API Manager で開発者アイコン 「Developers (開発者)」アイコンのスクリーンショットをクリックするか、入門ページに戻って 3 番目の項目 (「Invite other Bluemix organizations to share your APIs (あなたの API を使用するよう、他の Bluemix 組織を招待します。)」) を選択します。
  2. 別の Bluemix ユーザーを招待し、そのユーザーの組織を自分の組織と関連付けるために、「+ Bluemix Organization (+ Bluemix 組織)」ボタンをクリックします。組織を関連付けると、以降はその組織と API を共有できるようになります。
  3. API を共有する相手の e-メール・アドレスを入力して、「Invite (招待)」をクリックします。API を共有するための e-メール・アドレス入力フィールドのスクリーンショット
    API を共有するための e-メール・アドレス入力フィールドのスクリーンショット

招待されたユーザーが e-メールの招待に応じるまでは、新たに関連付けた組織は開発者組織のリストに表示されません。

ステップ 5. API を Bluemix に公開する

  1. 「Management (管理)」ページを開きます。それには、API Manager で管理アイコン 「Management (管理)」アイコンのスクリーンショットをクリックするか、「Get started with API Management (API Management 入門)」ページに戻って、最後の項目を選択します。
  2. デプロイ済みプランのリストで、「Pet Store - Gold plan」をクリックしてプランを展開し、現在デプロイされているバージョンのリストを表示します。
  3. 起動アイコン 「Launch (起動)」アイコンのスクリーンショットをクリックしてプランの公開ウィザードを起動します。
  4. 「Publish this version (このバージョンを公開する)」が選択されていることを確認してから、「Next (次へ)」をクリックします。
  5. 次のウィザード・ページで、「Select group of developer organizations and communities (開発者組織およびコミュニティーのグループを選択します)」が選択されていることを確認してから、その下のフィールドで「Bluemix」を入力または選択します。ステップ 4 で他の Bluemix 組織を招待した場合、その組織の名前もここに入力すると、その組織にも API が公開されます (注: 入力フィールドがすぐに表示されない場合には、「Select group of developer organizations and communities (開発者組織およびコミュニティーのグループを選択します)」オプションの横にある青い丸を (すでにこの青い丸が選択されていたとしても) クリックしてみてください)。「Public Plan (プランの公開)」ダイアログ・ボックスのスクリーンショット
    「Public Plan (プランの公開)」ダイアログ・ボックスのスクリーンショット
  6. 「Publish (公開)」をクリックします。

しばらくすると、正常に公開されたことを示す通知が表示されます。

ステップ 6. API をアプリケーションにバインドする

API Manager で API を作成して Bluemix に公開するところまで正常に完了しました。現在、API は組織の Bluemix カタログに表示されているはずです。プロセスの最後のステップは、API をプロビジョニングしてからアプリケーションにバインドし、データ・フローを観察することです!そのために、これから新しい Node.js アプリケーションを作成し、API をプロビジョニングしてその新規アプリケーションにバインドした後、API に単純な Web フロント・エンドを提供するコードをアプリケーションにプッシュします。

  1. Bluemix ダッシュボードを開いて、「CREATE AN APP (アプリの作成)」をクリックします。
  2. 「WEB」をクリックします。
  3. 「SDK for Node.js」を選択してから、「CONTINUE (続行)」ボタンをクリックします。アプリケーションに一意の名前を指定した後、「FINISH (完了)」をクリックします。
  4. アプリケーションが作成されたら、ページの下までスクロールして、「VIEW APP OVERVIEW (アプリの概要の表示)」をクリックします。これで、新規アプリケーションの概要ページが表示されます。Bluemix に表示されたアプリケーションの概要ページのスクリーンショット
    Bluemix に表示されたアプリケーションの概要ページのスクリーンショット
  5. 「ADD A SERVICE OR API (サービスまたは API の追加)」をクリックします。これにより、Bluemix カタログが表示されます。「Custom APIs (カスタム API)」カテゴリーを選択して、「Swagger Petstore」タイルを選択します。カスタム API を追加する画面のスクリーンショット
    カスタム API を追加する画面のスクリーンショット

    API の詳細として、API が提供するすべてのリソースや、パラメーター、サンプル・レスポンスなどを確認することができます。API の詳細のスクリーンショット
    API の詳細のスクリーンショット
  6. API をプロビジョニングしてアプリケーションにバインドするために、バインド先とするアプリケーションが選択された状態で、「CREATE (作成)」ボタンをクリックします。アプリケーションの再ステージングを求められたら、「RESTAGE (再ステージ)」をクリックします。これで、Swagger Petstore がアプリケーションにバインドされたので、次はテストを行って、この API が機能することを確認するために、サンプル・コードを Bluemix アプリケーションにプッシュします。
  7. ご使用のコンピューター上のフォルダーにサンプル・アプリケーションのコードを複製します。それには、OS コマンド・ラインから git clone https://hub.jazz.net/git/integration/apimanagement-gettingstarted-sample を実行します。
  8. テキスト・エディターを使用して、複製したプロジェクトに含まれる manifest.yml ファイルを編集し、host および name プロパティーをこのステップで選択したアプリケーション名に変更します。ファイルを保存します。
  9. API はアプリケーションにバインドされているため、アプリケーションは実行時に、API の呼び出しに必要な資格情報と URL を自動的に参照します。app.js のライン 27 ~ 32 を見ると、簡単かつ確実に API の情報を検出する方法がわかります。
    var petstoreCreds = appEnv.getServiceCreds(/petstore/i)
    var apimUrl = url.parse(petstoreCreds.url);
    apimUrl.query = {
       'client_id': petstoreCreds.client_id,
       'client_secret': petstoreCreds.client_secret
    };

    訪問者がアプリケーションの UI を使用するたびに、バックエンド・サーバーは検出された API の URL と資格情報を使用して API を呼び出し、レスポンスを返します (ライン 44 ~ 53)。
    request.get({
          url: url.format(requestUrl),
          json: true
       }, function(err, resp, body) {
          console.log(body);
          
          res.send({
             pets: body,
             url: url.format(requestUrl)
          });
       });
  10. cf login -a https://api.ng.bluemix.net を実行して、Bluemix API にログインします。組織とスペースを入力するよう促されたら、ステップ 6 でアプリケーションを作成した組織とスペースを指定します。
  11. OS コマンド・ラインから、カレント・ディレクトリーをルート・ディレクトリー (Bluemix DevOps Services からプロジェクトを複製したディレクトリー) に変更します。
  12. コマンド・ラインから cf push を実行します。アプリケーションが Bluemix にプッシュされて、アプリケーションが正常に起動されたことを通知するメッセージが表示されます (このプロセスには数分かかる場合があります)。
  13. アプリケーションがデプロイされた後、URL https://host_name.mybluemix.net/ でアプリケーションにアクセスします。ページがロードされたら、オプションを選択してから API にクエリーを送信するためのボタンをクリックします。バックエンド・サーバーによって呼び出された API の URL と一緒に項目のリストが返されます。

ステップ 7. API を直接テストする (オプション)

Postman や同様のツールを使用すると、API を直接テストすることができ、ヘッダー、パラメーターなどを含む API 呼び出しを、送受信されたそのままのデータで確認することができます。このステップでは、この直接テストするオプションをデモします。まず、API の資格情報を取得してから、API をテストします。

  1. Bluemix のアプリケーション・ダッシュボードの左側で、「Environment Variables (環境変数)」をクリックします。アプリケーション・ダッシュボードから「Environment Variables (環境変数)」を選択する画面のスクリーンショットVCAP_SERVICES の変数が表示されます。ここに、Swagger Petstore API の詳細が含まれています。このうち、最も注目すべきは credentials セクションです。以下の例に示すように、このセクションに、API を呼び出すために必要なクライアント ID、クライアント・シークレット、URL が含まれています。
    {
      "Swagger Petstore v1 : Sandbox 55490fc20cf273432455d57b": [
        {
          "name": "Swagger Petstore-kc",
          "label": "Swagger Petstore v1 : Sandbox 55490fc20cf273432455d57b",
          "plan": "Pet Store - Gold Plan : Sandbox",
          "credentials": {
            "client_id": "fa3dea8b-2a24-4b4f-a143-a5726bef7a41",
            "client_secret": "H0cK0kP4pO6lJ1xM7pG1bY6jB1eK1rP2fG7lO3cN2dT1qA1pK3",
            "url": "https://api.apim.ibmcloud.com/demoibmcom-dev/sb/petstore"
          }
        }
      ]
    }
  2. Postman ユーティリティーまたは同様のツールを開きます (以下のスクリーンショットは、Postman のものです)。「URL」フィールドに、以下の URL を入力します。斜体で示されている部分は、ご自分の環境変数の資格情報の値で置き換えてください。

    credentials.url/pet/findByTags?tags=tag1&client_id=credentials.client_id&client_secret=credentials.client_secret

    : 資格情報が入力された Postman のスクリーンショット
    資格情報が入力された Postman のスクリーンショット
  3. 「Send (送信)」をクリックして API リクエストを実行します。すべてが正常に進むと、以下のような出力が表示されます。
    [{
        "id": 4,
        "category": {
            "id": 1,
            "name": "Dogs"
        },
        "name": "Dog 1",
        "photoUrls": [
            "url1",
            "url2"
        ],
        "tags": [{
            "id": 1,
            "name": "tag1"
        }]
    }]

まとめ

これで、Bluemix API Management サービスに API をインポートして、自分の組織の Bluemix カタログに公開し、API を Bluemix アプリケーションから使用することに成功しました。お見事です!

貴重なリソースへのアクセスを制御するには、API を管理された状態にすることが、強力かつ優れた方法になります。このチュートリアルの手順を基に、独自の API を API Management に追加して、特定の Bluemix 組織と共有してください。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing, Web development
ArticleID=1011476
ArticleTitle=IBM Bluemix を使って管理される API を作成する
publish-date=07302015