Published on

Headstart デモ環境を構築する - Part 5 サンプルデータの準備

Authors

ミドルウェアが起動するようになったので、ミドルウェア経由で Headstart のデモ環境を立ち上げるために必要なデータを揃えていきます。まず最初にサンプルのデータが含まれているマーケットプレースを作成し、そこに初期データを入れていきます。今回は日本のデータセンターを使うための手順も少し入ってきますので、海外のデータセンターを利用する際にはその点は読み替えて進めてください。

Seeding コマンド

サンプルのデータをインポートするツールとして、ordercloud-seed というリポジトリでデータおよびツールに関して紹介をしています。

このコマンドをインストールするのは非常に簡単で、以下のコマンドでインストールが完了となります。

npm i @ordercloud/seeding -g

macOS の場合は sudo を組み合わせることでコマンドをローカルで利用できるようになります。インストールが完了できているかの確認としては、以下のコマンドを実行してヘルプが表示されるか確認をしてください。

OrderCloud

また上記のリポジトリにはサンプルの yml ファイルも配置されており、コマンドでそのファイルを指定することでリポジトリのデータを利用して展開することが可能です。

今回は日本のデータセンターを指定してデータをインポートするため、以下のコマンドを実行します。-u および -p は以前に作成をした Ordercloud ポータルのアカウントを指定します。

seeding seed Simple-B2C -n='Headstart Japan' -u=username -p=password -r=jpn

実行をすると、以下のようにデータが作成されていくのがわかります。

OrderCloud

OrderCloud ポータルで確認

コマンドを実行したあと、実際に OrderCloud ポータルにマーケットプレースが作成されているか確認をします。

OrderCloud

コマンドで指定をした名前の Marketplaces が作成されており、また Marketplace ID も同じものが作成されているのがわかります。対象となる Marketplace をクリックすると、OrderCloud API Instance に sandbox のための URL が表示されています。

OrderCloud

Azure App configuration の更新

今回作成された Marketplace の情報を反映させます。直接 Azure ポータルで対象となる値を編集するのもよし、プロジェクトに含まれている json ファイルに値を入れてインポートし直すのもよし、です。ここでは json のファイルを更新して、インポートし直します。

変更項目としては、以下の 4 つの項目を設定します。

  "OrderCloudSettings:MiddlewareClientID": "",
  "OrderCloudSettings:MiddlewareClientSecret": "",
  "OrderCloudSettings:MarketplaceID": "",
  "OrderCloudSettings:MarketplaceName": "",
  "OrderCloudSettings:ClientIDsWithAPIAccess": "",

MiddlewareClientID キーに関しては、OrderCloud の管理画面の左側に表示されている API Console をクリックして、作成をしたマーケットプレースの API Clients の項目を選択すると確認することができます。

OrderCloud

MiddlewareClientSecret の項目は Middleware Integrations の項目を開くと Client Secret が用意されています。この項目を指定してください。

OrderCloud

ClientIDsWithAPIAccess の項目は Postman で初期データを投入した後に確認をするためここではスキップします。

今回は以下のように変更しました。

  "OrderCloudSettings:MiddlewareClientID": "149A56B4-4561-4187-A764-E81E8FD098F9",
  "OrderCloudSettings:MiddlewareClientSecret": "Kqd8OoIxp0j0LB1u2s2RviXnEy0357Exq3ibm9qTJdUK8SOJFqgQtyDaXoV0",
  "OrderCloudSettings:MarketplaceID": "qopHVYFrBtpnrwxE",
  "OrderCloudSettings:MarketplaceName": "Headstart Japan",

この機会に、Middleware の URL も入れておきます。Step 3 Azure の環境を準備する(その1) で作成をした Web アプリのテストスロットの URL を入れておきます。

  "EnvironmentSettings:MiddlewareBaseUrl": "https://headstart-middleware-test.azurewebsites.net",

追加で、WebhookHashKey に関しても指定しておきます。今回はデモなので以下のように設定をしておきました。

  "OrderCloudSettings:WebhookHashKey": "demo-headstart",

データセンター指定の変更

上記の変更をしているのと併せて、API サーバーの指定をしている URL が直前の項目として用意されています。

  "OrderCloudSettings:ApiUrl": "https://sandboxapi.ordercloud.io",

