我在 AWS 文檔中看到 ARN 格式是:arn:partition:service:region:account-id:resource-idarn:partition:service:region:account-id:resource-type/resource-idarn:partition:service:region:account-id:resource-type:resource-id我正在嘗試resource-id從 ARN 獲取。以下代碼有效,但丑陋...我正在尋找如何改進它:func GetResourceNameFromARN(roleARN string) string { if parsedARN, err := arn.Parse(roleARN); err == nil { return parsedARN.Resource } return ""}func extractResourceId(arn string) string { resource := GetResourceNameFromARN(arn) switch len(strings.Split(resource, "/")) { case 1: switch len(strings.Split(resource, ":")) { case 2: return strings.Split(resource, ":")[1] } case 2: return strings.Split(resource, "/")[1] } return resource}
1 回答

12345678_0001
TA貢獻1802條經驗 獲得超5個贊
我建議一個簡單的正則表達式:
package main
import (
"fmt"
"regexp"
)
func main() {
// Compile the expression once, usually at init time.
// Use raw strings to avoid having to quote the backslashes.
var validID = regexp.MustCompile(`[^:/]*$`)
fmt.Println(validID.FindString("arn:partition:service:region:account-id:resource-id"))
fmt.Println(validID.FindString("arn:partition:service:region:account-id:resource-type/resource-id"))
fmt.Println(validID.FindString("arn:partition:service:region:account-id:resource-type:resource-id"))
}
- 1 回答
- 0 關注
- 124 瀏覽
添加回答
舉報
0/150
提交
取消