@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/LICENSE.md +21 -0
- package/README.md +321 -0
- package/package.json +27 -0
- package/src/acm.ts +20 -0
- package/src/alb.ts +73 -0
- package/src/apigateway.ts +85 -0
- package/src/appsync.ts +246 -0
- package/src/athena.ts +102 -0
- package/src/autoscaling.ts +201 -0
- package/src/backup.ts +187 -0
- package/src/cloudwatch.ts +98 -0
- package/src/codedeploy.ts +132 -0
- package/src/cognito.ts +216 -0
- package/src/common.ts +20 -0
- package/src/connect.ts +243 -0
- package/src/dynamodb.ts +64 -0
- package/src/ec2.ts +171 -0
- package/src/ecr.ts +129 -0
- package/src/ecs.ts +129 -0
- package/src/efs.ts +57 -0
- package/src/elasticache.ts +92 -0
- package/src/eventbridge.ts +140 -0
- package/src/globalaccelerator.ts +57 -0
- package/src/glue.ts +241 -0
- package/src/iam.ts +142 -0
- package/src/index.ts +328 -0
- package/src/kinesis.ts +261 -0
- package/src/kms.ts +35 -0
- package/src/lambda.ts +42 -0
- package/src/opensearch.ts +147 -0
- package/src/pinpoint.ts +438 -0
- package/src/rds-proxy.ts +67 -0
- package/src/rds.ts +61 -0
- package/src/route53.ts +32 -0
- package/src/secrets-manager.ts +110 -0
- package/src/ses.ts +66 -0
- package/src/sns.ts +45 -0
- package/src/sqs.ts +54 -0
- package/src/ssm.ts +268 -0
- package/src/waf.ts +81 -0
- package/tsconfig.json +12 -0
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
|
+
}
|