ステップ 5.CloudHub への API のデプロイ

新しい API を含む Mule アプリケーションを Studio で作成してテストしたので、次は API を CloudHub にデプロイすることができます。まず、Exchange から API をテストできるようにするために API プロキシを作成します。その後、API をサービス拒否攻撃から保護するためのレート制限ポリシーをセットアップします。

ステップ 5.1: API を CloudHub にデプロイする

この API を Mule アプリケーションとしてデプロイする手順は次のとおりです。

  1. Studio で [Mule Design (Mule デザイン)] パースペクティブに切り替え、Package Explorer で ​hello-world-app​ プロジェクトを右クリックして、​[Anypoint Platform] > [Deploy to CloudHub (CloudHub にデプロイ)]​ を選択します。

  2. Anypoint Platform のユーザー名とパスワードが要求された場合はそれぞれを入力して ​[Sign In (サインイン)]​ をクリックします。

    CloudHub にデプロイするためのダイアログ

  3. API のデプロイ先となる自分のアカウントの Sandbox で作業を行う必要があります。​[Sandbox]​ ではなく ​[Design (デザイン)]​ と表示されている場合は以下の手順を実行してください。

    1. [Design (デザイン)]​ をクリックして [Switch Environment (環境の切り替え)] ダイアログを開きます。

    2. [Sandbox]​ をクリックして ​[Switch (切り替え)]​ をクリックします。

  4. [Deploying Application (アプリケーションのデプロイ)] に、アプリケーション名として ​hello-world-greeting-firstname-lastname​ と入力します。すべてのアプリケーション名と API 参照名は CloudHub 全体で一意である必要があります。この例では、​hello-world-greeting-sandy-kim​ を使用します。

  5. [Deployment Target (デプロイメント対象)]​ に、​[CloudHub]​ を選択します。

  6. 他のデフォルト値は変更しないでください。

  7. [Deploy Application (アプリケーションをデプロイ)]​ をクリックします。少しの間を置いて、デプロイメントの状況がウィンドウに表示されます。

  8. [Open in Browser (ブラウザーで開く)]​ をクリックして、Runtime Manager で表示される状況を確認します。

    アプリケーションのデプロイ状況を表示している Runtime Manager

    プロジェクトが正常にデプロイされると、Runtime Manager に表示されている状況が ​[Started (開始済み)]​ に変わります。

  9. API デプロイメントをテストするため、Advanced Rest クライアントから要求を送信します。

    1. [Started (開始済み)]​ をクリックして​アプリケーションの URL​ を表示します。

    2. アプリケーションの URL 値をコピーします。この場合は ​hello-world-greeting.sandy-kim.us-e2.cloudhub.io​ です。 + この URL は、後でプロキシ API を設定する際にも使用します。 +

    3. Advanced Rest クライアントで、コピーしたベース URI に要求を送信します。API エンドポイントの ​/api/greeting​ を忘れずに付加してください。

      GET http://hello-world-greeting.sandy-kim.us-e2.cloudhub.io/api/greeting
    4. 200 OK​ と指定した挨拶文の ​Today the greeting is Hello.​ が表示されれば、作成した API は正常にデプロイされています。

次に、アクセスを制限してサービスを保護するために、この API 用の API プロキシアプリケーションを作成する必要があります。 レート制限ポリシーを追加しますが、これは API の実行中に行うことができます。

ステップ 5.2: API プロキシアプリケーションを作成してデプロイする

エンドポイントにレート制限ポリシーを追加する前に、API を API Manager に追加して API プロキシを作成する必要があります。

  1. Anypoint Platform にログインします。

  2. [API Manager]​ をクリックします。

  3. [Sandbox]​ をクリックして Sandbox 環境に切り替えます。

  4. [Add API (API を追加)] > [Add new API (新しい API を追加)]​ を選択します。

  5. [New API (新しい API)] ページで、​[Mule gateway (Mule ゲートウェイ)]​ を選択し、次の値を選択します。

    • [Proxy type (プロキシ種別)]​ に、​[Deploy a proxy application (プロキシアプリケーションをデプロイ)]​ を選択します。

    • [Target type (対象種別)]​ に、​[CloudHub]​ を選択します。

  6. [Proxy app name (プロキシアプリケーション名)]​ (これは Runtime Manager に表示されるアプリケーション名です) に ​hello-world-greeting-proxy​ と入力し、最後に自分の姓または他の一意の文字列を付加してプロキシ名が一意になるようにし、​[Next (次へ)]​ をクリックします。

  7. [Select API from Exchange (Exchange から API を選択)]​ をまだ選択していない場合はクリックします。

  8. [Select API (API を選択)]​ 検索ボックスに ​hello​ と入力し、ドロップダウンから ​[hello-world-api]​ を選択します。ここでは、​hello-world-greeting​ というデプロイ済みアプリケーションではなく、API を編集しています。

  9. 次のデフォルト値をそのままにして、​[Next (次へ)]​ をクリックします。

    • Asset type (アセットタイプ): RAML/OAS

    • API version (API バージョン): v1 (最新)

    • Asset version (アセットバージョン): 1.0.0

  10. [Downstream (ダウンストリーム)]​ ページで、デフォルトを受け入れて ​[Next (次へ)]​ をクリックします。

  11. [Upstream (アップストリーム)]​ ページで、アップストリーム URL を入力して ​[Next (次へ)]​ をクリックします。

    アップストリーム URL は、Runtime Manager のデプロイ済みアプリケーションからの ​[App url (アプリケーション URL)]​ です。

  12. [Save & Deploy (保存してデプロイ)]​ をクリックします。

  13. API インスタンスがデプロイされたら、Anypoint Runtime Manager へのリンクが記載された確認メッセージが表示されます。リンクをクリックして、API インスタンスの詳細を表示します。

