FRN 仕様¶
FlexGalaxy Resource Name (FRN) は、すべての DotID サービスで使用される汎用的な階層型リソース識別子です。AWS ARN をモデルとしています。
正規フォーマット¶
frn:{account-id}:{service}:{resource-path}
コロン区切りの 4 つのセグメント:
位置 |
セグメント |
使用可能な文字 |
例 |
|---|---|---|---|
0 |
prefix |
リテラル |
|
1 |
account-id |
|
|
2 |
service |
|
|
3 |
resource-path |
|
|
完全な例:
frn:acc-xxxxxxxxxxxx:devices:device/42
ワイルドカード¶
ワイルドカードは ポリシーリソースパターン でサポートされています(リクエスト FRN では使用不可)。
セグメント 1--2(account-id、service)¶
* はその位置の任意の単一値に一致します。
frn:*:devices:device/42
─── match any account-id
セグメント 3(resource-path)¶
*はちょうど 1 つ のパスコンポーネントに一致します。**は 0 個以上 のパスコンポーネントに一致します(glob スタイル)。
frn:*:devices:device/* ← matches device/42, device/abc
frn:*:devices:device/** ← matches device/, device/42, device/a/b
frn:*:devices:** ← matches any resource path
マッチングルール¶
マッチングは FrnMatcher.matches(pattern, target) によって実行されます:
セグメント 1--2 は個別に比較されます。パターンセグメントが
"*"の場合は任意のターゲット値に一致し、それ以外の場合は文字列の完全一致で比較されます。セグメント 3(resource-path) は
/で分割され、コンポーネントごとに照合されます:*はちょうど 1 つのコンポーネントに一致します。**は残りの 0 個以上のコンポーネントに一致します(貪欲マッチ)。その他の値は完全一致が必要です。
例¶
パターン |
ターゲット |
結果 |
|---|---|---|
|
|
MATCH |
|
|
NO MATCH |
|
|
MATCH |
|
|
MATCH |
|
|
MATCH |
|
|
NO MATCH |
バリデーション¶
文字列が有効な FRN であるための必要十分条件は以下のとおりです:
null または空白でないこと。
コロン区切りでちょうど 4 つの部分に分割されること。
パート 0 がリテラル文字列
frnであること。パート 1--2 がそれぞれ空でなく、
^[a-zA-Z0-9_.*-]+$に一致すること。パート 3 が空でなく、
^[a-zA-Z0-9_./*-]+$に一致すること。