@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/src/ecs.ts ADDED
@@ -0,0 +1,129 @@
1
+ import type { CloudFormationResource } from './index'
2
+
3
+ export interface ECSCluster extends CloudFormationResource {
4
+ Type: 'AWS::ECS::Cluster'
5
+ Properties?: {
6
+ ClusterName?: string
7
+ CapacityProviders?: string[]
8
+ DefaultCapacityProviderStrategy?: Array<{
9
+ CapacityProvider: string
10
+ Weight?: number
11
+ Base?: number
12
+ }>
13
+ Configuration?: {
14
+ ExecuteCommandConfiguration?: {
15
+ Logging?: string
16
+ }
17
+ }
18
+ Tags?: Array<{
19
+ Key: string
20
+ Value: string
21
+ }>
22
+ }
23
+ }
24
+
25
+ export interface ECSTaskDefinition extends CloudFormationResource {
26
+ Type: 'AWS::ECS::TaskDefinition'
27
+ Properties: {
28
+ Family: string
29
+ TaskRoleArn?: string
30
+ ExecutionRoleArn?: string
31
+ NetworkMode?: 'bridge' | 'host' | 'awsvpc' | 'none'
32
+ RequiresCompatibilities?: ('EC2' | 'FARGATE')[]
33
+ Cpu?: string
34
+ Memory?: string
35
+ ContainerDefinitions: Array<{
36
+ Name: string
37
+ Image: string
38
+ Cpu?: number
39
+ Memory?: number
40
+ MemoryReservation?: number
41
+ Essential?: boolean
42
+ PortMappings?: Array<{
43
+ ContainerPort: number
44
+ HostPort?: number
45
+ Protocol?: 'tcp' | 'udp'
46
+ }>
47
+ Environment?: Array<{
48
+ Name: string
49
+ Value: string
50
+ }>
51
+ Secrets?: Array<{
52
+ Name: string
53
+ ValueFrom: string
54
+ }>
55
+ LogConfiguration?: {
56
+ LogDriver: 'awslogs' | 'fluentd' | 'gelf' | 'json-file' | 'journald' | 'logentries' | 'splunk' | 'syslog'
57
+ Options?: Record<string, string>
58
+ }
59
+ HealthCheck?: {
60
+ Command: string[]
61
+ Interval?: number
62
+ Timeout?: number
63
+ Retries?: number
64
+ StartPeriod?: number
65
+ }
66
+ MountPoints?: Array<{
67
+ SourceVolume: string
68
+ ContainerPath: string
69
+ ReadOnly?: boolean
70
+ }>
71
+ }>
72
+ Volumes?: Array<{
73
+ Name: string
74
+ Host?: {
75
+ SourcePath?: string
76
+ }
77
+ EFSVolumeConfiguration?: {
78
+ FileSystemId: string
79
+ RootDirectory?: string
80
+ TransitEncryption?: 'ENABLED' | 'DISABLED'
81
+ AuthorizationConfig?: {
82
+ AccessPointId?: string
83
+ IAM?: 'ENABLED' | 'DISABLED'
84
+ }
85
+ }
86
+ }>
87
+ Tags?: Array<{
88
+ Key: string
89
+ Value: string
90
+ }>
91
+ }
92
+ }
93
+
94
+ export interface ECSService extends CloudFormationResource {
95
+ Type: 'AWS::ECS::Service'
96
+ Properties: {
97
+ ServiceName?: string
98
+ Cluster?: string | { Ref: string }
99
+ TaskDefinition: string | { Ref: string }
100
+ DesiredCount?: number
101
+ LaunchType?: 'EC2' | 'FARGATE' | 'EXTERNAL'
102
+ PlatformVersion?: string
103
+ NetworkConfiguration?: {
104
+ AwsvpcConfiguration: {
105
+ Subnets: string[]
106
+ SecurityGroups?: string[]
107
+ AssignPublicIp?: 'ENABLED' | 'DISABLED'
108
+ }
109
+ }
110
+ LoadBalancers?: Array<{
111
+ TargetGroupArn: string | { Ref: string }
112
+ ContainerName: string
113
+ ContainerPort: number
114
+ }>
115
+ HealthCheckGracePeriodSeconds?: number
116
+ DeploymentConfiguration?: {
117
+ MaximumPercent?: number
118
+ MinimumHealthyPercent?: number
119
+ DeploymentCircuitBreaker?: {
120
+ Enable: boolean
121
+ Rollback: boolean
122
+ }
123
+ }
124
+ Tags?: Array<{
125
+ Key: string
126
+ Value: string
127
+ }>
128
+ }
129
+ }
package/src/efs.ts ADDED
@@ -0,0 +1,57 @@
1
+ import type { CloudFormationResource } from './index'
2
+
3
+ export interface EFSFileSystem extends CloudFormationResource {
4
+ Type: 'AWS::EFS::FileSystem'
5
+ Properties?: {
6
+ Encrypted?: boolean
7
+ KmsKeyId?: string
8
+ LifecyclePolicies?: Array<{
9
+ TransitionToIA?: 'AFTER_7_DAYS' | 'AFTER_14_DAYS' | 'AFTER_30_DAYS' | 'AFTER_60_DAYS' | 'AFTER_90_DAYS'
10
+ TransitionToPrimaryStorageClass?: 'AFTER_1_ACCESS'
11
+ }>
12
+ PerformanceMode?: 'generalPurpose' | 'maxIO'
13
+ ThroughputMode?: 'bursting' | 'provisioned' | 'elastic'
14
+ ProvisionedThroughputInMibps?: number
15
+ BackupPolicy?: {
16
+ Status: 'ENABLED' | 'DISABLED'
17
+ }
18
+ FileSystemTags?: Array<{
19
+ Key: string
20
+ Value: string
21
+ }>
22
+ }
23
+ }
24
+
25
+ export interface EFSMountTarget extends CloudFormationResource {
26
+ Type: 'AWS::EFS::MountTarget'
27
+ Properties: {
28
+ FileSystemId: string | { Ref: string }
29
+ SubnetId: string
30
+ SecurityGroups: string[]
31
+ IpAddress?: string
32
+ }
33
+ }
34
+
35
+ export interface EFSAccessPoint extends CloudFormationResource {
36
+ Type: 'AWS::EFS::AccessPoint'
37
+ Properties: {
38
+ FileSystemId: string | { Ref: string }
39
+ PosixUser?: {
40
+ Uid: string
41
+ Gid: string
42
+ SecondaryGids?: string[]
43
+ }
44
+ RootDirectory?: {
45
+ Path?: string
46
+ CreationInfo?: {
47
+ OwnerUid: string
48
+ OwnerGid: string
49
+ Permissions: string
50
+ }
51
+ }
52
+ AccessPointTags?: Array<{
53
+ Key: string
54
+ Value: string
55
+ }>
56
+ }
57
+ }
@@ -0,0 +1,92 @@
1
+ import type { CloudFormationResource } from './index'
2
+
3
+ /**
4
+ * AWS ElastiCache Types
5
+ */
6
+
7
+ export interface ElastiCacheCluster extends CloudFormationResource {
8
+ Type: 'AWS::ElastiCache::CacheCluster'
9
+ Properties: {
10
+ ClusterName?: string
11
+ CacheNodeType: string
12
+ Engine: 'memcached' | 'redis'
13
+ EngineVersion?: string
14
+ NumCacheNodes: number
15
+ Port?: number
16
+ PreferredAvailabilityZone?: string
17
+ PreferredAvailabilityZones?: string[]
18
+ PreferredMaintenanceWindow?: string
19
+ CacheSubnetGroupName?: string | { Ref: string }
20
+ VpcSecurityGroupIds?: string[]
21
+ CacheParameterGroupName?: string | { Ref: string }
22
+ SnapshotRetentionLimit?: number
23
+ SnapshotWindow?: string
24
+ AutoMinorVersionUpgrade?: boolean
25
+ AZMode?: 'single-az' | 'cross-az'
26
+ NotificationTopicArn?: string
27
+ Tags?: Array<{
28
+ Key: string
29
+ Value: string
30
+ }>
31
+ }
32
+ }
33
+
34
+ export interface ElastiCacheReplicationGroup extends CloudFormationResource {
35
+ Type: 'AWS::ElastiCache::ReplicationGroup'
36
+ Properties: {
37
+ ReplicationGroupId?: string
38
+ ReplicationGroupDescription: string
39
+ Engine?: 'redis'
40
+ EngineVersion?: string
41
+ CacheNodeType: string
42
+ NumCacheClusters?: number
43
+ NumNodeGroups?: number
44
+ ReplicasPerNodeGroup?: number
45
+ AutomaticFailoverEnabled?: boolean
46
+ MultiAZEnabled?: boolean
47
+ PreferredCacheClusterAZs?: string[]
48
+ Port?: number
49
+ CacheSubnetGroupName?: string | { Ref: string }
50
+ SecurityGroupIds?: string[]
51
+ CacheParameterGroupName?: string | { Ref: string }
52
+ SnapshotRetentionLimit?: number
53
+ SnapshotWindow?: string
54
+ PreferredMaintenanceWindow?: string
55
+ AtRestEncryptionEnabled?: boolean
56
+ TransitEncryptionEnabled?: boolean
57
+ AuthToken?: string
58
+ KmsKeyId?: string
59
+ AutoMinorVersionUpgrade?: boolean
60
+ NotificationTopicArn?: string
61
+ Tags?: Array<{
62
+ Key: string
63
+ Value: string
64
+ }>
65
+ }
66
+ }
67
+
68
+ export interface ElastiCacheSubnetGroup extends CloudFormationResource {
69
+ Type: 'AWS::ElastiCache::SubnetGroup'
70
+ Properties: {
71
+ CacheSubnetGroupName?: string
72
+ Description: string
73
+ SubnetIds: string[]
74
+ Tags?: Array<{
75
+ Key: string
76
+ Value: string
77
+ }>
78
+ }
79
+ }
80
+
81
+ export interface ElastiCacheParameterGroup extends CloudFormationResource {
82
+ Type: 'AWS::ElastiCache::ParameterGroup'
83
+ Properties: {
84
+ CacheParameterGroupFamily: string
85
+ Description: string
86
+ Properties?: Record<string, string>
87
+ Tags?: Array<{
88
+ Key: string
89
+ Value: string
90
+ }>
91
+ }
92
+ }
@@ -0,0 +1,140 @@
1
+ import type { CloudFormationResource } from './index'
2
+
3
+ /**
4
+ * AWS EventBridge Types
5
+ */
6
+
7
+ /**
8
+ * ECS Parameters for EventBridge targets
9
+ */
10
+ export interface EventBridgeEcsParameters {
11
+ TaskDefinitionArn: string
12
+ TaskCount?: number
13
+ LaunchType?: 'EC2' | 'FARGATE' | 'EXTERNAL'
14
+ NetworkConfiguration?: {
15
+ awsvpcConfiguration: {
16
+ Subnets: string[]
17
+ SecurityGroups?: string[]
18
+ AssignPublicIp?: 'ENABLED' | 'DISABLED'
19
+ }
20
+ }
21
+ PlatformVersion?: string
22
+ Group?: string
23
+ CapacityProviderStrategy?: Array<{
24
+ capacityProvider: string
25
+ weight?: number
26
+ base?: number
27
+ }>
28
+ EnableECSManagedTags?: boolean
29
+ EnableExecuteCommand?: boolean
30
+ PlacementConstraints?: Array<{
31
+ type?: string
32
+ expression?: string
33
+ }>
34
+ PlacementStrategy?: Array<{
35
+ type?: string
36
+ field?: string
37
+ }>
38
+ PropagateTags?: 'TASK_DEFINITION'
39
+ ReferenceId?: string
40
+ Tags?: Array<{
41
+ Key: string
42
+ Value: string
43
+ }>
44
+ }
45
+
46
+ /**
47
+ * EventBridge Rule Target
48
+ */
49
+ export interface EventBridgeTarget {
50
+ Id: string
51
+ Arn: string
52
+ RoleArn?: string
53
+ Input?: string
54
+ InputPath?: string
55
+ InputTransformer?: {
56
+ InputPathsMap?: Record<string, string>
57
+ InputTemplate: string
58
+ }
59
+ KinesisParameters?: {
60
+ PartitionKeyPath: string
61
+ }
62
+ EcsParameters?: EventBridgeEcsParameters
63
+ SqsParameters?: {
64
+ MessageGroupId: string
65
+ }
66
+ HttpParameters?: {
67
+ PathParameterValues?: string[]
68
+ HeaderParameters?: Record<string, string>
69
+ QueryStringParameters?: Record<string, string>
70
+ }
71
+ RedshiftDataParameters?: {
72
+ Database: string
73
+ Sql: string
74
+ DbUser?: string
75
+ SecretManagerArn?: string
76
+ StatementName?: string
77
+ WithEvent?: boolean
78
+ }
79
+ SageMakerPipelineParameters?: {
80
+ PipelineParameterList?: Array<{
81
+ Name: string
82
+ Value: string
83
+ }>
84
+ }
85
+ DeadLetterConfig?: {
86
+ Arn: string
87
+ }
88
+ RetryPolicy?: {
89
+ MaximumRetryAttempts?: number
90
+ MaximumEventAge?: number
91
+ }
92
+ }
93
+
94
+ export interface EventBridgeRule extends CloudFormationResource {
95
+ Type: 'AWS::Events::Rule'
96
+ Properties: {
97
+ Name?: string
98
+ Description?: string
99
+ State?: 'ENABLED' | 'DISABLED' | 'ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS'
100
+ ScheduleExpression?: string
101
+ EventPattern?: {
102
+ source?: string[]
103
+ 'detail-type'?: string[]
104
+ detail?: Record<string, unknown>
105
+ account?: string[]
106
+ region?: string[]
107
+ resources?: string[]
108
+ }
109
+ EventBusName?: string
110
+ RoleArn?: string
111
+ Targets?: EventBridgeTarget[]
112
+ }
113
+ }
114
+
115
+ export interface EventBridgeEventBus extends CloudFormationResource {
116
+ Type: 'AWS::Events::EventBus'
117
+ Properties: {
118
+ Name: string
119
+ EventSourceName?: string
120
+ Tags?: Array<{
121
+ Key: string
122
+ Value: string
123
+ }>
124
+ }
125
+ }
126
+
127
+ export interface EventBridgeArchive extends CloudFormationResource {
128
+ Type: 'AWS::Events::Archive'
129
+ Properties: {
130
+ ArchiveName?: string
131
+ Description?: string
132
+ EventPattern?: {
133
+ source?: string[]
134
+ 'detail-type'?: string[]
135
+ detail?: Record<string, unknown>
136
+ }
137
+ RetentionDays?: number
138
+ SourceArn: string
139
+ }
140
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * AWS Global Accelerator Types
3
+ * CloudFormation resource types for AWS Global Accelerator
4
+ */
5
+
6
+ import type { Tag } from './common'
7
+
8
+ export interface Accelerator {
9
+ Type: 'AWS::GlobalAccelerator::Accelerator'
10
+ Properties: {
11
+ Name: string
12
+ Enabled?: boolean
13
+ IpAddressType?: 'IPV4' | 'DUAL_STACK'
14
+ IpAddresses?: string[]
15
+ Tags?: Tag[]
16
+ }
17
+ DeletionPolicy?: 'Delete' | 'Retain'
18
+ UpdateReplacePolicy?: 'Delete' | 'Retain'
19
+ }
20
+
21
+ export interface GlobalAcceleratorListener {
22
+ Type: 'AWS::GlobalAccelerator::Listener'
23
+ Properties: {
24
+ AcceleratorArn: string | { Ref: string }
25
+ Protocol: 'TCP' | 'UDP'
26
+ PortRanges: Array<{
27
+ FromPort: number
28
+ ToPort: number
29
+ }>
30
+ ClientAffinity?: 'NONE' | 'SOURCE_IP'
31
+ }
32
+ DependsOn?: string | string[]
33
+ }
34
+
35
+ export interface EndpointGroup {
36
+ Type: 'AWS::GlobalAccelerator::EndpointGroup'
37
+ Properties: {
38
+ ListenerArn: string | { Ref: string }
39
+ EndpointGroupRegion: string
40
+ EndpointConfigurations?: Array<{
41
+ EndpointId: string | { Ref: string }
42
+ Weight?: number
43
+ ClientIPPreservationEnabled?: boolean
44
+ }>
45
+ TrafficDialPercentage?: number
46
+ HealthCheckIntervalSeconds?: number
47
+ HealthCheckPath?: string
48
+ HealthCheckPort?: number
49
+ HealthCheckProtocol?: 'TCP' | 'HTTP' | 'HTTPS'
50
+ ThresholdCount?: number
51
+ PortOverrides?: Array<{
52
+ ListenerPort: number
53
+ EndpointPort: number
54
+ }>
55
+ }
56
+ DependsOn?: string | string[]
57
+ }
package/src/glue.ts ADDED
@@ -0,0 +1,241 @@
1
+ /**
2
+ * AWS Glue Types
3
+ * CloudFormation resource types for AWS Glue (ETL jobs, data catalog)
4
+ */
5
+
6
+ import type { Tag } from './common'
7
+
8
+ export interface Database {
9
+ Type: 'AWS::Glue::Database'
10
+ Properties: {
11
+ CatalogId: string
12
+ DatabaseInput: {
13
+ Name: string
14
+ Description?: string
15
+ LocationUri?: string
16
+ Parameters?: Record<string, string>
17
+ }
18
+ }
19
+ }
20
+
21
+ export interface Table {
22
+ Type: 'AWS::Glue::Table'
23
+ Properties: {
24
+ CatalogId: string
25
+ DatabaseName: string | { Ref: string }
26
+ TableInput: {
27
+ Name: string
28
+ Description?: string
29
+ Owner?: string
30
+ Retention?: number
31
+ StorageDescriptor?: {
32
+ Columns?: Array<{
33
+ Name: string
34
+ Type?: string
35
+ Comment?: string
36
+ }>
37
+ Location?: string
38
+ InputFormat?: string
39
+ OutputFormat?: string
40
+ Compressed?: boolean
41
+ NumberOfBuckets?: number
42
+ SerdeInfo?: {
43
+ Name?: string
44
+ SerializationLibrary?: string
45
+ Parameters?: Record<string, string>
46
+ }
47
+ BucketColumns?: string[]
48
+ SortColumns?: Array<{
49
+ Column: string
50
+ SortOrder: number
51
+ }>
52
+ Parameters?: Record<string, string>
53
+ SkewedInfo?: {
54
+ SkewedColumnNames?: string[]
55
+ SkewedColumnValues?: string[]
56
+ SkewedColumnValueLocationMaps?: Record<string, string>
57
+ }
58
+ StoredAsSubDirectories?: boolean
59
+ }
60
+ PartitionKeys?: Array<{
61
+ Name: string
62
+ Type?: string
63
+ Comment?: string
64
+ }>
65
+ TableType?: string
66
+ Parameters?: Record<string, string>
67
+ }
68
+ }
69
+ DependsOn?: string | string[]
70
+ }
71
+
72
+ export interface Crawler {
73
+ Type: 'AWS::Glue::Crawler'
74
+ Properties: {
75
+ Name?: string
76
+ Role: string | { Ref: string }
77
+ DatabaseName: string | { Ref: string }
78
+ Targets: {
79
+ S3Targets?: Array<{
80
+ Path: string
81
+ Exclusions?: string[]
82
+ ConnectionName?: string
83
+ }>
84
+ JdbcTargets?: Array<{
85
+ ConnectionName: string
86
+ Path: string
87
+ Exclusions?: string[]
88
+ }>
89
+ DynamoDBTargets?: Array<{
90
+ Path: string
91
+ }>
92
+ CatalogTargets?: Array<{
93
+ DatabaseName: string
94
+ Tables: string[]
95
+ }>
96
+ }
97
+ Description?: string
98
+ Schedule?: {
99
+ ScheduleExpression: string
100
+ }
101
+ Classifiers?: string[]
102
+ TablePrefix?: string
103
+ SchemaChangePolicy?: {
104
+ UpdateBehavior?: 'LOG' | 'UPDATE_IN_DATABASE'
105
+ DeleteBehavior?: 'LOG' | 'DELETE_FROM_DATABASE' | 'DEPRECATE_IN_DATABASE'
106
+ }
107
+ Configuration?: string
108
+ CrawlerSecurityConfiguration?: string
109
+ Tags?: Record<string, string>
110
+ }
111
+ }
112
+
113
+ export interface Job {
114
+ Type: 'AWS::Glue::Job'
115
+ Properties: {
116
+ Name?: string
117
+ Role: string | { Ref: string }
118
+ Command: {
119
+ Name: 'glueetl' | 'gluestreaming' | 'pythonshell'
120
+ ScriptLocation: string
121
+ PythonVersion?: '2' | '3'
122
+ }
123
+ AllocatedCapacity?: number
124
+ MaxCapacity?: number
125
+ ExecutionProperty?: {
126
+ MaxConcurrentRuns?: number
127
+ }
128
+ MaxRetries?: number
129
+ Timeout?: number
130
+ GlueVersion?: string
131
+ NumberOfWorkers?: number
132
+ WorkerType?: 'Standard' | 'G.1X' | 'G.2X' | 'G.025X'
133
+ DefaultArguments?: Record<string, string>
134
+ Connections?: {
135
+ Connections?: string[]
136
+ }
137
+ Description?: string
138
+ SecurityConfiguration?: string
139
+ Tags?: Record<string, string>
140
+ }
141
+ }
142
+
143
+ export interface Trigger {
144
+ Type: 'AWS::Glue::Trigger'
145
+ Properties: {
146
+ Name?: string
147
+ Type: 'SCHEDULED' | 'CONDITIONAL' | 'ON_DEMAND'
148
+ Actions: Array<{
149
+ JobName?: string | { Ref: string }
150
+ Arguments?: Record<string, string>
151
+ Timeout?: number
152
+ SecurityConfiguration?: string
153
+ NotificationProperty?: {
154
+ NotifyDelayAfter?: number
155
+ }
156
+ CrawlerName?: string
157
+ }>
158
+ Description?: string
159
+ Schedule?: string // Cron expression
160
+ Predicate?: {
161
+ Logical?: 'AND' | 'ANY'
162
+ Conditions?: Array<{
163
+ LogicalOperator?: 'EQUALS'
164
+ JobName?: string | { Ref: string }
165
+ State?: 'SUCCEEDED' | 'STOPPED' | 'FAILED' | 'TIMEOUT'
166
+ CrawlerName?: string
167
+ CrawlState?: 'SUCCEEDED' | 'FAILED' | 'CANCELLED'
168
+ }>
169
+ }
170
+ StartOnCreation?: boolean
171
+ WorkflowName?: string
172
+ Tags?: Record<string, string>
173
+ }
174
+ }
175
+
176
+ export interface Partition {
177
+ Type: 'AWS::Glue::Partition'
178
+ Properties: {
179
+ CatalogId: string
180
+ DatabaseName: string | { Ref: string }
181
+ TableName: string | { Ref: string }
182
+ PartitionInput: {
183
+ Values: string[]
184
+ StorageDescriptor?: {
185
+ Columns?: Array<{
186
+ Name: string
187
+ Type?: string
188
+ Comment?: string
189
+ }>
190
+ Location?: string
191
+ InputFormat?: string
192
+ OutputFormat?: string
193
+ SerdeInfo?: {
194
+ SerializationLibrary?: string
195
+ Parameters?: Record<string, string>
196
+ }
197
+ }
198
+ Parameters?: Record<string, string>
199
+ }
200
+ }
201
+ DependsOn?: string | string[]
202
+ }
203
+
204
+ export interface Connection {
205
+ Type: 'AWS::Glue::Connection'
206
+ Properties: {
207
+ CatalogId: string
208
+ ConnectionInput: {
209
+ Name: string
210
+ Description?: string
211
+ ConnectionType: 'JDBC' | 'SFTP' | 'MONGODB' | 'KAFKA' | 'NETWORK'
212
+ ConnectionProperties: Record<string, string>
213
+ PhysicalConnectionRequirements?: {
214
+ AvailabilityZone?: string
215
+ SecurityGroupIdList?: Array<string | { Ref: string }>
216
+ SubnetId?: string | { Ref: string }
217
+ }
218
+ }
219
+ }
220
+ }
221
+
222
+ export interface SecurityConfiguration {
223
+ Type: 'AWS::Glue::SecurityConfiguration'
224
+ Properties: {
225
+ Name: string
226
+ EncryptionConfiguration: {
227
+ S3Encryptions?: Array<{
228
+ S3EncryptionMode?: 'DISABLED' | 'SSE-KMS' | 'SSE-S3'
229
+ KmsKeyArn?: string | { Ref: string }
230
+ }>
231
+ CloudWatchEncryption?: {
232
+ CloudWatchEncryptionMode?: 'DISABLED' | 'SSE-KMS'
233
+ KmsKeyArn?: string | { Ref: string }
234
+ }
235
+ JobBookmarksEncryption?: {
236
+ JobBookmarksEncryptionMode?: 'DISABLED' | 'CSE-KMS'
237
+ KmsKeyArn?: string | { Ref: string }
238
+ }
239
+ }
240
+ }
241
+ }