-
Notifications
You must be signed in to change notification settings - Fork 17
/
Arn.go
103 lines (87 loc) · 2.77 KB
/
Arn.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package awscdk
import (
_init_ "github.com/aws/aws-cdk-go/awscdk/v2/jsii"
_jsii_ "github.com/aws/jsii-runtime-go/runtime"
)
type Arn interface {
}
// The jsii proxy struct for Arn
type jsiiProxy_Arn struct {
_ byte // padding
}
// Extract the full resource name from an ARN.
//
// Necessary for resource names (paths) that may contain the separator, like
// `arn:aws:iam::111111111111:role/path/to/role/name`.
//
// Only works if we statically know the expected `resourceType` beforehand, since we're going
// to use that to split the string on ':<resourceType>/' (and take the right-hand side).
//
// We can't extract the 'resourceType' from the ARN at hand, because CloudFormation Expressions
// only allow literals in the 'separator' argument to `{ Fn::Split }`, and so it can't be
// `{ Fn::Select: [5, { Fn::Split: [':', ARN] }}`.
//
// Only necessary for ARN formats for which the type-name separator is `/`.
func Arn_ExtractResourceName(arn *string, resourceType *string) *string {
_init_.Initialize()
if err := validateArn_ExtractResourceNameParameters(arn, resourceType); err != nil {
panic(err)
}
var returns *string
_jsii_.StaticInvoke(
"aws-cdk-lib.Arn",
"extractResourceName",
[]interface{}{arn, resourceType},
&returns,
)
return returns
}
// Creates an ARN from components.
//
// If `partition`, `region` or `account` are not specified, the stack's
// partition, region and account will be used.
//
// If any component is the empty string, an empty string will be inserted
// into the generated ARN at the location that component corresponds to.
//
// The ARN will be formatted as follows:
//
// arn:{partition}:{service}:{region}:{account}:{resource}{sep}{resource-name}
//
// The required ARN pieces that are omitted will be taken from the stack that
// the 'scope' is attached to. If all ARN pieces are supplied, the supplied scope
// can be 'undefined'.
func Arn_Format(components *ArnComponents, stack Stack) *string {
_init_.Initialize()
if err := validateArn_FormatParameters(components); err != nil {
panic(err)
}
var returns *string
_jsii_.StaticInvoke(
"aws-cdk-lib.Arn",
"format",
[]interface{}{components, stack},
&returns,
)
return returns
}
// Splits the provided ARN into its components.
//
// Works both if 'arn' is a string like 'arn:aws:s3:::bucket',
// and a Token representing a dynamic CloudFormation expression
// (in which case the returned components will also be dynamic CloudFormation expressions,
// encoded as Tokens).
func Arn_Split(arn *string, arnFormat ArnFormat) *ArnComponents {
_init_.Initialize()
if err := validateArn_SplitParameters(arn, arnFormat); err != nil {
panic(err)
}
var returns *ArnComponents
_jsii_.StaticInvoke(
"aws-cdk-lib.Arn",
"split",
[]interface{}{arn, arnFormat},
&returns,
)
return returns
}