-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathAwsCustomResource.go
More file actions
257 lines (224 loc) · 7.13 KB
/
AwsCustomResource.go
File metadata and controls
257 lines (224 loc) · 7.13 KB
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
package customresources
import (
_init_ "github.com/aws/aws-cdk-go/awscdk/v2/jsii"
_jsii_ "github.com/aws/jsii-runtime-go/runtime"
"github.com/aws/aws-cdk-go/awscdk/v2"
"github.com/aws/aws-cdk-go/awscdk/v2/awsiam"
"github.com/aws/aws-cdk-go/awscdk/v2/customresources/internal"
"github.com/aws/constructs-go/constructs/v10"
)
// Defines a custom resource that is materialized using specific AWS API calls.
//
// These calls are created using
// a singleton Lambda function.
//
// Use this to bridge any gap that might exist in the CloudFormation Coverage.
// You can specify exactly which calls are invoked for the 'CREATE', 'UPDATE' and 'DELETE' life cycle events.
//
// Example:
// crossAccountRoleArn := "arn:aws:iam::OTHERACCOUNT:role/CrossAccountRoleName" // arn of role deployed in separate account
//
// callRegion := "us-west-1" // sdk call to be made in specified region (optional)
//
// // sdk call to be made in specified region (optional)
// cr.NewAwsCustomResource(this, jsii.String("CrossAccount"), &AwsCustomResourceProps{
// OnCreate: &AwsSdkCall{
// AssumedRoleArn: crossAccountRoleArn,
// Region: callRegion,
// // optional
// Service: jsii.String("sts"),
// Action: jsii.String("GetCallerIdentity"),
// PhysicalResourceId: cr.PhysicalResourceId_Of(jsii.String("id")),
// },
// Policy: cr.AwsCustomResourcePolicy_FromStatements([]PolicyStatement{
// iam.PolicyStatement_FromJson(map[string]*string{
// "Effect": jsii.String("Allow"),
// "Action": jsii.String("sts:AssumeRole"),
// "Resource": crossAccountRoleArn,
// }),
// }),
// })
//
type AwsCustomResource interface {
constructs.Construct
awsiam.IGrantable
// The principal to grant permissions to.
GrantPrincipal() awsiam.IPrincipal
// The tree node.
Node() constructs.Node
// Returns response data for the AWS SDK call as string.
//
// Example for S3 / listBucket : 'Buckets.0.Name'
//
// Note that you cannot use this method if `ignoreErrorCodesMatching`
// is configured for any of the SDK calls. This is because in such a case,
// the response data might not exist, and will cause a CloudFormation deploy time error.
GetResponseField(dataPath *string) *string
// Returns response data for the AWS SDK call.
//
// Example for S3 / listBucket : 'Buckets.0.Name'
//
// Use `Token.asXxx` to encode the returned `Reference` as a specific type or
// use the convenience `getDataString` for string attributes.
//
// Note that you cannot use this method if `ignoreErrorCodesMatching`
// is configured for any of the SDK calls. This is because in such a case,
// the response data might not exist, and will cause a CloudFormation deploy time error.
GetResponseFieldReference(dataPath *string) awscdk.Reference
// Returns a string representation of this construct.
ToString() *string
// Applies one or more mixins to this construct.
//
// Mixins are applied in order. The list of constructs is captured at the
// start of the call, so constructs added by a mixin will not be visited.
// Use multiple `with()` calls if subsequent mixins should apply to added
// constructs.
//
// Returns: This construct for chaining.
With(mixins ...constructs.IMixin) constructs.IConstruct
}
// The jsii proxy struct for AwsCustomResource
type jsiiProxy_AwsCustomResource struct {
internal.Type__constructsConstruct
internal.Type__awsiamIGrantable
}
func (j *jsiiProxy_AwsCustomResource) GrantPrincipal() awsiam.IPrincipal {
var returns awsiam.IPrincipal
_jsii_.Get(
j,
"grantPrincipal",
&returns,
)
return returns
}
func (j *jsiiProxy_AwsCustomResource) Node() constructs.Node {
var returns constructs.Node
_jsii_.Get(
j,
"node",
&returns,
)
return returns
}
func NewAwsCustomResource(scope constructs.Construct, id *string, props *AwsCustomResourceProps) AwsCustomResource {
_init_.Initialize()
if err := validateNewAwsCustomResourceParameters(scope, id, props); err != nil {
panic(err)
}
j := jsiiProxy_AwsCustomResource{}
_jsii_.Create(
"aws-cdk-lib.custom_resources.AwsCustomResource",
[]interface{}{scope, id, props},
&j,
)
return &j
}
func NewAwsCustomResource_Override(a AwsCustomResource, scope constructs.Construct, id *string, props *AwsCustomResourceProps) {
_init_.Initialize()
_jsii_.Create(
"aws-cdk-lib.custom_resources.AwsCustomResource",
[]interface{}{scope, id, props},
a,
)
}
// Checks if `x` is a construct.
//
// Use this method instead of `instanceof` to properly detect `Construct`
// instances, even when the construct library is symlinked.
//
// Explanation: in JavaScript, multiple copies of the `constructs` library on
// disk are seen as independent, completely different libraries. As a
// consequence, the class `Construct` in each copy of the `constructs` library
// is seen as a different class, and an instance of one class will not test as
// `instanceof` the other class. `npm install` will not create installations
// like this, but users may manually symlink construct libraries together or
// use a monorepo tool: in those cases, multiple copies of the `constructs`
// library can be accidentally installed, and `instanceof` will behave
// unpredictably. It is safest to avoid using `instanceof`, and using
// this type-testing method instead.
//
// Returns: true if `x` is an object created from a class which extends `Construct`.
func AwsCustomResource_IsConstruct(x interface{}) *bool {
_init_.Initialize()
if err := validateAwsCustomResource_IsConstructParameters(x); err != nil {
panic(err)
}
var returns *bool
_jsii_.StaticInvoke(
"aws-cdk-lib.custom_resources.AwsCustomResource",
"isConstruct",
[]interface{}{x},
&returns,
)
return returns
}
func AwsCustomResource_PROPERTY_INJECTION_ID() *string {
_init_.Initialize()
var returns *string
_jsii_.StaticGet(
"aws-cdk-lib.custom_resources.AwsCustomResource",
"PROPERTY_INJECTION_ID",
&returns,
)
return returns
}
func AwsCustomResource_PROVIDER_FUNCTION_UUID() *string {
_init_.Initialize()
var returns *string
_jsii_.StaticGet(
"aws-cdk-lib.custom_resources.AwsCustomResource",
"PROVIDER_FUNCTION_UUID",
&returns,
)
return returns
}
func (a *jsiiProxy_AwsCustomResource) GetResponseField(dataPath *string) *string {
if err := a.validateGetResponseFieldParameters(dataPath); err != nil {
panic(err)
}
var returns *string
_jsii_.Invoke(
a,
"getResponseField",
[]interface{}{dataPath},
&returns,
)
return returns
}
func (a *jsiiProxy_AwsCustomResource) GetResponseFieldReference(dataPath *string) awscdk.Reference {
if err := a.validateGetResponseFieldReferenceParameters(dataPath); err != nil {
panic(err)
}
var returns awscdk.Reference
_jsii_.Invoke(
a,
"getResponseFieldReference",
[]interface{}{dataPath},
&returns,
)
return returns
}
func (a *jsiiProxy_AwsCustomResource) ToString() *string {
var returns *string
_jsii_.Invoke(
a,
"toString",
nil, // no parameters
&returns,
)
return returns
}
func (a *jsiiProxy_AwsCustomResource) With(mixins ...constructs.IMixin) constructs.IConstruct {
args := []interface{}{}
for _, a := range mixins {
args = append(args, a)
}
var returns constructs.IConstruct
_jsii_.Invoke(
a,
"with",
args,
&returns,
)
return returns
}