package arn
import (
awsarn
)
const (
s3Namespace = "s3"
s3ObjectsLambdaNamespace = "s3-object-lambda"
s3OutpostsNamespace = "s3-outposts"
)
func ( awsarn.ARN) (arn.Resource, error) {
return arn.ParseResource(, accessPointResourceParser)
}
func ( awsarn.ARN) (arn.Resource, error) {
:= arn.SplitResource(.Resource)
switch [0] {
case "accesspoint":
switch .Service {
case s3Namespace:
return arn.ParseAccessPointResource(, [1:])
case s3ObjectsLambdaNamespace:
return parseS3ObjectLambdaAccessPointResource(, )
default:
return arn.AccessPointARN{}, arn.InvalidARNError{ARN: , Reason: fmt.Sprintf("service is not %s or %s", s3Namespace, s3ObjectsLambdaNamespace)}
}
case "outpost":
if .Service != s3OutpostsNamespace {
return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: , Reason: "service is not %s"}
}
return parseOutpostAccessPointResource(, [1:])
default:
return nil, arn.InvalidARNError{ARN: , Reason: "unknown resource type"}
}
}
func ( awsarn.ARN, []string) (arn.OutpostAccessPointARN, error) {
if .Service != "s3-outposts" {
return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: , Reason: "service is not s3-outposts"}
}
if len() == 0 {
return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: , Reason: "outpost resource-id not set"}
}
if len() < 3 {
return arn.OutpostAccessPointARN{}, arn.InvalidARNError{
ARN: , Reason: "access-point resource not set in Outpost ARN",
}
}
:= strings.TrimSpace([0])
if len() == 0 {
return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: , Reason: "outpost resource-id not set"}
}
var = arn.OutpostAccessPointARN{}
switch [1] {
case "accesspoint":
if len(.Region) == 0 {
return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: , Reason: "region is not set"}
}
, := arn.ParseAccessPointResource(, [2:])
if != nil {
return arn.OutpostAccessPointARN{},
}
.AccessPointARN =
default:
return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: , Reason: "access-point resource not set in Outpost ARN"}
}
.OutpostID =
return , nil
}
func ( awsarn.ARN, []string) (arn.S3ObjectLambdaAccessPointARN, error) {
if .Service != s3ObjectsLambdaNamespace {
return arn.S3ObjectLambdaAccessPointARN{}, arn.InvalidARNError{ARN: , Reason: fmt.Sprintf("service is not %s", s3ObjectsLambdaNamespace)}
}
if len(.Region) == 0 {
return arn.S3ObjectLambdaAccessPointARN{}, arn.InvalidARNError{ARN: , Reason: fmt.Sprintf("%s region not set", s3ObjectsLambdaNamespace)}
}
, := arn.ParseAccessPointResource(, [1:])
if != nil {
return arn.S3ObjectLambdaAccessPointARN{},
}
return arn.S3ObjectLambdaAccessPointARN{
AccessPointARN: ,
}, nil
}