@stacksjs/ts-cloud-aws-types 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/README.md +321 -0
- package/package.json +27 -0
- package/src/acm.ts +20 -0
- package/src/alb.ts +73 -0
- package/src/apigateway.ts +85 -0
- package/src/appsync.ts +246 -0
- package/src/athena.ts +102 -0
- package/src/autoscaling.ts +201 -0
- package/src/backup.ts +187 -0
- package/src/cloudwatch.ts +98 -0
- package/src/codedeploy.ts +132 -0
- package/src/cognito.ts +216 -0
- package/src/common.ts +20 -0
- package/src/connect.ts +243 -0
- package/src/dynamodb.ts +64 -0
- package/src/ec2.ts +171 -0
- package/src/ecr.ts +129 -0
- package/src/ecs.ts +129 -0
- package/src/efs.ts +57 -0
- package/src/elasticache.ts +92 -0
- package/src/eventbridge.ts +140 -0
- package/src/globalaccelerator.ts +57 -0
- package/src/glue.ts +241 -0
- package/src/iam.ts +142 -0
- package/src/index.ts +328 -0
- package/src/kinesis.ts +261 -0
- package/src/kms.ts +35 -0
- package/src/lambda.ts +42 -0
- package/src/opensearch.ts +147 -0
- package/src/pinpoint.ts +438 -0
- package/src/rds-proxy.ts +67 -0
- package/src/rds.ts +61 -0
- package/src/route53.ts +32 -0
- package/src/secrets-manager.ts +110 -0
- package/src/ses.ts +66 -0
- package/src/sns.ts +45 -0
- package/src/sqs.ts +54 -0
- package/src/ssm.ts +268 -0
- package/src/waf.ts +81 -0
- package/tsconfig.json +12 -0
package/src/pinpoint.ts
ADDED
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Pinpoint CloudFormation Types
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { ResourceBase, Tags } from './common'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Pinpoint Application
|
|
9
|
+
*/
|
|
10
|
+
export interface PinpointApp extends ResourceBase {
|
|
11
|
+
Type: 'AWS::Pinpoint::App'
|
|
12
|
+
Properties: {
|
|
13
|
+
Name: string
|
|
14
|
+
Tags?: Record<string, string>
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Pinpoint SMS Channel
|
|
20
|
+
*/
|
|
21
|
+
export interface PinpointSMSChannel extends ResourceBase {
|
|
22
|
+
Type: 'AWS::Pinpoint::SMSChannel'
|
|
23
|
+
Properties: {
|
|
24
|
+
ApplicationId: string
|
|
25
|
+
Enabled?: boolean
|
|
26
|
+
SenderId?: string
|
|
27
|
+
ShortCode?: string
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Pinpoint Email Channel
|
|
33
|
+
*/
|
|
34
|
+
export interface PinpointEmailChannel extends ResourceBase {
|
|
35
|
+
Type: 'AWS::Pinpoint::EmailChannel'
|
|
36
|
+
Properties: {
|
|
37
|
+
ApplicationId: string
|
|
38
|
+
FromAddress: string
|
|
39
|
+
Identity: string
|
|
40
|
+
ConfigurationSet?: string
|
|
41
|
+
Enabled?: boolean
|
|
42
|
+
RoleArn?: string
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Pinpoint Voice Channel
|
|
48
|
+
*/
|
|
49
|
+
export interface PinpointVoiceChannel extends ResourceBase {
|
|
50
|
+
Type: 'AWS::Pinpoint::VoiceChannel'
|
|
51
|
+
Properties: {
|
|
52
|
+
ApplicationId: string
|
|
53
|
+
Enabled?: boolean
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Pinpoint APNs Channel (Apple Push Notifications)
|
|
59
|
+
*/
|
|
60
|
+
export interface PinpointAPNsChannel extends ResourceBase {
|
|
61
|
+
Type: 'AWS::Pinpoint::APNsChannel'
|
|
62
|
+
Properties: {
|
|
63
|
+
ApplicationId: string
|
|
64
|
+
BundleId?: string
|
|
65
|
+
Certificate?: string
|
|
66
|
+
DefaultAuthenticationMethod?: string
|
|
67
|
+
Enabled?: boolean
|
|
68
|
+
PrivateKey?: string
|
|
69
|
+
TeamId?: string
|
|
70
|
+
TokenKey?: string
|
|
71
|
+
TokenKeyId?: string
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Pinpoint GCM Channel (Google Cloud Messaging / Firebase)
|
|
77
|
+
*/
|
|
78
|
+
export interface PinpointGCMChannel extends ResourceBase {
|
|
79
|
+
Type: 'AWS::Pinpoint::GCMChannel'
|
|
80
|
+
Properties: {
|
|
81
|
+
ApplicationId: string
|
|
82
|
+
ApiKey?: string
|
|
83
|
+
DefaultAuthenticationMethod?: string
|
|
84
|
+
Enabled?: boolean
|
|
85
|
+
ServiceJson?: string
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Pinpoint Baidu Channel
|
|
91
|
+
*/
|
|
92
|
+
export interface PinpointBaiduChannel extends ResourceBase {
|
|
93
|
+
Type: 'AWS::Pinpoint::BaiduChannel'
|
|
94
|
+
Properties: {
|
|
95
|
+
ApplicationId: string
|
|
96
|
+
ApiKey: string
|
|
97
|
+
SecretKey: string
|
|
98
|
+
Enabled?: boolean
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Pinpoint ADM Channel (Amazon Device Messaging)
|
|
104
|
+
*/
|
|
105
|
+
export interface PinpointADMChannel extends ResourceBase {
|
|
106
|
+
Type: 'AWS::Pinpoint::ADMChannel'
|
|
107
|
+
Properties: {
|
|
108
|
+
ApplicationId: string
|
|
109
|
+
ClientId: string
|
|
110
|
+
ClientSecret: string
|
|
111
|
+
Enabled?: boolean
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Pinpoint Campaign
|
|
117
|
+
*/
|
|
118
|
+
export interface PinpointCampaign extends ResourceBase {
|
|
119
|
+
Type: 'AWS::Pinpoint::Campaign'
|
|
120
|
+
Properties: {
|
|
121
|
+
ApplicationId: string
|
|
122
|
+
Name: string
|
|
123
|
+
SegmentId: string
|
|
124
|
+
MessageConfiguration: {
|
|
125
|
+
SMSMessage?: {
|
|
126
|
+
Body?: string
|
|
127
|
+
MessageType?: 'TRANSACTIONAL' | 'PROMOTIONAL'
|
|
128
|
+
OriginationNumber?: string
|
|
129
|
+
SenderId?: string
|
|
130
|
+
EntityId?: string
|
|
131
|
+
TemplateId?: string
|
|
132
|
+
}
|
|
133
|
+
EmailMessage?: {
|
|
134
|
+
Body?: string
|
|
135
|
+
FromAddress?: string
|
|
136
|
+
HtmlBody?: string
|
|
137
|
+
Title?: string
|
|
138
|
+
}
|
|
139
|
+
DefaultMessage?: {
|
|
140
|
+
Body?: string
|
|
141
|
+
Substitutions?: Record<string, string[]>
|
|
142
|
+
}
|
|
143
|
+
InAppMessage?: {
|
|
144
|
+
Content?: Array<{
|
|
145
|
+
BackgroundColor?: string
|
|
146
|
+
BodyConfig?: {
|
|
147
|
+
Alignment: 'LEFT' | 'CENTER' | 'RIGHT'
|
|
148
|
+
Body: string
|
|
149
|
+
TextColor: string
|
|
150
|
+
}
|
|
151
|
+
HeaderConfig?: {
|
|
152
|
+
Alignment: 'LEFT' | 'CENTER' | 'RIGHT'
|
|
153
|
+
Header: string
|
|
154
|
+
TextColor: string
|
|
155
|
+
}
|
|
156
|
+
ImageUrl?: string
|
|
157
|
+
PrimaryBtn?: {
|
|
158
|
+
DefaultConfig: {
|
|
159
|
+
BackgroundColor?: string
|
|
160
|
+
BorderRadius?: number
|
|
161
|
+
ButtonAction: 'LINK' | 'DEEP_LINK' | 'CLOSE'
|
|
162
|
+
Link?: string
|
|
163
|
+
Text: string
|
|
164
|
+
TextColor?: string
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
SecondaryBtn?: {
|
|
168
|
+
DefaultConfig: {
|
|
169
|
+
BackgroundColor?: string
|
|
170
|
+
BorderRadius?: number
|
|
171
|
+
ButtonAction: 'LINK' | 'DEEP_LINK' | 'CLOSE'
|
|
172
|
+
Link?: string
|
|
173
|
+
Text: string
|
|
174
|
+
TextColor?: string
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}>
|
|
178
|
+
Layout?: 'BOTTOM_BANNER' | 'TOP_BANNER' | 'OVERLAYS' | 'MOBILE_FEED' | 'MIDDLE_BANNER' | 'CAROUSEL'
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
Schedule: {
|
|
182
|
+
EndTime?: string
|
|
183
|
+
EventFilter?: {
|
|
184
|
+
Dimensions: {
|
|
185
|
+
Attributes?: Record<string, { AttributeType: string; Values: string[] }>
|
|
186
|
+
EventType?: { DimensionType: string; Values: string[] }
|
|
187
|
+
Metrics?: Record<string, { ComparisonOperator: string; Value: number }>
|
|
188
|
+
}
|
|
189
|
+
FilterType: 'SYSTEM' | 'ENDPOINT'
|
|
190
|
+
}
|
|
191
|
+
Frequency?: 'ONCE' | 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'EVENT' | 'IN_APP_EVENT'
|
|
192
|
+
IsLocalTime?: boolean
|
|
193
|
+
QuietTime?: { End: string; Start: string }
|
|
194
|
+
StartTime?: string
|
|
195
|
+
Timezone?: string
|
|
196
|
+
}
|
|
197
|
+
AdditionalTreatments?: Array<{
|
|
198
|
+
MessageConfiguration: any
|
|
199
|
+
Schedule: any
|
|
200
|
+
SizePercent: number
|
|
201
|
+
TreatmentDescription?: string
|
|
202
|
+
TreatmentName?: string
|
|
203
|
+
}>
|
|
204
|
+
CampaignHook?: {
|
|
205
|
+
LambdaFunctionName?: string
|
|
206
|
+
Mode?: 'DELIVERY' | 'FILTER'
|
|
207
|
+
WebUrl?: string
|
|
208
|
+
}
|
|
209
|
+
CustomDeliveryConfiguration?: {
|
|
210
|
+
DeliveryUri: string
|
|
211
|
+
EndpointTypes?: string[]
|
|
212
|
+
}
|
|
213
|
+
Description?: string
|
|
214
|
+
HoldoutPercent?: number
|
|
215
|
+
IsPaused?: boolean
|
|
216
|
+
Limits?: {
|
|
217
|
+
Daily?: number
|
|
218
|
+
MaximumDuration?: number
|
|
219
|
+
MessagesPerSecond?: number
|
|
220
|
+
Session?: number
|
|
221
|
+
Total?: number
|
|
222
|
+
}
|
|
223
|
+
Priority?: number
|
|
224
|
+
SegmentVersion?: number
|
|
225
|
+
Tags?: Record<string, string>
|
|
226
|
+
TemplateConfiguration?: {
|
|
227
|
+
EmailTemplate?: { Name?: string; Version?: string }
|
|
228
|
+
PushTemplate?: { Name?: string; Version?: string }
|
|
229
|
+
SMSTemplate?: { Name?: string; Version?: string }
|
|
230
|
+
VoiceTemplate?: { Name?: string; Version?: string }
|
|
231
|
+
}
|
|
232
|
+
TreatmentDescription?: string
|
|
233
|
+
TreatmentName?: string
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Pinpoint Segment
|
|
239
|
+
*/
|
|
240
|
+
export interface PinpointSegment extends ResourceBase {
|
|
241
|
+
Type: 'AWS::Pinpoint::Segment'
|
|
242
|
+
Properties: {
|
|
243
|
+
ApplicationId: string
|
|
244
|
+
Name: string
|
|
245
|
+
Dimensions?: {
|
|
246
|
+
Attributes?: Record<string, { AttributeType: string; Values: string[] }>
|
|
247
|
+
Behavior?: {
|
|
248
|
+
Recency?: {
|
|
249
|
+
Duration: 'HR_24' | 'DAY_7' | 'DAY_14' | 'DAY_30'
|
|
250
|
+
RecencyType: 'ACTIVE' | 'INACTIVE'
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
Demographic?: {
|
|
254
|
+
AppVersion?: { DimensionType: string; Values: string[] }
|
|
255
|
+
Channel?: { DimensionType: string; Values: string[] }
|
|
256
|
+
DeviceType?: { DimensionType: string; Values: string[] }
|
|
257
|
+
Make?: { DimensionType: string; Values: string[] }
|
|
258
|
+
Model?: { DimensionType: string; Values: string[] }
|
|
259
|
+
Platform?: { DimensionType: string; Values: string[] }
|
|
260
|
+
}
|
|
261
|
+
Location?: {
|
|
262
|
+
Country?: { DimensionType: string; Values: string[] }
|
|
263
|
+
GPSPoint?: {
|
|
264
|
+
Coordinates: { Latitude: number; Longitude: number }
|
|
265
|
+
RangeInKilometers: number
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
Metrics?: Record<string, { ComparisonOperator: string; Value: number }>
|
|
269
|
+
UserAttributes?: Record<string, { AttributeType: string; Values: string[] }>
|
|
270
|
+
}
|
|
271
|
+
SegmentGroups?: {
|
|
272
|
+
Groups?: Array<{
|
|
273
|
+
Dimensions?: any[]
|
|
274
|
+
SourceSegments?: Array<{ Id: string; Version?: number }>
|
|
275
|
+
SourceType?: 'ALL' | 'ANY' | 'NONE'
|
|
276
|
+
Type?: 'ALL' | 'ANY' | 'NONE'
|
|
277
|
+
}>
|
|
278
|
+
Include?: 'ALL' | 'ANY' | 'NONE'
|
|
279
|
+
}
|
|
280
|
+
Tags?: Record<string, string>
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Pinpoint Email Template
|
|
286
|
+
*/
|
|
287
|
+
export interface PinpointEmailTemplate extends ResourceBase {
|
|
288
|
+
Type: 'AWS::Pinpoint::EmailTemplate'
|
|
289
|
+
Properties: {
|
|
290
|
+
TemplateName: string
|
|
291
|
+
Subject: string
|
|
292
|
+
DefaultSubstitutions?: string
|
|
293
|
+
HtmlPart?: string
|
|
294
|
+
Tags?: Record<string, string>
|
|
295
|
+
TemplateDescription?: string
|
|
296
|
+
TextPart?: string
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Pinpoint SMS Template
|
|
302
|
+
*/
|
|
303
|
+
export interface PinpointSmsTemplate extends ResourceBase {
|
|
304
|
+
Type: 'AWS::Pinpoint::SmsTemplate'
|
|
305
|
+
Properties: {
|
|
306
|
+
TemplateName: string
|
|
307
|
+
Body: string
|
|
308
|
+
DefaultSubstitutions?: string
|
|
309
|
+
Tags?: Record<string, string>
|
|
310
|
+
TemplateDescription?: string
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Pinpoint Push Template
|
|
316
|
+
*/
|
|
317
|
+
export interface PinpointPushTemplate extends ResourceBase {
|
|
318
|
+
Type: 'AWS::Pinpoint::PushTemplate'
|
|
319
|
+
Properties: {
|
|
320
|
+
TemplateName: string
|
|
321
|
+
ADM?: {
|
|
322
|
+
Action?: 'OPEN_APP' | 'DEEP_LINK' | 'URL'
|
|
323
|
+
Body?: string
|
|
324
|
+
ImageIconUrl?: string
|
|
325
|
+
ImageUrl?: string
|
|
326
|
+
SmallImageIconUrl?: string
|
|
327
|
+
Sound?: string
|
|
328
|
+
Title?: string
|
|
329
|
+
Url?: string
|
|
330
|
+
}
|
|
331
|
+
APNS?: {
|
|
332
|
+
Action?: 'OPEN_APP' | 'DEEP_LINK' | 'URL'
|
|
333
|
+
Body?: string
|
|
334
|
+
MediaUrl?: string
|
|
335
|
+
Sound?: string
|
|
336
|
+
Title?: string
|
|
337
|
+
Url?: string
|
|
338
|
+
}
|
|
339
|
+
Baidu?: {
|
|
340
|
+
Action?: 'OPEN_APP' | 'DEEP_LINK' | 'URL'
|
|
341
|
+
Body?: string
|
|
342
|
+
ImageIconUrl?: string
|
|
343
|
+
ImageUrl?: string
|
|
344
|
+
SmallImageIconUrl?: string
|
|
345
|
+
Sound?: string
|
|
346
|
+
Title?: string
|
|
347
|
+
Url?: string
|
|
348
|
+
}
|
|
349
|
+
Default?: {
|
|
350
|
+
Action?: 'OPEN_APP' | 'DEEP_LINK' | 'URL'
|
|
351
|
+
Body?: string
|
|
352
|
+
Sound?: string
|
|
353
|
+
Title?: string
|
|
354
|
+
Url?: string
|
|
355
|
+
}
|
|
356
|
+
DefaultSubstitutions?: string
|
|
357
|
+
GCM?: {
|
|
358
|
+
Action?: 'OPEN_APP' | 'DEEP_LINK' | 'URL'
|
|
359
|
+
Body?: string
|
|
360
|
+
ImageIconUrl?: string
|
|
361
|
+
ImageUrl?: string
|
|
362
|
+
SmallImageIconUrl?: string
|
|
363
|
+
Sound?: string
|
|
364
|
+
Title?: string
|
|
365
|
+
Url?: string
|
|
366
|
+
}
|
|
367
|
+
Tags?: Record<string, string>
|
|
368
|
+
TemplateDescription?: string
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Pinpoint In-App Template
|
|
374
|
+
*/
|
|
375
|
+
export interface PinpointInAppTemplate extends ResourceBase {
|
|
376
|
+
Type: 'AWS::Pinpoint::InAppTemplate'
|
|
377
|
+
Properties: {
|
|
378
|
+
TemplateName: string
|
|
379
|
+
Content?: Array<{
|
|
380
|
+
BackgroundColor?: string
|
|
381
|
+
BodyConfig?: {
|
|
382
|
+
Alignment: 'LEFT' | 'CENTER' | 'RIGHT'
|
|
383
|
+
Body: string
|
|
384
|
+
TextColor: string
|
|
385
|
+
}
|
|
386
|
+
HeaderConfig?: {
|
|
387
|
+
Alignment: 'LEFT' | 'CENTER' | 'RIGHT'
|
|
388
|
+
Header: string
|
|
389
|
+
TextColor: string
|
|
390
|
+
}
|
|
391
|
+
ImageUrl?: string
|
|
392
|
+
PrimaryBtn?: any
|
|
393
|
+
SecondaryBtn?: any
|
|
394
|
+
}>
|
|
395
|
+
CustomConfig?: Record<string, string>
|
|
396
|
+
Layout?: 'BOTTOM_BANNER' | 'TOP_BANNER' | 'OVERLAYS' | 'MOBILE_FEED' | 'MIDDLE_BANNER' | 'CAROUSEL'
|
|
397
|
+
Tags?: Record<string, string>
|
|
398
|
+
TemplateDescription?: string
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* Pinpoint Event Stream
|
|
404
|
+
*/
|
|
405
|
+
export interface PinpointEventStream extends ResourceBase {
|
|
406
|
+
Type: 'AWS::Pinpoint::EventStream'
|
|
407
|
+
Properties: {
|
|
408
|
+
ApplicationId: string
|
|
409
|
+
DestinationStreamArn: string
|
|
410
|
+
RoleArn: string
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Pinpoint Application Settings
|
|
416
|
+
*/
|
|
417
|
+
export interface PinpointApplicationSettings extends ResourceBase {
|
|
418
|
+
Type: 'AWS::Pinpoint::ApplicationSettings'
|
|
419
|
+
Properties: {
|
|
420
|
+
ApplicationId: string
|
|
421
|
+
CampaignHook?: {
|
|
422
|
+
LambdaFunctionName?: string
|
|
423
|
+
Mode?: 'DELIVERY' | 'FILTER'
|
|
424
|
+
WebUrl?: string
|
|
425
|
+
}
|
|
426
|
+
CloudWatchMetricsEnabled?: boolean
|
|
427
|
+
Limits?: {
|
|
428
|
+
Daily?: number
|
|
429
|
+
MaximumDuration?: number
|
|
430
|
+
MessagesPerSecond?: number
|
|
431
|
+
Total?: number
|
|
432
|
+
}
|
|
433
|
+
QuietTime?: {
|
|
434
|
+
End: string
|
|
435
|
+
Start: string
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
package/src/rds-proxy.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS RDS Proxy Types
|
|
3
|
+
* CloudFormation resource types for RDS Proxy (connection pooling)
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { Tag } from './common'
|
|
7
|
+
|
|
8
|
+
export interface DBProxy {
|
|
9
|
+
Type: 'AWS::RDS::DBProxy'
|
|
10
|
+
Properties: {
|
|
11
|
+
DBProxyName: string
|
|
12
|
+
EngineFamily: 'MYSQL' | 'POSTGRESQL' | 'SQLSERVER'
|
|
13
|
+
Auth: Array<{
|
|
14
|
+
AuthScheme?: 'SECRETS'
|
|
15
|
+
ClientPasswordAuthType?: 'MYSQL_NATIVE_PASSWORD' | 'POSTGRES_SCRAM_SHA_256' | 'POSTGRES_MD5' | 'SQL_SERVER_AUTHENTICATION'
|
|
16
|
+
Description?: string
|
|
17
|
+
IAMAuth?: 'DISABLED' | 'REQUIRED' | 'ENABLED'
|
|
18
|
+
SecretArn?: string | { Ref: string }
|
|
19
|
+
}>
|
|
20
|
+
RoleArn: string | { Ref: string }
|
|
21
|
+
VpcSubnetIds: Array<string | { Ref: string }>
|
|
22
|
+
|
|
23
|
+
// Optional configurations
|
|
24
|
+
VpcSecurityGroupIds?: Array<string | { Ref: string }>
|
|
25
|
+
RequireTLS?: boolean
|
|
26
|
+
IdleClientTimeout?: number // in seconds (default: 1800, max: 28800)
|
|
27
|
+
DebugLogging?: boolean
|
|
28
|
+
|
|
29
|
+
Tags?: Tag[]
|
|
30
|
+
}
|
|
31
|
+
DeletionPolicy?: 'Delete' | 'Retain'
|
|
32
|
+
UpdateReplacePolicy?: 'Delete' | 'Retain'
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface DBProxyTargetGroup {
|
|
36
|
+
Type: 'AWS::RDS::DBProxyTargetGroup'
|
|
37
|
+
Properties: {
|
|
38
|
+
DBProxyName: string | { Ref: string }
|
|
39
|
+
TargetGroupName: 'default' // Currently only 'default' is supported
|
|
40
|
+
DBInstanceIdentifiers?: Array<string | { Ref: string }>
|
|
41
|
+
DBClusterIdentifiers?: Array<string | { Ref: string }>
|
|
42
|
+
|
|
43
|
+
// Connection pool configuration
|
|
44
|
+
ConnectionPoolConfig?: {
|
|
45
|
+
MaxConnectionsPercent?: number // 1-100 (default: 100)
|
|
46
|
+
MaxIdleConnectionsPercent?: number // 0-MaxConnectionsPercent
|
|
47
|
+
ConnectionBorrowTimeout?: number // in seconds (default: 120)
|
|
48
|
+
SessionPinningFilters?: Array<string> // e.g., ['EXCLUDE_VARIABLE_SETS']
|
|
49
|
+
InitQuery?: string
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
DependsOn?: string | string[]
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface DBProxyEndpoint {
|
|
56
|
+
Type: 'AWS::RDS::DBProxyEndpoint'
|
|
57
|
+
Properties: {
|
|
58
|
+
DBProxyName: string | { Ref: string }
|
|
59
|
+
DBProxyEndpointName: string
|
|
60
|
+
VpcSubnetIds: Array<string | { Ref: string }>
|
|
61
|
+
TargetRole?: 'READ_WRITE' | 'READ_ONLY'
|
|
62
|
+
VpcSecurityGroupIds?: Array<string | { Ref: string }>
|
|
63
|
+
|
|
64
|
+
Tags?: Tag[]
|
|
65
|
+
}
|
|
66
|
+
DependsOn?: string | string[]
|
|
67
|
+
}
|
package/src/rds.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { CloudFormationResource } from './index'
|
|
2
|
+
|
|
3
|
+
export interface RDSDBInstance extends CloudFormationResource {
|
|
4
|
+
Type: 'AWS::RDS::DBInstance'
|
|
5
|
+
Properties: {
|
|
6
|
+
DBInstanceIdentifier?: string
|
|
7
|
+
DBInstanceClass: string
|
|
8
|
+
Engine?: 'mysql' | 'postgres' | 'mariadb' | 'oracle-ee' | 'oracle-se2' | 'oracle-se1' | 'oracle-se' | 'sqlserver-ee' | 'sqlserver-se' | 'sqlserver-ex' | 'sqlserver-web'
|
|
9
|
+
SourceDBInstanceIdentifier?: string
|
|
10
|
+
EngineVersion?: string
|
|
11
|
+
MasterUsername?: string
|
|
12
|
+
MasterUserPassword?: string
|
|
13
|
+
AllocatedStorage?: number
|
|
14
|
+
StorageType?: 'gp2' | 'gp3' | 'io1' | 'io2' | 'standard'
|
|
15
|
+
StorageEncrypted?: boolean
|
|
16
|
+
KmsKeyId?: string
|
|
17
|
+
DBName?: string
|
|
18
|
+
DBSubnetGroupName?: string | { Ref: string }
|
|
19
|
+
VPCSecurityGroups?: string[]
|
|
20
|
+
PubliclyAccessible?: boolean
|
|
21
|
+
BackupRetentionPeriod?: number
|
|
22
|
+
PreferredBackupWindow?: string
|
|
23
|
+
PreferredMaintenanceWindow?: string
|
|
24
|
+
MultiAZ?: boolean
|
|
25
|
+
AutoMinorVersionUpgrade?: boolean
|
|
26
|
+
DeletionProtection?: boolean
|
|
27
|
+
EnableCloudwatchLogsExports?: string[]
|
|
28
|
+
DBParameterGroupName?: string | { Ref: string }
|
|
29
|
+
Tags?: Array<{
|
|
30
|
+
Key: string
|
|
31
|
+
Value: string
|
|
32
|
+
}>
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface RDSDBSubnetGroup extends CloudFormationResource {
|
|
37
|
+
Type: 'AWS::RDS::DBSubnetGroup'
|
|
38
|
+
Properties: {
|
|
39
|
+
DBSubnetGroupName?: string
|
|
40
|
+
DBSubnetGroupDescription: string
|
|
41
|
+
SubnetIds: string[]
|
|
42
|
+
Tags?: Array<{
|
|
43
|
+
Key: string
|
|
44
|
+
Value: string
|
|
45
|
+
}>
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface RDSDBParameterGroup extends CloudFormationResource {
|
|
50
|
+
Type: 'AWS::RDS::DBParameterGroup'
|
|
51
|
+
Properties: {
|
|
52
|
+
DBParameterGroupName?: string
|
|
53
|
+
Description: string
|
|
54
|
+
Family: string
|
|
55
|
+
Parameters?: Record<string, string>
|
|
56
|
+
Tags?: Array<{
|
|
57
|
+
Key: string
|
|
58
|
+
Value: string
|
|
59
|
+
}>
|
|
60
|
+
}
|
|
61
|
+
}
|
package/src/route53.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CloudFormationResource } from './index'
|
|
2
|
+
|
|
3
|
+
export interface Route53HostedZone extends CloudFormationResource {
|
|
4
|
+
Type: 'AWS::Route53::HostedZone'
|
|
5
|
+
Properties: {
|
|
6
|
+
Name: string
|
|
7
|
+
HostedZoneConfig?: {
|
|
8
|
+
Comment?: string
|
|
9
|
+
}
|
|
10
|
+
HostedZoneTags?: Array<{
|
|
11
|
+
Key: string
|
|
12
|
+
Value: string
|
|
13
|
+
}>
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface Route53RecordSet extends CloudFormationResource {
|
|
18
|
+
Type: 'AWS::Route53::RecordSet'
|
|
19
|
+
Properties: {
|
|
20
|
+
HostedZoneId?: string
|
|
21
|
+
HostedZoneName?: string
|
|
22
|
+
Name: string
|
|
23
|
+
Type: 'A' | 'AAAA' | 'CNAME' | 'MX' | 'NS' | 'PTR' | 'SOA' | 'SPF' | 'SRV' | 'TXT'
|
|
24
|
+
TTL?: number
|
|
25
|
+
ResourceRecords?: string[]
|
|
26
|
+
AliasTarget?: {
|
|
27
|
+
DNSName: string
|
|
28
|
+
EvaluateTargetHealth?: boolean
|
|
29
|
+
HostedZoneId: string
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Secrets Manager Types
|
|
3
|
+
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SecretsManager.html
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { Tag } from './common'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* AWS::SecretsManager::Secret
|
|
10
|
+
*/
|
|
11
|
+
export interface SecretsManagerSecret {
|
|
12
|
+
Type: 'AWS::SecretsManager::Secret'
|
|
13
|
+
Properties: {
|
|
14
|
+
Name?: string
|
|
15
|
+
Description?: string
|
|
16
|
+
SecretString?: string
|
|
17
|
+
GenerateSecretString?: {
|
|
18
|
+
ExcludeCharacters?: string
|
|
19
|
+
ExcludeLowercase?: boolean
|
|
20
|
+
ExcludeNumbers?: boolean
|
|
21
|
+
ExcludePunctuation?: boolean
|
|
22
|
+
ExcludeUppercase?: boolean
|
|
23
|
+
GenerateStringKey?: string
|
|
24
|
+
IncludeSpace?: boolean
|
|
25
|
+
PasswordLength?: number
|
|
26
|
+
RequireEachIncludedType?: boolean
|
|
27
|
+
SecretStringTemplate?: string
|
|
28
|
+
}
|
|
29
|
+
KmsKeyId?: string | { Ref: string } | { 'Fn::GetAtt': [string, string] }
|
|
30
|
+
ReplicaRegions?: Array<{
|
|
31
|
+
Region: string
|
|
32
|
+
KmsKeyId?: string
|
|
33
|
+
}>
|
|
34
|
+
Tags?: Tag[]
|
|
35
|
+
}
|
|
36
|
+
DeletionPolicy?: 'Delete' | 'Retain' | 'Snapshot'
|
|
37
|
+
UpdateReplacePolicy?: 'Delete' | 'Retain' | 'Snapshot'
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* AWS::SecretsManager::SecretTargetAttachment
|
|
42
|
+
*/
|
|
43
|
+
export interface SecretsManagerSecretTargetAttachment {
|
|
44
|
+
Type: 'AWS::SecretsManager::SecretTargetAttachment'
|
|
45
|
+
Properties: {
|
|
46
|
+
SecretId: string | { Ref: string }
|
|
47
|
+
TargetId: string | { Ref: string }
|
|
48
|
+
TargetType: 'AWS::RDS::DBInstance' | 'AWS::RDS::DBCluster' | 'AWS::Redshift::Cluster' | 'AWS::DocDB::DBInstance' | 'AWS::DocDB::DBCluster'
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* AWS::SecretsManager::RotationSchedule
|
|
54
|
+
*/
|
|
55
|
+
export interface SecretsManagerRotationSchedule {
|
|
56
|
+
Type: 'AWS::SecretsManager::RotationSchedule'
|
|
57
|
+
Properties: {
|
|
58
|
+
SecretId: string | { Ref: string }
|
|
59
|
+
RotationLambdaARN?: string | { 'Fn::GetAtt': [string, string] }
|
|
60
|
+
RotationRules?: {
|
|
61
|
+
AutomaticallyAfterDays?: number
|
|
62
|
+
Duration?: string
|
|
63
|
+
ScheduleExpression?: string
|
|
64
|
+
}
|
|
65
|
+
HostedRotationLambda?: {
|
|
66
|
+
RotationType: string
|
|
67
|
+
RotationLambdaName?: string
|
|
68
|
+
KmsKeyArn?: string
|
|
69
|
+
MasterSecretArn?: string
|
|
70
|
+
MasterSecretKmsKeyArn?: string
|
|
71
|
+
VpcSecurityGroupIds?: string
|
|
72
|
+
VpcSubnetIds?: string
|
|
73
|
+
ExcludeCharacters?: string
|
|
74
|
+
SuperuserSecretArn?: string
|
|
75
|
+
SuperuserSecretKmsKeyArn?: string
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* AWS::SecretsManager::ResourcePolicy
|
|
82
|
+
*/
|
|
83
|
+
export interface SecretsManagerResourcePolicy {
|
|
84
|
+
Type: 'AWS::SecretsManager::ResourcePolicy'
|
|
85
|
+
Properties: {
|
|
86
|
+
SecretId: string | { Ref: string }
|
|
87
|
+
ResourcePolicy: {
|
|
88
|
+
Version: string
|
|
89
|
+
Statement: Array<{
|
|
90
|
+
Sid?: string
|
|
91
|
+
Effect: 'Allow' | 'Deny'
|
|
92
|
+
Principal: {
|
|
93
|
+
AWS?: string | string[]
|
|
94
|
+
Service?: string | string[]
|
|
95
|
+
Federated?: string
|
|
96
|
+
}
|
|
97
|
+
Action: string | string[]
|
|
98
|
+
Resource?: string | string[]
|
|
99
|
+
Condition?: Record<string, any>
|
|
100
|
+
}>
|
|
101
|
+
}
|
|
102
|
+
BlockPublicPolicy?: boolean
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export type SecretsManagerResource =
|
|
107
|
+
| SecretsManagerSecret
|
|
108
|
+
| SecretsManagerSecretTargetAttachment
|
|
109
|
+
| SecretsManagerRotationSchedule
|
|
110
|
+
| SecretsManagerResourcePolicy
|