@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/appsync.ts ADDED
@@ -0,0 +1,246 @@
1
+ /**
2
+ * AWS AppSync Types
3
+ * CloudFormation resource types for AWS AppSync (GraphQL)
4
+ */
5
+
6
+ import type { Tag } from './common'
7
+
8
+ export interface GraphQLApi {
9
+ Type: 'AWS::AppSync::GraphQLApi'
10
+ Properties: {
11
+ Name: string
12
+ AuthenticationType: 'API_KEY' | 'AWS_IAM' | 'AMAZON_COGNITO_USER_POOLS' | 'OPENID_CONNECT' | 'AWS_LAMBDA'
13
+
14
+ // Optional authentication providers
15
+ AdditionalAuthenticationProviders?: Array<{
16
+ AuthenticationType: 'API_KEY' | 'AWS_IAM' | 'AMAZON_COGNITO_USER_POOLS' | 'OPENID_CONNECT' | 'AWS_LAMBDA'
17
+ UserPoolConfig?: {
18
+ UserPoolId: string | { Ref: string }
19
+ AwsRegion?: string
20
+ AppIdClientRegex?: string
21
+ }
22
+ OpenIDConnectConfig?: {
23
+ Issuer: string
24
+ ClientId?: string
25
+ IatTTL?: number
26
+ AuthTTL?: number
27
+ }
28
+ LambdaAuthorizerConfig?: {
29
+ AuthorizerUri: string | { Ref: string }
30
+ AuthorizerResultTtlInSeconds?: number
31
+ IdentityValidationExpression?: string
32
+ }
33
+ }>
34
+
35
+ // Cognito User Pool config (if using AMAZON_COGNITO_USER_POOLS)
36
+ UserPoolConfig?: {
37
+ UserPoolId: string | { Ref: string }
38
+ AwsRegion?: string
39
+ DefaultAction: 'ALLOW' | 'DENY'
40
+ AppIdClientRegex?: string
41
+ }
42
+
43
+ // OpenID Connect config (if using OPENID_CONNECT)
44
+ OpenIDConnectConfig?: {
45
+ Issuer: string
46
+ ClientId?: string
47
+ IatTTL?: number
48
+ AuthTTL?: number
49
+ }
50
+
51
+ // Lambda authorizer config (if using AWS_LAMBDA)
52
+ LambdaAuthorizerConfig?: {
53
+ AuthorizerUri: string | { Ref: string }
54
+ AuthorizerResultTtlInSeconds?: number
55
+ IdentityValidationExpression?: string
56
+ }
57
+
58
+ // Logging
59
+ LogConfig?: {
60
+ CloudWatchLogsRoleArn: string | { Ref: string }
61
+ FieldLogLevel: 'NONE' | 'ERROR' | 'ALL'
62
+ ExcludeVerboseContent?: boolean
63
+ }
64
+
65
+ // X-Ray tracing
66
+ XrayEnabled?: boolean
67
+
68
+ Tags?: Tag[]
69
+ }
70
+ DeletionPolicy?: 'Delete' | 'Retain'
71
+ UpdateReplacePolicy?: 'Delete' | 'Retain'
72
+ }
73
+
74
+ export interface GraphQLSchema {
75
+ Type: 'AWS::AppSync::GraphQLSchema'
76
+ Properties: {
77
+ ApiId: string | { Ref: string }
78
+ Definition?: string
79
+ DefinitionS3Location?: string
80
+ }
81
+ DependsOn?: string | string[]
82
+ }
83
+
84
+ export interface DataSource {
85
+ Type: 'AWS::AppSync::DataSource'
86
+ Properties: {
87
+ ApiId: string | { Ref: string }
88
+ Name: string
89
+ Type: 'AWS_LAMBDA' | 'AMAZON_DYNAMODB' | 'AMAZON_ELASTICSEARCH' | 'AMAZON_OPENSEARCH_SERVICE' | 'HTTP' | 'RELATIONAL_DATABASE' | 'NONE'
90
+ ServiceRoleArn?: string | { Ref: string }
91
+
92
+ // Lambda config (if Type = AWS_LAMBDA)
93
+ LambdaConfig?: {
94
+ LambdaFunctionArn: string | { Ref: string }
95
+ }
96
+
97
+ // DynamoDB config (if Type = AMAZON_DYNAMODB)
98
+ DynamoDBConfig?: {
99
+ TableName: string | { Ref: string }
100
+ AwsRegion: string
101
+ UseCallerCredentials?: boolean
102
+ DeltaSyncConfig?: {
103
+ BaseTableTTL: number
104
+ DeltaSyncTableName: string | { Ref: string }
105
+ DeltaSyncTableTTL: number
106
+ }
107
+ Versioned?: boolean
108
+ }
109
+
110
+ // OpenSearch config (if Type = AMAZON_OPENSEARCH_SERVICE)
111
+ OpenSearchServiceConfig?: {
112
+ AwsRegion: string
113
+ Endpoint: string | { 'Fn::GetAtt': [string, string] }
114
+ }
115
+
116
+ // HTTP config (if Type = HTTP)
117
+ HttpConfig?: {
118
+ Endpoint: string
119
+ AuthorizationConfig?: {
120
+ AuthorizationType: 'AWS_IAM'
121
+ AwsIamConfig?: {
122
+ SigningRegion?: string
123
+ SigningServiceName?: string
124
+ }
125
+ }
126
+ }
127
+
128
+ // RDS config (if Type = RELATIONAL_DATABASE)
129
+ RelationalDatabaseConfig?: {
130
+ RelationalDatabaseSourceType: 'RDS_HTTP_ENDPOINT'
131
+ RdsHttpEndpointConfig?: {
132
+ AwsRegion: string
133
+ DbClusterIdentifier: string | { Ref: string }
134
+ DatabaseName?: string
135
+ Schema?: string
136
+ AwsSecretStoreArn: string | { Ref: string }
137
+ }
138
+ }
139
+
140
+ Description?: string
141
+ }
142
+ DependsOn?: string | string[]
143
+ }
144
+
145
+ export interface Resolver {
146
+ Type: 'AWS::AppSync::Resolver'
147
+ Properties: {
148
+ ApiId: string | { Ref: string }
149
+ TypeName: string // e.g., 'Query', 'Mutation', 'Subscription'
150
+ FieldName: string
151
+ DataSourceName?: string | { Ref: string }
152
+
153
+ // Request/Response mapping templates (VTL)
154
+ RequestMappingTemplate?: string
155
+ ResponseMappingTemplate?: string
156
+
157
+ // Or use S3 location
158
+ RequestMappingTemplateS3Location?: string
159
+ ResponseMappingTemplateS3Location?: string
160
+
161
+ // Pipeline resolvers
162
+ Kind?: 'UNIT' | 'PIPELINE'
163
+ PipelineConfig?: {
164
+ Functions?: Array<string | { Ref: string }>
165
+ }
166
+
167
+ // Caching
168
+ CachingConfig?: {
169
+ CachingKeys?: string[]
170
+ Ttl?: number
171
+ }
172
+
173
+ // Sync config (for subscriptions)
174
+ SyncConfig?: {
175
+ ConflictDetection: 'VERSION' | 'NONE'
176
+ ConflictHandler?: 'OPTIMISTIC_CONCURRENCY' | 'LAMBDA' | 'AUTOMERGE'
177
+ LambdaConflictHandlerConfig?: {
178
+ LambdaConflictHandlerArn: string | { Ref: string }
179
+ }
180
+ }
181
+
182
+ // Code (for JavaScript resolvers)
183
+ Code?: string
184
+ CodeS3Location?: string
185
+ Runtime?: {
186
+ Name: 'APPSYNC_JS'
187
+ RuntimeVersion: string
188
+ }
189
+ }
190
+ DependsOn?: string | string[]
191
+ }
192
+
193
+ export interface FunctionConfiguration {
194
+ Type: 'AWS::AppSync::FunctionConfiguration'
195
+ Properties: {
196
+ ApiId: string | { Ref: string }
197
+ Name: string
198
+ DataSourceName: string | { Ref: string }
199
+ FunctionVersion?: string
200
+
201
+ // Request/Response mapping templates
202
+ RequestMappingTemplate?: string
203
+ ResponseMappingTemplate?: string
204
+ RequestMappingTemplateS3Location?: string
205
+ ResponseMappingTemplateS3Location?: string
206
+
207
+ // Code (for JavaScript functions)
208
+ Code?: string
209
+ CodeS3Location?: string
210
+ Runtime?: {
211
+ Name: 'APPSYNC_JS'
212
+ RuntimeVersion: string
213
+ }
214
+
215
+ Description?: string
216
+ }
217
+ DependsOn?: string | string[]
218
+ }
219
+
220
+ export interface ApiKey {
221
+ Type: 'AWS::AppSync::ApiKey'
222
+ Properties: {
223
+ ApiId: string | { Ref: string }
224
+ Description?: string
225
+ Expires?: number // Unix timestamp
226
+ }
227
+ DependsOn?: string | string[]
228
+ }
229
+
230
+ export interface DomainName {
231
+ Type: 'AWS::AppSync::DomainName'
232
+ Properties: {
233
+ DomainName: string
234
+ CertificateArn: string | { Ref: string }
235
+ Description?: string
236
+ }
237
+ }
238
+
239
+ export interface DomainNameApiAssociation {
240
+ Type: 'AWS::AppSync::DomainNameApiAssociation'
241
+ Properties: {
242
+ DomainName: string | { Ref: string }
243
+ ApiId: string | { Ref: string }
244
+ }
245
+ DependsOn?: string | string[]
246
+ }
package/src/athena.ts ADDED
@@ -0,0 +1,102 @@
1
+ /**
2
+ * AWS Athena Types
3
+ * CloudFormation resource types for AWS Athena (log analytics, data querying)
4
+ */
5
+
6
+ import type { Tag } from './common'
7
+
8
+ export interface WorkGroup {
9
+ Type: 'AWS::Athena::WorkGroup'
10
+ Properties: {
11
+ Name: string
12
+ Description?: string
13
+ State?: 'ENABLED' | 'DISABLED'
14
+
15
+ WorkGroupConfiguration?: {
16
+ // Query result location
17
+ ResultConfiguration?: {
18
+ OutputLocation?: string
19
+ EncryptionConfiguration?: {
20
+ EncryptionOption: 'SSE_S3' | 'SSE_KMS' | 'CSE_KMS'
21
+ KmsKey?: string | { Ref: string }
22
+ }
23
+ ExpectedBucketOwner?: string
24
+ AclConfiguration?: {
25
+ S3AclOption: 'BUCKET_OWNER_FULL_CONTROL'
26
+ }
27
+ }
28
+
29
+ // Performance settings
30
+ EnforceWorkGroupConfiguration?: boolean
31
+ PublishCloudWatchMetricsEnabled?: boolean
32
+ BytesScannedCutoffPerQuery?: number
33
+ RequesterPaysEnabled?: boolean
34
+
35
+ // Engine version
36
+ EngineVersion?: {
37
+ SelectedEngineVersion?: string
38
+ EffectiveEngineVersion?: string
39
+ }
40
+
41
+ // Execution role (for federated queries)
42
+ ExecutionRole?: string | { Ref: string }
43
+
44
+ // Additional configurations
45
+ AdditionalConfiguration?: string
46
+ CustomerContentEncryptionConfiguration?: {
47
+ KmsKey: string | { Ref: string }
48
+ }
49
+ }
50
+
51
+ Tags?: Tag[]
52
+ }
53
+ DeletionPolicy?: 'Delete' | 'Retain'
54
+ UpdateReplacePolicy?: 'Delete' | 'Retain'
55
+ }
56
+
57
+ export interface DataCatalog {
58
+ Type: 'AWS::Athena::DataCatalog'
59
+ Properties: {
60
+ Name: string
61
+ Type: 'LAMBDA' | 'GLUE' | 'HIVE'
62
+ Description?: string
63
+ Parameters?: Record<string, string>
64
+ Tags?: Tag[]
65
+ }
66
+ }
67
+
68
+ export interface NamedQuery {
69
+ Type: 'AWS::Athena::NamedQuery'
70
+ Properties: {
71
+ Name?: string
72
+ Database: string
73
+ QueryString: string
74
+ Description?: string
75
+ WorkGroup?: string
76
+ }
77
+ }
78
+
79
+ export interface PreparedStatement {
80
+ Type: 'AWS::Athena::PreparedStatement'
81
+ Properties: {
82
+ StatementName: string
83
+ WorkGroup: string
84
+ QueryStatement: string
85
+ Description?: string
86
+ }
87
+ DependsOn?: string | string[]
88
+ }
89
+
90
+ export interface CapacityReservation {
91
+ Type: 'AWS::Athena::CapacityReservation'
92
+ Properties: {
93
+ Name: string
94
+ TargetDpus: number
95
+ CapacityAssignmentConfiguration?: {
96
+ CapacityAssignments?: Array<{
97
+ WorkGroupNames?: string[]
98
+ }>
99
+ }
100
+ Tags?: Tag[]
101
+ }
102
+ }
@@ -0,0 +1,201 @@
1
+ /**
2
+ * AWS Auto Scaling Types
3
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AutoScaling.html
4
+ */
5
+
6
+ import type { Tag } from './common'
7
+
8
+ /**
9
+ * AWS::AutoScaling::AutoScalingGroup
10
+ */
11
+ export interface AutoScalingGroup {
12
+ Type: 'AWS::AutoScaling::AutoScalingGroup'
13
+ Properties: {
14
+ AutoScalingGroupName?: string
15
+ MinSize: string | number
16
+ MaxSize: string | number
17
+ DesiredCapacity?: string | number
18
+ DefaultInstanceWarmup?: number
19
+ HealthCheckType?: 'EC2' | 'ELB'
20
+ HealthCheckGracePeriod?: number
21
+ LaunchTemplate?: {
22
+ LaunchTemplateId?: string | { Ref: string }
23
+ LaunchTemplateName?: string
24
+ Version: string | { 'Fn::GetAtt': [string, string] }
25
+ }
26
+ LaunchConfigurationName?: string | { Ref: string }
27
+ AvailabilityZones?: string[] | { 'Fn::GetAZs': string }
28
+ VPCZoneIdentifier?: string[] | { Ref: string }
29
+ TargetGroupARNs?: Array<string | { Ref: string }>
30
+ LoadBalancerNames?: Array<string | { Ref: string }>
31
+ TerminationPolicies?: Array<'OldestInstance' | 'NewestInstance' | 'OldestLaunchConfiguration' | 'ClosestToNextInstanceHour' | 'Default' | 'OldestLaunchTemplate' | 'AllocationStrategy'>
32
+ NewInstancesProtectedFromScaleIn?: boolean
33
+ Tags?: Array<Tag & { PropagateAtLaunch: boolean }>
34
+ MetricsCollection?: Array<{
35
+ Granularity: string
36
+ Metrics?: string[]
37
+ }>
38
+ Cooldown?: string | number
39
+ CapacityRebalance?: boolean
40
+ }
41
+ DependsOn?: string | string[]
42
+ CreationPolicy?: {
43
+ ResourceSignal?: {
44
+ Count?: number
45
+ Timeout?: string
46
+ }
47
+ AutoScalingCreationPolicy?: {
48
+ MinSuccessfulInstancesPercent?: number
49
+ }
50
+ }
51
+ UpdatePolicy?: {
52
+ AutoScalingReplacingUpdate?: {
53
+ WillReplace?: boolean
54
+ }
55
+ AutoScalingRollingUpdate?: {
56
+ MaxBatchSize?: number
57
+ MinInstancesInService?: number
58
+ MinSuccessfulInstancesPercent?: number
59
+ PauseTime?: string
60
+ SuspendProcesses?: string[]
61
+ WaitOnResourceSignals?: boolean
62
+ }
63
+ AutoScalingScheduledAction?: {
64
+ IgnoreUnmodifiedGroupSizeProperties?: boolean
65
+ }
66
+ }
67
+ }
68
+
69
+ /**
70
+ * AWS::AutoScaling::LaunchConfiguration
71
+ */
72
+ export interface AutoScalingLaunchConfiguration {
73
+ Type: 'AWS::AutoScaling::LaunchConfiguration'
74
+ Properties: {
75
+ LaunchConfigurationName?: string
76
+ ImageId: string
77
+ InstanceType: string
78
+ KeyName?: string
79
+ SecurityGroups?: Array<string | { Ref: string }>
80
+ UserData?: string | { 'Fn::Base64': any }
81
+ IamInstanceProfile?: string | { Ref: string } | { 'Fn::GetAtt': [string, string] }
82
+ BlockDeviceMappings?: Array<{
83
+ DeviceName: string
84
+ Ebs?: {
85
+ DeleteOnTermination?: boolean
86
+ Encrypted?: boolean
87
+ Iops?: number
88
+ SnapshotId?: string
89
+ Throughput?: number
90
+ VolumeSize?: number
91
+ VolumeType?: 'gp2' | 'gp3' | 'io1' | 'io2' | 'sc1' | 'st1' | 'standard'
92
+ }
93
+ NoDevice?: boolean
94
+ VirtualName?: string
95
+ }>
96
+ AssociatePublicIpAddress?: boolean
97
+ EbsOptimized?: boolean
98
+ InstanceMonitoring?: boolean
99
+ PlacementTenancy?: 'default' | 'dedicated'
100
+ SpotPrice?: string
101
+ }
102
+ }
103
+
104
+ /**
105
+ * AWS::AutoScaling::ScalingPolicy
106
+ */
107
+ export interface AutoScalingScalingPolicy {
108
+ Type: 'AWS::AutoScaling::ScalingPolicy'
109
+ Properties: {
110
+ PolicyName?: string
111
+ PolicyType?: 'TargetTrackingScaling' | 'StepScaling' | 'SimpleScaling'
112
+ AutoScalingGroupName: string | { Ref: string }
113
+ AdjustmentType?: 'ChangeInCapacity' | 'ExactCapacity' | 'PercentChangeInCapacity'
114
+ ScalingAdjustment?: number
115
+ Cooldown?: string | number
116
+ MinAdjustmentMagnitude?: number
117
+ MetricAggregationType?: 'Minimum' | 'Maximum' | 'Average'
118
+ EstimatedInstanceWarmup?: number
119
+ TargetTrackingConfiguration?: {
120
+ PredefinedMetricSpecification?: {
121
+ PredefinedMetricType: 'ASGAverageCPUUtilization' | 'ASGAverageNetworkIn' | 'ASGAverageNetworkOut' | 'ALBRequestCountPerTarget'
122
+ ResourceLabel?: string
123
+ }
124
+ CustomizedMetricSpecification?: {
125
+ MetricName: string
126
+ Namespace: string
127
+ Statistic: 'Average' | 'Minimum' | 'Maximum' | 'SampleCount' | 'Sum'
128
+ Unit?: string
129
+ Dimensions?: Array<{
130
+ Name: string
131
+ Value: string
132
+ }>
133
+ }
134
+ TargetValue: number
135
+ DisableScaleIn?: boolean
136
+ }
137
+ StepAdjustments?: Array<{
138
+ MetricIntervalLowerBound?: number
139
+ MetricIntervalUpperBound?: number
140
+ ScalingAdjustment: number
141
+ }>
142
+ }
143
+ }
144
+
145
+ /**
146
+ * AWS::AutoScaling::ScheduledAction
147
+ */
148
+ export interface AutoScalingScheduledAction {
149
+ Type: 'AWS::AutoScaling::ScheduledAction'
150
+ Properties: {
151
+ AutoScalingGroupName: string | { Ref: string }
152
+ DesiredCapacity?: number
153
+ MinSize?: number
154
+ MaxSize?: number
155
+ Recurrence?: string
156
+ StartTime?: string
157
+ EndTime?: string
158
+ TimeZone?: string
159
+ }
160
+ }
161
+
162
+ /**
163
+ * AWS::AutoScaling::LifecycleHook
164
+ */
165
+ export interface AutoScalingLifecycleHook {
166
+ Type: 'AWS::AutoScaling::LifecycleHook'
167
+ Properties: {
168
+ LifecycleHookName?: string
169
+ AutoScalingGroupName: string | { Ref: string }
170
+ LifecycleTransition: 'autoscaling:EC2_INSTANCE_LAUNCHING' | 'autoscaling:EC2_INSTANCE_TERMINATING'
171
+ DefaultResult?: 'CONTINUE' | 'ABANDON'
172
+ HeartbeatTimeout?: number
173
+ NotificationTargetARN?: string | { Ref: string } | { 'Fn::GetAtt': [string, string] }
174
+ RoleARN?: string | { 'Fn::GetAtt': [string, string] }
175
+ NotificationMetadata?: string
176
+ }
177
+ }
178
+
179
+ /**
180
+ * AWS::AutoScaling::WarmPool
181
+ */
182
+ export interface AutoScalingWarmPool {
183
+ Type: 'AWS::AutoScaling::WarmPool'
184
+ Properties: {
185
+ AutoScalingGroupName: string | { Ref: string }
186
+ MaxGroupPreparedCapacity?: number
187
+ MinSize?: number
188
+ PoolState?: 'Hibernated' | 'Running' | 'Stopped'
189
+ InstanceReusePolicy?: {
190
+ ReuseOnScaleIn?: boolean
191
+ }
192
+ }
193
+ }
194
+
195
+ export type AutoScalingResource =
196
+ | AutoScalingGroup
197
+ | AutoScalingLaunchConfiguration
198
+ | AutoScalingScalingPolicy
199
+ | AutoScalingScheduledAction
200
+ | AutoScalingLifecycleHook
201
+ | AutoScalingWarmPool