これで API が API Manager で管理されるようになったので、次のステップでプロキシを作成できます。

ステップ 5.3.API プロキシの設定

この時点で、外部には公開しない実装 URL と、設定後は外部と共有しても安全なプロキシ URL が用意されました。

プロキシを設定する手順は次のとおりです。

  1. [API Manager] > [API Administration (API 管理)]​ で、​hello-world-api​ リンクをクリックします。

  2. [API Summary (API の概要)]​ で、​[Proxy URL (プロキシ URL)]​ リンクをクリックしてコピーします。

  3. 鉛筆アイコンをクリックして API インスタンスを編集します。

  4. [Downstream (ダウンストリーム)]​ セクションで、コピーしたばかりのリンクを ​[Consumer endpoint (コンシューマーエンドポイント)]​ に貼り付け、​[Save & Apply (保存して適用)]​ をクリックします。

次の手順で、Exchange からプロキシエンドポイントをテストできます。

  1. [Actions (アクション)] > [View API in Exchange (Exchange で API を表示)]​ を選択します。

  2. [Expand (展開)] アイコンをクリックし、​[Manage versions (バージョンを管理)]​ をクリックします。

    モッキングサービスバージョンと、今 Sandbox 環境で作成した新しいプロキシが表示されます。

  3. [Close (閉じる)]​ をクリックします。

  4. /greeting​ をクリックして開き、​[GET]​ をクリックします。

  5. [Select server (サーバーを選択)]​ で、メニューを展開して ​[Sandbox - v1:<version>]​ を選択します。

    使用可能なサーバーのリストが表示されている展開済みのサーバーメニュー

  6. [Send (送信)]​ をクリックします。応答が ​200 OK​ で挨拶文が ​Today the greeting is Hello.​ であることを確認してください。

以下の手順でプロキシの設定を完了します。

  1. [Home (ホーム)]​ をクリックして API の概要に戻ります。

  2. [Share (共有)]​ をクリックします。

  3. [Share (共有)]​ ダイアログで、​[Public (公開)]​ をクリックして API バージョンを選択し、公開 Exchange ポータルで使用可能にします。

    「Public (公開)」 とバージョン v1 のチェックボックスがオンになっている 「Share (共有)」 ウィンドウ

  4. [Save (保存)]​ をクリックします。

ステップ 5.4: レート制限ポリシーを追加する

レート制限ポリシーを追加する手順は次のとおりです。

  1. API Manager に戻ります。

  2. [API Administration (API 管理)]​ で、​hello-world-api​ リンクをクリックします。

  3. ナビゲーションで ​[Policies (ポリシー)]​ をクリックします。

  4. [Add policy (ポリシーを追加)]​ をクリックします。

  5. [Quality of service (サービスの品質)]​ セクションまでスクロールし、​[Rate limiting (レート制限)]​ (​[Rate limiting - SLA based (レート制限 - SLA ベース)]​ ではありません) を選択して ​[Next (次へ)]​ をクリックします。

  6. [Configure Rate limiting policy (レート制限ポリシーを設定)]​ ページで、次のレート制限値を設定します。

    • Number of Requests (要求数)​: 3

    • Time Period (期間)​: 1

    • Time Unit (時間単位)​: Minute (分)

  7. [Expose Headers (ヘッダーを公開)]​ を選択します。

    レート制限値が選択済みのレート制限ポリシー設定ページ

  8. [Advanced options (詳細オプション)]​ セクションで最新バージョンを選択します。

  9. [Method & Resource conditions (メソッドとリソースの条件)]​: [Apply configurations to all API methods & resources (設定をすべての API メソッドおよびリソースに適用)]​ を選択し、​[Apply (適用)]​ をクリックします。

[Policies (ポリシー)] ホームページに新しいポリシーが表示されます。

プロキシにポリシーが設定されていることを示すように API インスタンスの表示ラベルを変更します。

  1. ナビゲーションで ​[API Summary (API の概要)]​ をクリックします。

  2. 鉛筆アイコンをクリックして ​[Instance Label (インスタンスの表示ラベル)]​ の値を ​Rate-limiting policy​ に変更します。

  3. [Save & Apply (保存して適用)]​ をクリックします。

新しいポリシーをテストします。

Advanced Rest クライアントで、​429 Too Many Requests​ が返されるまで GET 要求を API プロキシ ​http://hello-world-greeting-proxy.us-e2.cloudhub.io/greeting​ (コンシューマーエンドポイント + ​/greeting​) に繰り返し送信します。

次のステップ

API を Mule アプリケーションとして CloudHub の Mule にデプロイしましたので、以後は Anypoint Platform ツールを使用して管理できます。

開発者向けの詳細

MuleSoft は、​「Mule アプリケーションのデプロイ」​で説明されている多くのデプロイオプションを提供しています。