FRN 规范¶
FlexGalaxy Resource Name (FRN) 是在所有 DotID 服务中使用的通用分层资源标识符。它以 AWS ARN 为原型设计。
规范格式¶
frn:{account-id}:{service}:{resource-path}
四个以冒号分隔的段:
位置 |
段 |
允许的字符 |
示例 |
|---|---|---|---|
0 |
前缀 |
字面量 |
|
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)¶
*精确匹配 一个 路径组件。**匹配 零个或多个 路径组件(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) 按
/分割,逐组件匹配:*精确匹配一个组件。**匹配零个或多个剩余组件(贪婪匹配)。其他值需要精确匹配。
示例¶
模式 |
目标 |
结果 |
|---|---|---|
|
|
匹配 |
|
|
不匹配 |
|
|
匹配 |
|
|
匹配 |
|
|
匹配 |
|
|
不匹配 |
验证¶
当且仅当满足以下条件时,字符串才是有效的 FRN:
不为 null 且不为空白。
以冒号分隔后恰好为 4 个部分。
第 0 部分是字面量字符串
frn。第 1--2 部分均非空,且匹配
^[a-zA-Z0-9_.*-]+$。第 3 部分非空,且匹配
^[a-zA-Z0-9_./*-]+$。