@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.
@@ -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
+ }
@@ -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