@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/kinesis.ts ADDED
@@ -0,0 +1,261 @@
1
+ /**
2
+ * AWS Kinesis Types
3
+ * CloudFormation resource types for AWS Kinesis (data streaming)
4
+ */
5
+
6
+ import type { Tag } from './common'
7
+
8
+ export interface Stream {
9
+ Type: 'AWS::Kinesis::Stream'
10
+ Properties: {
11
+ Name?: string
12
+ ShardCount?: number
13
+ RetentionPeriodHours?: number // 24-8760 (1-365 days)
14
+
15
+ // Stream mode
16
+ StreamModeDetails?: {
17
+ StreamMode: 'PROVISIONED' | 'ON_DEMAND'
18
+ }
19
+
20
+ // Encryption
21
+ StreamEncryption?: {
22
+ EncryptionType: 'KMS'
23
+ KeyId: string | { Ref: string }
24
+ }
25
+
26
+ Tags?: Tag[]
27
+ }
28
+ DeletionPolicy?: 'Delete' | 'Retain'
29
+ UpdateReplacePolicy?: 'Delete' | 'Retain'
30
+ }
31
+
32
+ export interface StreamConsumer {
33
+ Type: 'AWS::Kinesis::StreamConsumer'
34
+ Properties: {
35
+ StreamARN: string | { 'Fn::GetAtt': [string, string] }
36
+ ConsumerName: string
37
+ }
38
+ DependsOn?: string | string[]
39
+ }
40
+
41
+ // Kinesis Data Firehose
42
+ export interface DeliveryStream {
43
+ Type: 'AWS::KinesisFirehose::DeliveryStream'
44
+ Properties: {
45
+ DeliveryStreamName?: string
46
+ DeliveryStreamType?: 'DirectPut' | 'KinesisStreamAsSource'
47
+
48
+ // Source configuration (if Type = KinesisStreamAsSource)
49
+ KinesisStreamSourceConfiguration?: {
50
+ KinesisStreamARN: string | { 'Fn::GetAtt': [string, string] }
51
+ RoleARN: string | { Ref: string }
52
+ }
53
+
54
+ // S3 destination
55
+ S3DestinationConfiguration?: {
56
+ BucketARN: string | { 'Fn::GetAtt': [string, string] }
57
+ RoleARN: string | { Ref: string }
58
+ Prefix?: string
59
+ ErrorOutputPrefix?: string
60
+ BufferingHints?: {
61
+ IntervalInSeconds?: number
62
+ SizeInMBs?: number
63
+ }
64
+ CompressionFormat?: 'UNCOMPRESSED' | 'GZIP' | 'ZIP' | 'Snappy' | 'HADOOP_SNAPPY'
65
+ EncryptionConfiguration?: {
66
+ NoEncryptionConfig?: 'NoEncryption'
67
+ KMSEncryptionConfig?: {
68
+ AWSKMSKeyARN: string | { Ref: string }
69
+ }
70
+ }
71
+ CloudWatchLoggingOptions?: {
72
+ Enabled?: boolean
73
+ LogGroupName?: string
74
+ LogStreamName?: string
75
+ }
76
+ }
77
+
78
+ // Extended S3 destination
79
+ ExtendedS3DestinationConfiguration?: {
80
+ BucketARN: string | { 'Fn::GetAtt': [string, string] }
81
+ RoleARN: string | { Ref: string }
82
+ Prefix?: string
83
+ ErrorOutputPrefix?: string
84
+ BufferingHints?: {
85
+ IntervalInSeconds?: number
86
+ SizeInMBs?: number
87
+ }
88
+ CompressionFormat?: 'UNCOMPRESSED' | 'GZIP' | 'ZIP' | 'Snappy' | 'HADOOP_SNAPPY'
89
+ EncryptionConfiguration?: {
90
+ NoEncryptionConfig?: 'NoEncryption'
91
+ KMSEncryptionConfig?: {
92
+ AWSKMSKeyARN: string | { Ref: string }
93
+ }
94
+ }
95
+ CloudWatchLoggingOptions?: {
96
+ Enabled?: boolean
97
+ LogGroupName?: string
98
+ LogStreamName?: string
99
+ }
100
+ DataFormatConversionConfiguration?: {
101
+ Enabled?: boolean
102
+ SchemaConfiguration?: {
103
+ DatabaseName?: string
104
+ TableName?: string
105
+ Region?: string
106
+ RoleARN?: string | { Ref: string }
107
+ }
108
+ InputFormatConfiguration?: {
109
+ Deserializer?: {
110
+ OpenXJsonSerDe?: Record<string, any>
111
+ HiveJsonSerDe?: Record<string, any>
112
+ }
113
+ }
114
+ OutputFormatConfiguration?: {
115
+ Serializer?: {
116
+ ParquetSerDe?: Record<string, any>
117
+ OrcSerDe?: Record<string, any>
118
+ }
119
+ }
120
+ }
121
+ DynamicPartitioningConfiguration?: {
122
+ Enabled?: boolean
123
+ RetryOptions?: {
124
+ DurationInSeconds?: number
125
+ }
126
+ }
127
+ ProcessingConfiguration?: {
128
+ Enabled?: boolean
129
+ Processors?: Array<{
130
+ Type: 'Lambda'
131
+ Parameters?: Array<{
132
+ ParameterName: string
133
+ ParameterValue: string
134
+ }>
135
+ }>
136
+ }
137
+ }
138
+
139
+ // Elasticsearch destination
140
+ ElasticsearchDestinationConfiguration?: {
141
+ DomainARN: string | { 'Fn::GetAtt': [string, string] }
142
+ IndexName: string
143
+ RoleARN: string | { Ref: string }
144
+ TypeName?: string
145
+ IndexRotationPeriod?: 'NoRotation' | 'OneHour' | 'OneDay' | 'OneWeek' | 'OneMonth'
146
+ BufferingHints?: {
147
+ IntervalInSeconds?: number
148
+ SizeInMBs?: number
149
+ }
150
+ RetryOptions?: {
151
+ DurationInSeconds?: number
152
+ }
153
+ S3BackupMode?: 'FailedDocumentsOnly' | 'AllDocuments'
154
+ S3Configuration: {
155
+ BucketARN: string | { 'Fn::GetAtt': [string, string] }
156
+ RoleARN: string | { Ref: string }
157
+ Prefix?: string
158
+ }
159
+ CloudWatchLoggingOptions?: {
160
+ Enabled?: boolean
161
+ LogGroupName?: string
162
+ LogStreamName?: string
163
+ }
164
+ }
165
+
166
+ // OpenSearch destination
167
+ AmazonopensearchserviceDestinationConfiguration?: {
168
+ DomainARN: string | { 'Fn::GetAtt': [string, string] }
169
+ IndexName: string
170
+ RoleARN: string | { Ref: string }
171
+ TypeName?: string
172
+ IndexRotationPeriod?: 'NoRotation' | 'OneHour' | 'OneDay' | 'OneWeek' | 'OneMonth'
173
+ BufferingHints?: {
174
+ IntervalInSeconds?: number
175
+ SizeInMBs?: number
176
+ }
177
+ RetryOptions?: {
178
+ DurationInSeconds?: number
179
+ }
180
+ S3BackupMode?: 'FailedDocumentsOnly' | 'AllDocuments'
181
+ S3Configuration: {
182
+ BucketARN: string | { 'Fn::GetAtt': [string, string] }
183
+ RoleARN: string | { Ref: string }
184
+ Prefix?: string
185
+ }
186
+ CloudWatchLoggingOptions?: {
187
+ Enabled?: boolean
188
+ LogGroupName?: string
189
+ LogStreamName?: string
190
+ }
191
+ }
192
+
193
+ // Redshift destination
194
+ RedshiftDestinationConfiguration?: {
195
+ ClusterJDBCURL: string
196
+ CopyCommand: {
197
+ DataTableName: string
198
+ CopyOptions?: string
199
+ DataTableColumns?: string
200
+ }
201
+ Username: string
202
+ Password: string
203
+ RoleARN: string | { Ref: string }
204
+ S3Configuration: {
205
+ BucketARN: string | { 'Fn::GetAtt': [string, string] }
206
+ RoleARN: string | { Ref: string }
207
+ Prefix?: string
208
+ }
209
+ CloudWatchLoggingOptions?: {
210
+ Enabled?: boolean
211
+ LogGroupName?: string
212
+ LogStreamName?: string
213
+ }
214
+ }
215
+
216
+ Tags?: Tag[]
217
+ }
218
+ DeletionPolicy?: 'Delete' | 'Retain'
219
+ UpdateReplacePolicy?: 'Delete' | 'Retain'
220
+ }
221
+
222
+ // Kinesis Data Analytics
223
+ export interface Application {
224
+ Type: 'AWS::KinesisAnalytics::Application'
225
+ Properties: {
226
+ ApplicationName?: string
227
+ ApplicationDescription?: string
228
+ ApplicationCode?: string
229
+ Inputs: Array<{
230
+ NamePrefix: string
231
+ InputSchema: {
232
+ RecordColumns: Array<{
233
+ Name: string
234
+ SqlType: string
235
+ Mapping?: string
236
+ }>
237
+ RecordFormat: {
238
+ RecordFormatType: 'CSV' | 'JSON'
239
+ MappingParameters?: {
240
+ CSVMappingParameters?: {
241
+ RecordRowDelimiter: string
242
+ RecordColumnDelimiter: string
243
+ }
244
+ JSONMappingParameters?: {
245
+ RecordRowPath: string
246
+ }
247
+ }
248
+ }
249
+ RecordEncoding?: string
250
+ }
251
+ KinesisStreamsInput?: {
252
+ ResourceARN: string | { 'Fn::GetAtt': [string, string] }
253
+ RoleARN: string | { Ref: string }
254
+ }
255
+ KinesisFirehoseInput?: {
256
+ ResourceARN: string | { 'Fn::GetAtt': [string, string] }
257
+ RoleARN: string | { Ref: string }
258
+ }
259
+ }>
260
+ }
261
+ }
package/src/kms.ts ADDED
@@ -0,0 +1,35 @@
1
+ import type { CloudFormationResource } from './index'
2
+
3
+ export interface KMSKey extends CloudFormationResource {
4
+ Type: 'AWS::KMS::Key'
5
+ Properties: {
6
+ Description?: string
7
+ Enabled?: boolean
8
+ EnableKeyRotation?: boolean
9
+ KeyPolicy: {
10
+ Version: '2012-10-17'
11
+ Statement: Array<{
12
+ Sid?: string
13
+ Effect: 'Allow' | 'Deny'
14
+ Principal: unknown
15
+ Action: string | string[]
16
+ Resource: string | string[]
17
+ }>
18
+ }
19
+ KeySpec?: 'SYMMETRIC_DEFAULT' | 'RSA_2048' | 'RSA_3072' | 'RSA_4096' | 'ECC_NIST_P256' | 'ECC_NIST_P384' | 'ECC_NIST_P521' | 'ECC_SECG_P256K1'
20
+ KeyUsage?: 'ENCRYPT_DECRYPT' | 'SIGN_VERIFY'
21
+ MultiRegion?: boolean
22
+ Tags?: Array<{
23
+ Key: string
24
+ Value: string
25
+ }>
26
+ }
27
+ }
28
+
29
+ export interface KMSAlias extends CloudFormationResource {
30
+ Type: 'AWS::KMS::Alias'
31
+ Properties: {
32
+ AliasName: string
33
+ TargetKeyId: string | { Ref: string }
34
+ }
35
+ }
package/src/lambda.ts ADDED
@@ -0,0 +1,42 @@
1
+ import type { CloudFormationResource } from './index'
2
+
3
+ export interface LambdaFunction extends CloudFormationResource {
4
+ Type: 'AWS::Lambda::Function'
5
+ Properties: {
6
+ FunctionName?: string
7
+ Description?: string
8
+ Runtime: string
9
+ Role: string | { 'Fn::GetAtt': [string, string] }
10
+ Handler: string
11
+ Code: {
12
+ S3Bucket?: string
13
+ S3Key?: string
14
+ ZipFile?: string
15
+ }
16
+ Timeout?: number
17
+ MemorySize?: number
18
+ Environment?: {
19
+ Variables: Record<string, string>
20
+ }
21
+ VpcConfig?: {
22
+ SecurityGroupIds: string[]
23
+ SubnetIds: string[]
24
+ }
25
+ Layers?: string[]
26
+ Tags?: Array<{
27
+ Key: string
28
+ Value: string
29
+ }>
30
+ }
31
+ }
32
+
33
+ export interface LambdaPermission extends CloudFormationResource {
34
+ Type: 'AWS::Lambda::Permission'
35
+ Properties: {
36
+ FunctionName: string | { Ref: string }
37
+ Action: string
38
+ Principal: string
39
+ SourceArn?: string
40
+ SourceAccount?: string
41
+ }
42
+ }
@@ -0,0 +1,147 @@
1
+ /**
2
+ * AWS OpenSearch Types
3
+ * CloudFormation resource types for AWS OpenSearch Service
4
+ */
5
+
6
+ import type { Tag } from './common'
7
+
8
+ export interface OpenSearchDomain {
9
+ Type: 'AWS::OpenSearchService::Domain'
10
+ Properties: {
11
+ DomainName?: string
12
+ EngineVersion?: string // e.g., 'OpenSearch_2.11', 'Elasticsearch_7.10'
13
+
14
+ // Cluster configuration
15
+ ClusterConfig?: {
16
+ InstanceType?: string // e.g., 't3.small.search', 'm6g.large.search'
17
+ InstanceCount?: number
18
+ DedicatedMasterEnabled?: boolean
19
+ DedicatedMasterType?: string
20
+ DedicatedMasterCount?: number
21
+ ZoneAwarenessEnabled?: boolean
22
+ ZoneAwarenessConfig?: {
23
+ AvailabilityZoneCount?: number
24
+ }
25
+ WarmEnabled?: boolean
26
+ WarmType?: string
27
+ WarmCount?: number
28
+ ColdStorageOptions?: {
29
+ Enabled?: boolean
30
+ }
31
+ }
32
+
33
+ // Storage
34
+ EBSOptions?: {
35
+ EBSEnabled?: boolean
36
+ VolumeType?: 'gp2' | 'gp3' | 'io1' | 'standard'
37
+ VolumeSize?: number // in GiB
38
+ Iops?: number
39
+ Throughput?: number
40
+ }
41
+
42
+ // Access control
43
+ AccessPolicies?: Record<string, any> | string
44
+
45
+ // Encryption
46
+ EncryptionAtRestOptions?: {
47
+ Enabled?: boolean
48
+ KmsKeyId?: string | { Ref: string }
49
+ }
50
+ NodeToNodeEncryptionOptions?: {
51
+ Enabled?: boolean
52
+ }
53
+ DomainEndpointOptions?: {
54
+ EnforceHTTPS?: boolean
55
+ TLSSecurityPolicy?: 'Policy-Min-TLS-1-0-2019-07' | 'Policy-Min-TLS-1-2-2019-07'
56
+ CustomEndpointEnabled?: boolean
57
+ CustomEndpoint?: string
58
+ CustomEndpointCertificateArn?: string | { Ref: string }
59
+ }
60
+
61
+ // Advanced security
62
+ AdvancedSecurityOptions?: {
63
+ Enabled?: boolean
64
+ InternalUserDatabaseEnabled?: boolean
65
+ MasterUserOptions?: {
66
+ MasterUserARN?: string | { Ref: string }
67
+ MasterUserName?: string
68
+ MasterUserPassword?: string
69
+ }
70
+ SAMLOptions?: {
71
+ Enabled?: boolean
72
+ Idp?: {
73
+ EntityId: string
74
+ MetadataContent: string
75
+ }
76
+ MasterBackendRole?: string
77
+ MasterUserName?: string
78
+ RolesKey?: string
79
+ SessionTimeoutMinutes?: number
80
+ SubjectKey?: string
81
+ }
82
+ }
83
+
84
+ // VPC configuration
85
+ VPCOptions?: {
86
+ SubnetIds?: Array<string | { Ref: string }>
87
+ SecurityGroupIds?: Array<string | { Ref: string }>
88
+ }
89
+
90
+ // Snapshot configuration
91
+ SnapshotOptions?: {
92
+ AutomatedSnapshotStartHour?: number
93
+ }
94
+
95
+ // Advanced options
96
+ AdvancedOptions?: Record<string, string>
97
+
98
+ // Logging
99
+ LogPublishingOptions?: {
100
+ [key: string]: {
101
+ CloudWatchLogsLogGroupArn: string | { Ref: string }
102
+ Enabled?: boolean
103
+ }
104
+ }
105
+
106
+ // Auto-Tune
107
+ AutoTuneOptions?: {
108
+ DesiredState?: 'ENABLED' | 'DISABLED'
109
+ MaintenanceSchedules?: Array<{
110
+ StartAt?: string
111
+ Duration?: {
112
+ Value?: number
113
+ Unit?: 'HOURS'
114
+ }
115
+ CronExpressionForRecurrence?: string
116
+ }>
117
+ }
118
+
119
+ // Software update options
120
+ SoftwareUpdateOptions?: {
121
+ AutoSoftwareUpdateEnabled?: boolean
122
+ }
123
+
124
+ // Off-peak window
125
+ OffPeakWindowOptions?: {
126
+ Enabled?: boolean
127
+ OffPeakWindow?: {
128
+ WindowStartTime?: {
129
+ Hours: number
130
+ Minutes: number
131
+ }
132
+ }
133
+ }
134
+
135
+ Tags?: Tag[]
136
+ }
137
+ DeletionPolicy?: 'Delete' | 'Retain' | 'Snapshot'
138
+ UpdateReplacePolicy?: 'Delete' | 'Retain' | 'Snapshot'
139
+ }
140
+
141
+ export interface OpenSearchDomainPolicy {
142
+ Type: 'AWS::OpenSearchService::DomainPolicy'
143
+ Properties: {
144
+ DomainName: string | { Ref: string }
145
+ AccessPolicies: Record<string, any> | string
146
+ }
147
+ }