このサーバーは北米の OrderCloud の sandbox サーバーとなっているため、今回日本のデータセンターにしたため、変更をする必要があります。URL は Marketplace ID が表示されていた画面に含まれていいます。変更の後の値は以下のように異なります。

  "OrderCloudSettings:ApiUrl": "https://japaneast-sandbox.ordercloud.io",

ミドルウェアのソース内の変更

注意: この項目は最新版では不要となっています。

ミドルウェアはコードの中にこの URL が記載されています。対象となるファイルは以下のファイルです。

  • src/Middleware/src/Headstart.Common/Models/Misc/EnvironmentSeed.cs

以下のように sandbox のサーバーの URL を変更してください。

OrderCloud

ファイルを変更したあとは、改めて Azure App Configuration にインポートをして、設定が反映されているかを確認してください。

OrderCloud

SDK のソース内の変更

SDK が利用しているファイルにも URL が記載されているため、Sandbox の URL を変更してください。

  • e2e/helpers/test-setup.ts

のファイルに記載されている URL を https://japaneast-sandbox.ordercloud.io に書き換えます。

初期設定の作成

OrderCloud に Marketplace の設定ができたところで、初期に必要となるデータをインポートしていきます。この手順は Postman を利用します。

まず、ミドルウェアをローカルで立ち上げて、https://localhost:5001 にアクセスして参照できることを確認してください。

続いて、Postman を起動します。まず最初に https://localhost:5001/seed に対して Post をする処理を作成します。Postman をインストールしてすぐの場合、SSL での投稿に関して証明書のチェックをするようになっているため、その項目はローカル環境で実施するためオフにする必要があります。

投稿をするための Body のデータは以下の URL で紹介されているデータを利用します。

{
  "Portal": {
    "Username": "",
    "Password": ""
  },
  "Marketplace": {
    "Environment": "sandbox",
    "Region": "Us-West",
    "ID": "",
    "Name": "",
    "InitialAdmin": {
      "Username": "",
      "Password": ""
    },
    "EnableAnonymousShopping": true,
    "AnonymousShoppingBuyerID": "",
    "MiddlewareBaseUrl": "",
    "WebhookHashKey": "",
    "Suppliers": [],
    "Buyers": []
  }
}

各項目には、以下のデータを設定してください。

項目入力
Portal - Usernameordercloud.io のログイン名username
Portal - Passwordordercloud.io のパスワードpassword
Environmentsandbox
RegionJapan-East
IDordercloud.io で作成している Marketplace ID
Nameordercloud.io で作成している Marketplace NameHeadstart Japan
InitialAdmin - Username初期管理者のユーザー名demoadmin
InitialAdmin - Password初期管理者のパスワードSitecor3DeM0!
EnableAnonymousShopping匿名の購買に対応true
AnonymousShoppingBuyerID空欄のまま
MiddlewareBaseUrlMiddleware の URLhttps://localhost:5001/
WebhookHashKeyWebHook のキーdemo-Headstart

追記: 2022 年 12 月にストレージに対する接続文字列が不要になっているのを確認しました。

OrderCloud

実行前に、以下の項目を確認しておきます。ストレージに関しては以下のように空っぽの状態です。

OrderCloud

この状態で Postman でミドルウェアに対して Seed のデータを送ります。しばらくすると、結果の画面に Success! のメッセージが表示されます。

OrderCloud

ストレージを参照しにいくと、ngx-translate のフォルダが増えていることがわかります。

OrderCloud

CosmosDB にもコンテナが作成されています。

OrderCloud

なお設定として以下の項目が空欄になっています。

  "OrderCloudSettings:ClientIDsWithAPIAccess": "",

この項目には、Postman で取得した Seller ID と新しく作成された Default HeadStart Buyer UI LOCAL の ID を , で区切る様な形で記載します。

  "OrderCloudSettings:ClientIDsWithAPIAccess": "BA360C39-1E4B-42A8-9718-E0D613283B1D,19B62B9C-A965-4BF1-BDA7-A499B872E5C8",

この段階で OrderCloud のサンプルのデータの準備、および次のステップを進めるための準備ができたことになります。

まとめ

日本のデータセンターにサンプルのデータを作成し、またミドルウェアを通じて初期のデータ(管理者アカウントの作成)なども実現できました。続いてローカルの環境で buyer のアプリ、seller のアプリを順に動かしていきます。