github.com/aavshr/aws-sdk-go@v1.41.3/internal/s3shared/arn/accesspoint_arn.go (about) 1 package arn 2 3 import ( 4 "strings" 5 6 "github.com/aavshr/aws-sdk-go/aws/arn" 7 ) 8 9 // AccessPointARN provides representation 10 type AccessPointARN struct { 11 arn.ARN 12 AccessPointName string 13 } 14 15 // GetARN returns the base ARN for the Access Point resource 16 func (a AccessPointARN) GetARN() arn.ARN { 17 return a.ARN 18 } 19 20 // ParseAccessPointResource attempts to parse the ARN's resource as an 21 // AccessPoint resource. 22 // 23 // Supported Access point resource format: 24 // - Access point format: arn:{partition}:s3:{region}:{accountId}:accesspoint/{accesspointName} 25 // - example: arn.aws.s3.us-west-2.012345678901:accesspoint/myaccesspoint 26 // 27 func ParseAccessPointResource(a arn.ARN, resParts []string) (AccessPointARN, error) { 28 if len(a.Region) == 0 { 29 return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "region not set"} 30 } 31 if len(a.AccountID) == 0 { 32 return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "account-id not set"} 33 } 34 if len(resParts) == 0 { 35 return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "resource-id not set"} 36 } 37 if len(resParts) > 1 { 38 return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "sub resource not supported"} 39 } 40 41 resID := resParts[0] 42 if len(strings.TrimSpace(resID)) == 0 { 43 return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "resource-id not set"} 44 } 45 46 return AccessPointARN{ 47 ARN: a, 48 AccessPointName: resID, 49 }, nil 50 }