ネームスペースの作成
EMQXでは、ネームスペースを作成する方法として明示的作成と自動作成の2種類があります。これらの方法を使い分けることで、ニーズに応じて柔軟にネームスペースを作成できます。
- 明示的作成は、厳密に管理された環境に適しています。
- 自動作成は、手動操作を減らして動的かつ大規模なデプロイメントに適しています。
EMQX 6.3.0以降、multi_tenancy.deny_namespacesにリストされている名前は、いずれの作成方法でも使用できません。デフォルトリストおよび設定方法については、Denied Namespace Namesを参照してください。
ネームスペースを明示的に作成する
ネームスペースは、ダッシュボードまたはREST APIを通じて手動で作成できます。明示的に作成されたネームスペースは、直接管理・編集・削除が可能です。
ユースケース:どのネームスペースが存在するかを明確に管理し、細かく制御したい場合に推奨されます。
ダッシュボードでネームスペースを作成する
ダッシュボードでネームスペースを素早く作成する手順は以下の通りです。
- ダッシュボード左メニューの Management -> Namespace に移動します。
- Create をクリックし、表示される Create Namespace ダイアログでネームスペース名を入力します。他のオプションはデフォルトのままで構いません。最大セッション数やレート制限の設定詳細は、Configure and Manage Namespaces via Dashboardを参照してください。
- Create をクリックすると、新しく作成されたネームスペースがリストに表示されます。
REST APIでネームスペースを作成する
ネームスペース固有の設定を適用する前に、以下のAPIを使って明示的にネームスペースを作成する必要があります。
POST /mt/ns/<namespace><namespace>は作成したいネームスペースIDに置き換えてください。リクエストボディは不要です。
名前がmulti_tenancy.deny_namespacesに含まれている場合、EMQXはHTTP 400でリクエストを拒否します。
ネームスペースを自動で作成する
EMQXでは、クライアントが接続した際にネームスペースを自動的に作成することも可能です。
自動作成は直接client_attrs.tnsフィールドに基づくものではなく、Take Namespace From 設定に依存します。
クライアントが接続すると、EMQXは設定された Take Namespace From ルールに従ってクライアント接続メタデータからtns(テナントネームスペース)属性を導出します。導出された名前がmulti_tenancy.deny_namespacesに含まれている場合、EMQXはnot_authorizedで接続を拒否します。そうでなければ、自動作成が許可されており該当ネームスペースが存在しない場合に限り、EMQXが自動的にネームスペースを作成します。
典型的なユースケース:クライアント接続が信頼できるソースから発生し、ネームスペース識別子を接続メタデータから確実に導出できる場合や、多数のテナントや事業単位のために動的にネームスペースを作成する必要がある場合に適しています。
注意
自動作成されたネームスペースは読み取り専用であり、ダッシュボード上で編集できません。
これらのネームスペースの設定(セッション制限やレート制限など)も変更できません。自動作成はネームスペースソースルールに基づいて生成されるためです。
注意
自動ネームスペース作成は、multi_tenancy.allow_only_managed_namespaces = false の場合にのみ許可されます。
この設定がtrueの場合、明示的に作成されたネームスペースのみが許可され、自動作成は無効になります。
この動作はダッシュボードの Allow Only Explicitly Created Namespaces 設定からも制御可能です。