MulesoftでAPI開発～APIをCloudHubにデプロイ～

# はじめに
今回はAnypointStudioで作成したAPIをAnypointPlatformのCloudHubにデプロイします。
CloudHubへのデプロイ方法はいくつかありますが、今回はAnypointStudioからのデプロイをやってみます。

# APIの作成
今回はこちらで作成したAPIをCloudHubにデプロイしますので割愛します。

#### [MulesoftでAPI開発～最初のAPI開発～](https://qiita.com/pluejomo/items/2417cd4c58142d6f5eb3)

# AnypointStudioにAnypointPlatformのアカウントを設定
AnypointStudioからデプロイする場合、
AnypointPlatformの自分のアカウントをAnypointStudioに設定する必要があります。

#### [Window] -> [Preference] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/1bd983c3-f9b7-54b6-6957-28f171fffebf.png)

#### [AnypointStudio] -> [Authentication] -> [Add] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/39464e2f-4566-5cfe-2780-2b8e6c4d9778.png)

#### 自分のアカウントでログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/873e7d9d-a7fa-738a-a82f-fefa22fb9707.png)

#### 自分のアカウントにチェック -> [Apply and Close]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/bdef7c4a-b837-8389-784f-603f9f0f015c.png)

# デプロイを実行
:::note warn
HTTPリスナーのポート設定が「8081」になっているか確認してください。
AnypointPlatformがHTTPリクエストを受け付けた際、
AnypointPlatformはAPIの「8081」番ポートに向かって転送します。
「8081」番以外の設定にしていると、**APIアクセス時にエラー** になってしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/b5dd1766-6bca-36de-a2ab-70ebf4d5c318.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/a387a9f8-59a9-99eb-ec9e-e5efba538201.png)

:::
#### プロジェクトの右クリック -> [Anypoint Platform] -> [Deploy to CloudHub]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/651ceac7-fa4b-077c-b766-5659f9b8048a.png)

#### API名を設定
:::note warn
API名はCloudHub全体でユニークである必要があるため、
以下のように「helloworld」では警告が表示されます。別名に変更してください。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/c3fca2c8-f10b-5525-0e8d-b7fef43ddb2e.png)


#### [Deploy Application]をクリック
:::note warn
デプロイ先の環境に注意してください。
以下の例では「PRODUCTION」環境へのデプロイになっています（画面左上のボタンより変更可能）。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/24b431ce-e0de-c40e-a5ac-02aa9759f6f4.png)

デプロイには数分～十数分かかります。
状況を確認したい場合は、[Open in Browser]をクリックしてAnypointPlatformから確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/dc911617-b18f-d9b4-0237-c434746a0e67.png)

# デプロイ状況の確認
#### AnypointPlatformにログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/0035a146-0113-1c69-e3c7-1ef63eab70dc.png)

#### RuntimeManagerに移動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/3f5b3aad-e524-28be-3878-c036dfbb595b.png)

#### デプロイ状況の確認
「helloworld-hoge」APIのStatusが **Started** になればデプロイ完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/b18c9829-ee9a-3b56-f658-a694ac2b6f8a.png)

**Updating** の場合、もう少し待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/229571f2-9678-c598-0d5f-b4a547ca1d71.png)

:::note warn
「helloworld-hoge」APIが一覧にない場合、
デプロイ先の環境を間違えているかもしれません。
画面左上のボタンから、環境を切り替えてみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/25478906-6aa3-2ca7-02bf-119f6275b94a.png)
:::


# 動作確認
#### 「helloworld-hoge」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/eb123077-0840-98af-9f60-77a4e8a25ab1.png)

#### APIのURLをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/97b6cd2a-d4ad-da98-ae12-965a45d55ba3.png)

URLにパスが付与されていないため、「そんなAPIはないよ」 とエラーになります。
次の手順で解決します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/cce368ab-be5c-1d1b-c9c6-8be621b5c9e7.png)

#### URLにパスをつけてAPIを呼び出す
URLが
```
http://helloworld-hoge.jp-e1.cloudhub.io
```
となっているので、
```
http://helloworld-hoge.jp-e1.cloudhub.io{ベースパス}{パス}
```
として再度アクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/c0ac62bb-906e-2400-8a7d-f93ed2851848.png)
正常なレスポンスを取得できました。


:::note warn
以下の画面が表示されてしまった場合、
URLが`https://～`になっていないか確認してください。
Chrome等ではアドレスバーにURLを手入力すると、自動的に`https://～`になってしまいます。
`http://～`となるようにして再度アクセスしてみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256200/686d04b8-1622-bbb8-253d-ecbb46e71c48.png)
:::

以上、MulesoftでのAPIのデプロイについてでした。