@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/ses.ts ADDED
@@ -0,0 +1,66 @@
1
+ import type { CloudFormationResource } from './index'
2
+
3
+ export interface SESEmailIdentity extends CloudFormationResource {
4
+ Type: 'AWS::SES::EmailIdentity'
5
+ Properties: {
6
+ EmailIdentity: string
7
+ DkimSigningAttributes?: {
8
+ NextSigningKeyLength?: 'RSA_1024_BIT' | 'RSA_2048_BIT'
9
+ }
10
+ FeedbackAttributes?: {
11
+ EmailForwardingEnabled?: boolean
12
+ }
13
+ }
14
+ }
15
+
16
+ export interface SESConfigurationSet extends CloudFormationResource {
17
+ Type: 'AWS::SES::ConfigurationSet'
18
+ Properties: {
19
+ Name?: string
20
+ ReputationOptions?: {
21
+ ReputationMetricsEnabled?: boolean
22
+ }
23
+ SendingOptions?: {
24
+ SendingEnabled?: boolean
25
+ }
26
+ SuppressionOptions?: {
27
+ SuppressedReasons?: ('BOUNCE' | 'COMPLAINT')[]
28
+ }
29
+ }
30
+ }
31
+
32
+ export interface SESReceiptRuleSet extends CloudFormationResource {
33
+ Type: 'AWS::SES::ReceiptRuleSet'
34
+ Properties?: {
35
+ RuleSetName?: string
36
+ }
37
+ }
38
+
39
+ export interface SESReceiptRule extends CloudFormationResource {
40
+ Type: 'AWS::SES::ReceiptRule'
41
+ Properties: {
42
+ RuleSetName: string | { Ref: string }
43
+ Rule: {
44
+ Name?: string
45
+ Enabled?: boolean
46
+ Recipients?: string[]
47
+ ScanEnabled?: boolean
48
+ TlsPolicy?: 'Optional' | 'Require'
49
+ Actions?: Array<{
50
+ S3Action?: {
51
+ BucketName: string
52
+ ObjectKeyPrefix?: string
53
+ KmsKeyArn?: string
54
+ }
55
+ LambdaAction?: {
56
+ FunctionArn: string
57
+ InvocationType?: 'Event' | 'RequestResponse'
58
+ }
59
+ SNSAction?: {
60
+ TopicArn: string
61
+ Encoding?: 'UTF-8' | 'Base64'
62
+ }
63
+ }>
64
+ }
65
+ }
66
+ }
package/src/sns.ts ADDED
@@ -0,0 +1,45 @@
1
+ import type { CloudFormationResource } from './index'
2
+
3
+ export interface SNSTopic extends CloudFormationResource {
4
+ Type: 'AWS::SNS::Topic'
5
+ Properties?: {
6
+ TopicName?: string
7
+ DisplayName?: string
8
+ Subscription?: Array<{
9
+ Endpoint: string
10
+ Protocol: 'http' | 'https' | 'email' | 'email-json' | 'sms' | 'sqs' | 'application' | 'lambda' | 'firehose'
11
+ }>
12
+ KmsMasterKeyId?: string
13
+ Tags?: Array<{
14
+ Key: string
15
+ Value: string
16
+ }>
17
+ }
18
+ }
19
+
20
+ export interface SNSSubscription extends CloudFormationResource {
21
+ Type: 'AWS::SNS::Subscription'
22
+ Properties: {
23
+ TopicArn: string | { Ref: string }
24
+ Protocol: 'http' | 'https' | 'email' | 'email-json' | 'sms' | 'sqs' | 'application' | 'lambda' | 'firehose'
25
+ Endpoint: string
26
+ FilterPolicy?: unknown
27
+ RawMessageDelivery?: boolean
28
+ }
29
+ }
30
+
31
+ export interface SNSTopicPolicy extends CloudFormationResource {
32
+ Type: 'AWS::SNS::TopicPolicy'
33
+ Properties: {
34
+ Topics: (string | { Ref: string })[]
35
+ PolicyDocument: {
36
+ Version: '2012-10-17'
37
+ Statement: Array<{
38
+ Effect: 'Allow' | 'Deny'
39
+ Principal: unknown
40
+ Action: string | string[]
41
+ Resource: string | string[]
42
+ }>
43
+ }
44
+ }
45
+ }
package/src/sqs.ts ADDED
@@ -0,0 +1,54 @@
1
+ import type { CloudFormationResource } from './index'
2
+
3
+ /**
4
+ * AWS SQS (Simple Queue Service) Types
5
+ */
6
+
7
+ export interface SQSQueue extends CloudFormationResource {
8
+ Type: 'AWS::SQS::Queue'
9
+ Properties?: {
10
+ QueueName?: string
11
+ DelaySeconds?: number
12
+ MaximumMessageSize?: number
13
+ MessageRetentionPeriod?: number
14
+ ReceiveMessageWaitTimeSeconds?: number
15
+ VisibilityTimeout?: number
16
+ KmsMasterKeyId?: string
17
+ KmsDataKeyReusePeriodSeconds?: number
18
+ SqsManagedSseEnabled?: boolean
19
+ FifoQueue?: boolean
20
+ ContentBasedDeduplication?: boolean
21
+ DeduplicationScope?: 'messageGroup' | 'queue'
22
+ FifoThroughputLimit?: 'perQueue' | 'perMessageGroupId'
23
+ RedrivePolicy?: {
24
+ deadLetterTargetArn: string
25
+ maxReceiveCount: number
26
+ }
27
+ RedriveAllowPolicy?: {
28
+ redrivePermission: 'allowAll' | 'denyAll' | 'byQueue'
29
+ sourceQueueArns?: string[]
30
+ }
31
+ Tags?: Array<{
32
+ Key: string
33
+ Value: string
34
+ }>
35
+ }
36
+ }
37
+
38
+ export interface SQSQueuePolicy extends CloudFormationResource {
39
+ Type: 'AWS::SQS::QueuePolicy'
40
+ Properties: {
41
+ Queues: Array<string | { Ref: string }>
42
+ PolicyDocument: {
43
+ Version: '2012-10-17'
44
+ Statement: Array<{
45
+ Sid?: string
46
+ Effect: 'Allow' | 'Deny'
47
+ Principal: unknown
48
+ Action: string | string[]
49
+ Resource: string | string[]
50
+ Condition?: unknown
51
+ }>
52
+ }
53
+ }
54
+ }
package/src/ssm.ts ADDED
@@ -0,0 +1,268 @@
1
+ /**
2
+ * AWS Systems Manager (SSM) Types
3
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SSM.html
4
+ */
5
+
6
+ import type { Tag } from './common'
7
+
8
+ /**
9
+ * AWS::SSM::Parameter
10
+ */
11
+ export interface SSMParameter {
12
+ Type: 'AWS::SSM::Parameter'
13
+ Properties: {
14
+ Name?: string
15
+ Type: 'String' | 'StringList' | 'SecureString'
16
+ Value: string
17
+ Description?: string
18
+ AllowedPattern?: string
19
+ DataType?: 'text' | 'aws:ec2:image'
20
+ Tier?: 'Standard' | 'Advanced' | 'Intelligent-Tiering'
21
+ Policies?: string
22
+ Tags?: Record<string, string>
23
+ }
24
+ }
25
+
26
+ /**
27
+ * AWS::SSM::Association
28
+ */
29
+ export interface SSMAssociation {
30
+ Type: 'AWS::SSM::Association'
31
+ Properties: {
32
+ Name: string
33
+ AssociationName?: string
34
+ DocumentVersion?: string
35
+ InstanceId?: string
36
+ Parameters?: Record<string, string[]>
37
+ ScheduleExpression?: string
38
+ Targets?: Array<{
39
+ Key: string
40
+ Values: string[]
41
+ }>
42
+ OutputLocation?: {
43
+ S3Location?: {
44
+ OutputS3BucketName?: string
45
+ OutputS3KeyPrefix?: string
46
+ OutputS3Region?: string
47
+ }
48
+ }
49
+ AutomationTargetParameterName?: string
50
+ MaxErrors?: string
51
+ MaxConcurrency?: string
52
+ ComplianceSeverity?: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW' | 'UNSPECIFIED'
53
+ SyncCompliance?: 'AUTO' | 'MANUAL'
54
+ WaitForSuccessTimeoutSeconds?: number
55
+ ApplyOnlyAtCronInterval?: boolean
56
+ CalendarNames?: string[]
57
+ ScheduleOffset?: number
58
+ }
59
+ }
60
+
61
+ /**
62
+ * AWS::SSM::Document
63
+ */
64
+ export interface SSMDocument {
65
+ Type: 'AWS::SSM::Document'
66
+ Properties: {
67
+ Name?: string
68
+ Content: any
69
+ DocumentType?: 'Command' | 'Policy' | 'Automation' | 'Session' | 'Package' | 'ApplicationConfiguration' | 'ApplicationConfigurationSchema' | 'DeploymentStrategy' | 'ChangeCalendar' | 'Automation.ChangeTemplate' | 'ProblemAnalysis' | 'ProblemAnalysisTemplate' | 'CloudFormation' | 'ConformancePackTemplate' | 'QuickSetup'
70
+ DocumentFormat?: 'YAML' | 'JSON' | 'TEXT'
71
+ TargetType?: string
72
+ VersionName?: string
73
+ Requires?: Array<{
74
+ Name: string
75
+ Version?: string
76
+ }>
77
+ Attachments?: Array<{
78
+ Key?: 'SourceUrl' | 'S3FileUrl' | 'AttachmentReference'
79
+ Name?: string
80
+ Values?: string[]
81
+ }>
82
+ Tags?: Tag[]
83
+ UpdateMethod?: 'Replace' | 'NewVersion'
84
+ }
85
+ }
86
+
87
+ /**
88
+ * AWS::SSM::MaintenanceWindow
89
+ */
90
+ export interface SSMMaintenanceWindow {
91
+ Type: 'AWS::SSM::MaintenanceWindow'
92
+ Properties: {
93
+ Name: string
94
+ Description?: string
95
+ AllowUnassociatedTargets: boolean
96
+ Cutoff: number
97
+ Duration: number
98
+ Schedule: string
99
+ ScheduleTimezone?: string
100
+ ScheduleOffset?: number
101
+ StartDate?: string
102
+ EndDate?: string
103
+ Tags?: Tag[]
104
+ }
105
+ }
106
+
107
+ /**
108
+ * AWS::SSM::MaintenanceWindowTarget
109
+ */
110
+ export interface SSMMaintenanceWindowTarget {
111
+ Type: 'AWS::SSM::MaintenanceWindowTarget'
112
+ Properties: {
113
+ WindowId: string | { Ref: string }
114
+ ResourceType: 'INSTANCE' | 'RESOURCE_GROUP'
115
+ Targets: Array<{
116
+ Key: string
117
+ Values: string[]
118
+ }>
119
+ OwnerInformation?: string
120
+ Name?: string
121
+ Description?: string
122
+ }
123
+ }
124
+
125
+ /**
126
+ * AWS::SSM::MaintenanceWindowTask
127
+ */
128
+ export interface SSMMaintenanceWindowTask {
129
+ Type: 'AWS::SSM::MaintenanceWindowTask'
130
+ Properties: {
131
+ WindowId: string | { Ref: string }
132
+ TaskType: 'RUN_COMMAND' | 'AUTOMATION' | 'LAMBDA' | 'STEP_FUNCTIONS'
133
+ TaskArn: string
134
+ ServiceRoleArn?: string
135
+ Targets?: Array<{
136
+ Key: string
137
+ Values: string[]
138
+ }>
139
+ MaxConcurrency?: string
140
+ MaxErrors?: string
141
+ Priority?: number
142
+ LoggingInfo?: {
143
+ S3Bucket: string
144
+ S3Prefix?: string
145
+ S3Region: string
146
+ }
147
+ Name?: string
148
+ Description?: string
149
+ TaskInvocationParameters?: {
150
+ RunCommand?: {
151
+ Comment?: string
152
+ DocumentHash?: string
153
+ DocumentHashType?: 'Sha256' | 'Sha1'
154
+ NotificationConfig?: {
155
+ NotificationArn?: string
156
+ NotificationEvents?: string[]
157
+ NotificationType?: 'Command' | 'Invocation'
158
+ }
159
+ OutputS3BucketName?: string
160
+ OutputS3KeyPrefix?: string
161
+ Parameters?: Record<string, string[]>
162
+ ServiceRoleArn?: string
163
+ TimeoutSeconds?: number
164
+ }
165
+ Automation?: {
166
+ DocumentVersion?: string
167
+ Parameters?: Record<string, string[]>
168
+ }
169
+ Lambda?: {
170
+ ClientContext?: string
171
+ Payload?: string
172
+ Qualifier?: string
173
+ }
174
+ StepFunctions?: {
175
+ Input?: string
176
+ Name?: string
177
+ }
178
+ }
179
+ }
180
+ }
181
+
182
+ /**
183
+ * AWS::SSM::PatchBaseline
184
+ */
185
+ export interface SSMPatchBaseline {
186
+ Type: 'AWS::SSM::PatchBaseline'
187
+ Properties: {
188
+ Name: string
189
+ Description?: string
190
+ OperatingSystem?: 'WINDOWS' | 'AMAZON_LINUX' | 'AMAZON_LINUX_2' | 'UBUNTU' | 'REDHAT_ENTERPRISE_LINUX' | 'SUSE' | 'CENTOS' | 'ORACLE_LINUX' | 'DEBIAN' | 'MACOS'
191
+ ApprovedPatches?: string[]
192
+ ApprovedPatchesComplianceLevel?: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW' | 'INFORMATIONAL' | 'UNSPECIFIED'
193
+ ApprovedPatchesEnableNonSecurity?: boolean
194
+ RejectedPatches?: string[]
195
+ RejectedPatchesAction?: 'ALLOW_AS_DEPENDENCY' | 'BLOCK'
196
+ ApprovalRules?: {
197
+ PatchRules: Array<{
198
+ PatchFilterGroup: {
199
+ PatchFilters: Array<{
200
+ Key: string
201
+ Values: string[]
202
+ }>
203
+ }
204
+ ComplianceLevel?: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW' | 'INFORMATIONAL' | 'UNSPECIFIED'
205
+ ApproveAfterDays?: number
206
+ ApproveUntilDate?: string
207
+ EnableNonSecurity?: boolean
208
+ }>
209
+ }
210
+ GlobalFilters?: {
211
+ PatchFilters: Array<{
212
+ Key: string
213
+ Values: string[]
214
+ }>
215
+ }
216
+ Sources?: Array<{
217
+ Name: string
218
+ Products: string[]
219
+ Configuration: string
220
+ }>
221
+ Tags?: Tag[]
222
+ }
223
+ }
224
+
225
+ /**
226
+ * AWS::SSM::ResourceDataSync
227
+ */
228
+ export interface SSMResourceDataSync {
229
+ Type: 'AWS::SSM::ResourceDataSync'
230
+ Properties: {
231
+ SyncName: string
232
+ SyncType?: string
233
+ BucketName?: string
234
+ BucketPrefix?: string
235
+ BucketRegion?: string
236
+ KMSKeyArn?: string
237
+ SyncFormat?: string
238
+ S3Destination?: {
239
+ BucketName: string
240
+ BucketPrefix?: string
241
+ BucketRegion: string
242
+ KMSKeyArn?: string
243
+ SyncFormat: string
244
+ DestinationDataSharing?: {
245
+ DestinationDataSharingType: string
246
+ }
247
+ }
248
+ SyncSource?: {
249
+ SourceType: string
250
+ SourceRegions: string[]
251
+ IncludeFutureRegions?: boolean
252
+ AwsOrganizationsSource?: {
253
+ OrganizationSourceType: string
254
+ OrganizationalUnits?: string[]
255
+ }
256
+ }
257
+ }
258
+ }
259
+
260
+ export type SSMResource =
261
+ | SSMParameter
262
+ | SSMAssociation
263
+ | SSMDocument
264
+ | SSMMaintenanceWindow
265
+ | SSMMaintenanceWindowTarget
266
+ | SSMMaintenanceWindowTask
267
+ | SSMPatchBaseline
268
+ | SSMResourceDataSync
package/src/waf.ts ADDED
@@ -0,0 +1,81 @@
1
+ import type { CloudFormationResource } from './index'
2
+
3
+ export interface WAFv2WebACL extends CloudFormationResource {
4
+ Type: 'AWS::WAFv2::WebACL'
5
+ Properties: {
6
+ Name: string
7
+ Scope: 'CLOUDFRONT' | 'REGIONAL'
8
+ DefaultAction: {
9
+ Allow?: Record<string, unknown>
10
+ Block?: Record<string, unknown>
11
+ }
12
+ Description?: string
13
+ Rules?: Array<{
14
+ Name: string
15
+ Priority: number
16
+ Statement: {
17
+ ByteMatchStatement?: {
18
+ SearchString: string
19
+ FieldToMatch: unknown
20
+ TextTransformations: Array<{
21
+ Priority: number
22
+ Type: string
23
+ }>
24
+ PositionalConstraint: 'EXACTLY' | 'STARTS_WITH' | 'ENDS_WITH' | 'CONTAINS' | 'CONTAINS_WORD'
25
+ }
26
+ GeoMatchStatement?: {
27
+ CountryCodes: string[]
28
+ }
29
+ IPSetReferenceStatement?: {
30
+ Arn: string
31
+ }
32
+ RateBasedStatement?: {
33
+ Limit: number
34
+ AggregateKeyType: 'IP' | 'FORWARDED_IP'
35
+ ScopeDownStatement?: unknown
36
+ }
37
+ ManagedRuleGroupStatement?: {
38
+ VendorName: string
39
+ Name: string
40
+ ExcludedRules?: Array<{
41
+ Name: string
42
+ }>
43
+ }
44
+ }
45
+ Action?: {
46
+ Allow?: Record<string, unknown>
47
+ Block?: Record<string, unknown>
48
+ Count?: Record<string, unknown>
49
+ }
50
+ VisibilityConfig: {
51
+ SampledRequestsEnabled: boolean
52
+ CloudWatchMetricsEnabled: boolean
53
+ MetricName: string
54
+ }
55
+ }>
56
+ VisibilityConfig: {
57
+ SampledRequestsEnabled: boolean
58
+ CloudWatchMetricsEnabled: boolean
59
+ MetricName: string
60
+ }
61
+ Tags?: Array<{
62
+ Key: string
63
+ Value: string
64
+ }>
65
+ }
66
+ }
67
+
68
+ export interface WAFv2IPSet extends CloudFormationResource {
69
+ Type: 'AWS::WAFv2::IPSet'
70
+ Properties: {
71
+ Name: string
72
+ Scope: 'CLOUDFRONT' | 'REGIONAL'
73
+ IPAddressVersion: 'IPV4' | 'IPV6'
74
+ Addresses: string[]
75
+ Description?: string
76
+ Tags?: Array<{
77
+ Key: string
78
+ Value: string
79
+ }>
80
+ }
81
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ "rootDir": "./src",
6
+ "composite": true,
7
+ "declaration": true,
8
+ "declarationMap": true
9
+ },
10
+ "include": ["src/**/*"],
11
+ "exclude": ["node_modules", "dist"]
12
+ }