package arn
import (
)
type OutpostARN interface {
Resource
GetOutpostID() string
}
func ( arn.ARN, []string) (OutpostARN, error) {
if len(.Region) == 0 {
return nil, InvalidARNError{ARN: , Reason: "region not set"}
}
if isFIPS(.Region) {
return nil, InvalidARNError{ARN: , Reason: "FIPS region not allowed in ARN"}
}
if len(.AccountID) == 0 {
return nil, InvalidARNError{ARN: , Reason: "account-id not set"}
}
if len() == 0 || len(strings.TrimSpace([0])) == 0 {
return nil, InvalidARNError{ARN: , Reason: "outpost resource-id not set"}
}
if len() < 3 {
return nil, InvalidARNError{
ARN: , Reason: "incomplete outpost resource type. Expected bucket or access-point resource to be present",
}
}
:= strings.TrimSpace([0])
switch [1] {
case "accesspoint":
, := ParseAccessPointResource(, [2:])
if != nil {
return OutpostAccessPointARN{},
}
return OutpostAccessPointARN{
AccessPointARN: ,
OutpostID: ,
}, nil
case "bucket":
, := parseBucketResource(, [2:])
if != nil {
return nil,
}
return OutpostBucketARN{
ARN: ,
BucketName: ,
OutpostID: ,
}, nil
default:
return nil, InvalidARNError{ARN: , Reason: "unknown resource set for outpost ARN"}
}
}
type OutpostAccessPointARN struct {
AccessPointARN
OutpostID string
}
func ( OutpostAccessPointARN) () string {
return .OutpostID
}
type OutpostBucketARN struct {
arn.ARN
BucketName string
OutpostID string
}
func ( OutpostBucketARN) () string {
return .OutpostID
}
func ( OutpostBucketARN) () arn.ARN {
return .ARN
}
func ( arn.ARN, []string) ( string, error) {
if len() == 0 {
return , InvalidARNError{ARN: , Reason: "bucket resource-id not set"}
}
if len() > 1 {
return , InvalidARNError{ARN: , Reason: "sub resource not supported"}
}
= strings.TrimSpace([0])
if len() == 0 {
return , InvalidARNError{ARN: , Reason: "bucket resource-id not set"}
}
return ,
}