@stacksjs/ts-cloud-aws-types 0.1.6 → 0.1.7

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.
@@ -0,0 +1,228 @@
1
+ import type { ResourceBase, Tags } from './common';
2
+ /**
3
+ * Amazon Connect Instance
4
+ */
5
+ export declare interface ConnectInstance extends ResourceBase {
6
+ Type: 'AWS::Connect::Instance'
7
+ Properties: {
8
+ InstanceAlias: string
9
+ IdentityManagementType: 'SAML' | 'CONNECT_MANAGED' | 'EXISTING_DIRECTORY'
10
+ Attributes: {
11
+ InboundCalls: boolean
12
+ OutboundCalls: boolean
13
+ ContactflowLogs?: boolean
14
+ ContactLens?: boolean
15
+ AutoResolveBestVoices?: boolean
16
+ UseCustomTTSVoices?: boolean
17
+ EarlyMedia?: boolean
18
+ }
19
+ DirectoryId?: string
20
+ Tags?: Tags
21
+ }
22
+ }
23
+ /**
24
+ * Amazon Connect Hours of Operation
25
+ */
26
+ export declare interface ConnectHoursOfOperation extends ResourceBase {
27
+ Type: 'AWS::Connect::HoursOfOperation'
28
+ Properties: {
29
+ InstanceArn: string
30
+ Name: string
31
+ TimeZone: string
32
+ Config: Array<{
33
+ Day: 'SUNDAY' | 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY'
34
+ StartTime: { Hours: number; Minutes: number }
35
+ EndTime: { Hours: number; Minutes: number }
36
+ }>
37
+ Description?: string
38
+ Tags?: Tags
39
+ }
40
+ }
41
+ /**
42
+ * Amazon Connect Queue
43
+ */
44
+ export declare interface ConnectQueue extends ResourceBase {
45
+ Type: 'AWS::Connect::Queue'
46
+ Properties: {
47
+ InstanceArn: string
48
+ Name: string
49
+ HoursOfOperationArn: string
50
+ Description?: string
51
+ MaxContacts?: number
52
+ OutboundCallerConfig?: {
53
+ OutboundCallerIdName?: string
54
+ OutboundCallerIdNumberId?: string
55
+ OutboundFlowId?: string
56
+ }
57
+ QuickConnectArns?: string[]
58
+ Status?: 'ENABLED' | 'DISABLED'
59
+ Tags?: Tags
60
+ }
61
+ }
62
+ /**
63
+ * Amazon Connect Contact Flow
64
+ */
65
+ export declare interface ConnectContactFlow extends ResourceBase {
66
+ Type: 'AWS::Connect::ContactFlow'
67
+ Properties: {
68
+ InstanceArn: string
69
+ Name: string
70
+ Type: 'CONTACT_FLOW' | 'CUSTOMER_QUEUE' | 'CUSTOMER_HOLD' | 'CUSTOMER_WHISPER' | 'AGENT_HOLD' | 'AGENT_WHISPER' | 'OUTBOUND_WHISPER' | 'AGENT_TRANSFER' | 'QUEUE_TRANSFER'
71
+ Content: string
72
+ Description?: string
73
+ State?: 'ACTIVE' | 'ARCHIVED'
74
+ Tags?: Tags
75
+ }
76
+ }
77
+ /**
78
+ * Amazon Connect Contact Flow Module
79
+ */
80
+ export declare interface ConnectContactFlowModule extends ResourceBase {
81
+ Type: 'AWS::Connect::ContactFlowModule'
82
+ Properties: {
83
+ InstanceArn: string
84
+ Name: string
85
+ Content: string
86
+ Description?: string
87
+ State?: 'ACTIVE' | 'ARCHIVED'
88
+ Tags?: Tags
89
+ }
90
+ }
91
+ /**
92
+ * Amazon Connect Phone Number
93
+ */
94
+ export declare interface ConnectPhoneNumber extends ResourceBase {
95
+ Type: 'AWS::Connect::PhoneNumber'
96
+ Properties: {
97
+ TargetArn: string
98
+ Type: 'TOLL_FREE' | 'DID' | 'UIFN' | 'SHARED' | 'THIRD_PARTY_TF' | 'THIRD_PARTY_DID'
99
+ CountryCode: string
100
+ Description?: string
101
+ Prefix?: string
102
+ Tags?: Tags
103
+ }
104
+ }
105
+ /**
106
+ * Amazon Connect Routing Profile
107
+ */
108
+ export declare interface ConnectRoutingProfile extends ResourceBase {
109
+ Type: 'AWS::Connect::RoutingProfile'
110
+ Properties: {
111
+ InstanceArn: string
112
+ Name: string
113
+ DefaultOutboundQueueArn: string
114
+ MediaConcurrencies: Array<{
115
+ Channel: 'VOICE' | 'CHAT' | 'TASK'
116
+ Concurrency: number
117
+ CrossChannelBehavior?: {
118
+ BehaviorType: 'ROUTE_CURRENT_CHANNEL_ONLY' | 'ROUTE_ANY_CHANNEL'
119
+ }
120
+ }>
121
+ Description?: string
122
+ QueueConfigs?: Array<{
123
+ QueueReference: {
124
+ QueueArn: string
125
+ Channel: 'VOICE' | 'CHAT' | 'TASK'
126
+ }
127
+ Priority: number
128
+ Delay: number
129
+ }>
130
+ Tags?: Tags
131
+ }
132
+ }
133
+ /**
134
+ * Amazon Connect User
135
+ */
136
+ export declare interface ConnectUser extends ResourceBase {
137
+ Type: 'AWS::Connect::User'
138
+ Properties: {
139
+ InstanceArn: string
140
+ Username: string
141
+ PhoneConfig: {
142
+ PhoneType: 'SOFT_PHONE' | 'DESK_PHONE'
143
+ AutoAccept?: boolean
144
+ AfterContactWorkTimeLimit?: number
145
+ DeskPhoneNumber?: string
146
+ }
147
+ RoutingProfileArn: string
148
+ SecurityProfileArns: string[]
149
+ DirectoryUserId?: string
150
+ HierarchyGroupArn?: string
151
+ IdentityInfo?: {
152
+ Email?: string
153
+ FirstName?: string
154
+ LastName?: string
155
+ Mobile?: string
156
+ SecondaryEmail?: string
157
+ }
158
+ Password?: string
159
+ Tags?: Tags
160
+ }
161
+ }
162
+ /**
163
+ * Amazon Connect Quick Connect
164
+ */
165
+ export declare interface ConnectQuickConnect extends ResourceBase {
166
+ Type: 'AWS::Connect::QuickConnect'
167
+ Properties: {
168
+ InstanceArn: string
169
+ Name: string
170
+ QuickConnectConfig: {
171
+ QuickConnectType: 'USER' | 'QUEUE' | 'PHONE_NUMBER'
172
+ UserConfig?: {
173
+ ContactFlowArn: string
174
+ UserArn: string
175
+ }
176
+ QueueConfig?: {
177
+ ContactFlowArn: string
178
+ QueueArn: string
179
+ }
180
+ PhoneConfig?: {
181
+ PhoneNumber: string
182
+ }
183
+ }
184
+ Description?: string
185
+ Tags?: Tags
186
+ }
187
+ }
188
+ /**
189
+ * Amazon Connect Integration Association
190
+ */
191
+ export declare interface ConnectIntegrationAssociation extends ResourceBase {
192
+ Type: 'AWS::Connect::IntegrationAssociation'
193
+ Properties: {
194
+ InstanceId: string
195
+ IntegrationArn: string
196
+ IntegrationType: 'LEX_BOT' | 'LAMBDA_FUNCTION' | 'APPLICATION'
197
+ }
198
+ }
199
+ /**
200
+ * Amazon Connect Task Template
201
+ */
202
+ export declare interface ConnectTaskTemplate extends ResourceBase {
203
+ Type: 'AWS::Connect::TaskTemplate'
204
+ Properties: {
205
+ InstanceArn: string
206
+ Name: string
207
+ Fields?: Array<{
208
+ Id: { Name: string }
209
+ Type: 'NAME' | 'DESCRIPTION' | 'SCHEDULED_TIME' | 'QUICK_CONNECT' | 'URL' | 'NUMBER' | 'TEXT' | 'TEXT_AREA' | 'DATE_TIME' | 'BOOLEAN' | 'SINGLE_SELECT' | 'EMAIL'
210
+ Description?: string
211
+ SingleSelectOptions?: string[]
212
+ }>
213
+ Constraints?: {
214
+ RequiredFields?: Array<{ Id: { Name: string } }>
215
+ ReadOnlyFields?: Array<{ Id: { Name: string } }>
216
+ InvisibleFields?: Array<{ Id: { Name: string } }>
217
+ }
218
+ Defaults?: Array<{
219
+ Id: { Name: string }
220
+ DefaultValue: string
221
+ }>
222
+ Description?: string
223
+ ContactFlowArn?: string
224
+ Status?: 'ACTIVE' | 'INACTIVE'
225
+ ClientToken?: string
226
+ Tags?: Tags
227
+ }
228
+ }
@@ -0,0 +1,58 @@
1
+ import type { CloudFormationResource } from './index';
2
+ export declare interface DynamoDBKeySchemaElement {
3
+ AttributeName: string
4
+ KeyType: 'HASH' | 'RANGE'
5
+ }
6
+ export declare interface DynamoDBProjection {
7
+ ProjectionType: 'ALL' | 'KEYS_ONLY' | 'INCLUDE'
8
+ NonKeyAttributes?: string[]
9
+ }
10
+ export declare interface DynamoDBProvisionedThroughput {
11
+ ReadCapacityUnits: number
12
+ WriteCapacityUnits: number
13
+ }
14
+ export declare interface DynamoDBGlobalSecondaryIndex {
15
+ IndexName: string
16
+ KeySchema: DynamoDBKeySchemaElement[]
17
+ Projection: DynamoDBProjection
18
+ ProvisionedThroughput?: DynamoDBProvisionedThroughput
19
+ }
20
+ export declare interface DynamoDBLocalSecondaryIndex {
21
+ IndexName: string
22
+ KeySchema: DynamoDBKeySchemaElement[]
23
+ Projection: DynamoDBProjection
24
+ }
25
+ export declare interface DynamoDBTable extends CloudFormationResource {
26
+ Type: 'AWS::DynamoDB::Table'
27
+ Properties: {
28
+ TableName?: string
29
+ BillingMode?: 'PROVISIONED' | 'PAY_PER_REQUEST'
30
+ AttributeDefinitions: Array<{
31
+ AttributeName: string
32
+ AttributeType: 'S' | 'N' | 'B'
33
+ }>
34
+ KeySchema: DynamoDBKeySchemaElement[]
35
+ ProvisionedThroughput?: DynamoDBProvisionedThroughput
36
+ GlobalSecondaryIndexes?: DynamoDBGlobalSecondaryIndex[]
37
+ LocalSecondaryIndexes?: DynamoDBLocalSecondaryIndex[]
38
+ StreamSpecification?: {
39
+ StreamViewType: 'NEW_IMAGE' | 'OLD_IMAGE' | 'NEW_AND_OLD_IMAGES' | 'KEYS_ONLY'
40
+ }
41
+ SSESpecification?: {
42
+ SSEEnabled: boolean
43
+ SSEType?: 'AES256' | 'KMS'
44
+ KMSMasterKeyId?: string
45
+ }
46
+ PointInTimeRecoverySpecification?: {
47
+ PointInTimeRecoveryEnabled: boolean
48
+ }
49
+ TimeToLiveSpecification?: {
50
+ AttributeName: string
51
+ Enabled: boolean
52
+ }
53
+ Tags?: Array<{
54
+ Key: string
55
+ Value: string
56
+ }>
57
+ }
58
+ }
package/dist/ec2.d.ts ADDED
@@ -0,0 +1,159 @@
1
+ import type { CloudFormationResource } from './index';
2
+ export declare interface EC2Instance extends CloudFormationResource {
3
+ Type: 'AWS::EC2::Instance'
4
+ Properties: {
5
+ ImageId: string
6
+ InstanceType: string
7
+ KeyName?: string
8
+ SecurityGroupIds?: string[]
9
+ SubnetId?: string
10
+ IamInstanceProfile?: string
11
+ UserData?: string
12
+ Tags?: Array<{
13
+ Key: string
14
+ Value: string
15
+ }>
16
+ BlockDeviceMappings?: Array<{
17
+ DeviceName: string
18
+ Ebs?: {
19
+ VolumeSize?: number
20
+ VolumeType?: 'gp2' | 'gp3' | 'io1' | 'io2' | 'sc1' | 'st1'
21
+ Encrypted?: boolean
22
+ DeleteOnTermination?: boolean
23
+ }
24
+ }>
25
+ }
26
+ }
27
+ export declare interface EC2SecurityGroup extends CloudFormationResource {
28
+ Type: 'AWS::EC2::SecurityGroup'
29
+ Properties: {
30
+ GroupName?: string
31
+ GroupDescription: string
32
+ VpcId?: string
33
+ SecurityGroupIngress?: Array<{
34
+ IpProtocol: string
35
+ FromPort?: number
36
+ ToPort?: number
37
+ CidrIp?: string
38
+ SourceSecurityGroupId?: string
39
+ Description?: string
40
+ }>
41
+ SecurityGroupEgress?: Array<{
42
+ IpProtocol: string
43
+ FromPort?: number
44
+ ToPort?: number
45
+ CidrIp?: string
46
+ DestinationSecurityGroupId?: string
47
+ Description?: string
48
+ }>
49
+ Tags?: Array<{
50
+ Key: string
51
+ Value: string
52
+ }>
53
+ }
54
+ }
55
+ export declare interface EC2VPC extends CloudFormationResource {
56
+ Type: 'AWS::EC2::VPC'
57
+ Properties: {
58
+ CidrBlock: string
59
+ EnableDnsHostnames?: boolean
60
+ EnableDnsSupport?: boolean
61
+ Tags?: Array<{
62
+ Key: string
63
+ Value: string
64
+ }>
65
+ }
66
+ }
67
+ export declare interface EC2Subnet extends CloudFormationResource {
68
+ Type: 'AWS::EC2::Subnet'
69
+ Properties: {
70
+ VpcId: string | { Ref: string }
71
+ CidrBlock: string
72
+ AvailabilityZone?: string
73
+ MapPublicIpOnLaunch?: boolean
74
+ Tags?: Array<{
75
+ Key: string
76
+ Value: string
77
+ }>
78
+ }
79
+ }
80
+ export declare interface EC2InternetGateway extends CloudFormationResource {
81
+ Type: 'AWS::EC2::InternetGateway'
82
+ Properties?: {
83
+ Tags?: Array<{
84
+ Key: string
85
+ Value: string
86
+ }>
87
+ }
88
+ }
89
+ export declare interface EC2NatGateway extends CloudFormationResource {
90
+ Type: 'AWS::EC2::NatGateway'
91
+ Properties: {
92
+ AllocationId: string | { 'Fn::GetAtt': [string, string] }
93
+ SubnetId: string | { Ref: string }
94
+ Tags?: Array<{
95
+ Key: string
96
+ Value: string
97
+ }>
98
+ }
99
+ }
100
+ export declare interface EC2RouteTable extends CloudFormationResource {
101
+ Type: 'AWS::EC2::RouteTable'
102
+ Properties: {
103
+ VpcId: string | { Ref: string }
104
+ Tags?: Array<{
105
+ Key: string
106
+ Value: string
107
+ }>
108
+ }
109
+ }
110
+ export declare interface EC2Route extends CloudFormationResource {
111
+ Type: 'AWS::EC2::Route'
112
+ Properties: {
113
+ RouteTableId: string | { Ref: string }
114
+ DestinationCidrBlock: string
115
+ GatewayId?: string | { Ref: string }
116
+ NatGatewayId?: string | { Ref: string }
117
+ InstanceId?: string | { Ref: string }
118
+ }
119
+ }
120
+ export declare interface EC2SubnetRouteTableAssociation extends CloudFormationResource {
121
+ Type: 'AWS::EC2::SubnetRouteTableAssociation'
122
+ Properties: {
123
+ SubnetId: string | { Ref: string }
124
+ RouteTableId: string | { Ref: string }
125
+ }
126
+ }
127
+ export declare interface EC2VPCGatewayAttachment extends CloudFormationResource {
128
+ Type: 'AWS::EC2::VPCGatewayAttachment'
129
+ Properties: {
130
+ VpcId: string | { Ref: string }
131
+ InternetGatewayId: string | { Ref: string }
132
+ }
133
+ }
134
+ export declare interface EC2EIP extends CloudFormationResource {
135
+ Type: 'AWS::EC2::EIP'
136
+ Properties: {
137
+ Domain?: 'vpc' | 'standard'
138
+ Tags?: Array<{
139
+ Key: string
140
+ Value: string
141
+ }>
142
+ }
143
+ }
144
+ export declare interface EC2FlowLog extends CloudFormationResource {
145
+ Type: 'AWS::EC2::FlowLog'
146
+ Properties: {
147
+ ResourceType: 'VPC' | 'Subnet' | 'NetworkInterface'
148
+ ResourceIds: string[] | Array<{ Ref: string }>
149
+ TrafficType: 'ACCEPT' | 'REJECT' | 'ALL'
150
+ LogDestinationType?: 'cloud-watch-logs' | 's3'
151
+ LogDestination?: string
152
+ LogGroupName?: string
153
+ DeliverLogsPermissionArn?: string
154
+ Tags?: Array<{
155
+ Key: string
156
+ Value: string
157
+ }>
158
+ }
159
+ }
package/dist/ecr.d.ts ADDED
@@ -0,0 +1,122 @@
1
+ import type { CloudFormationResource } from './index';
2
+ /**
3
+ * IAM Principal type for ECR policies
4
+ * Supports AWS accounts, services, or wildcard
5
+ */
6
+ export declare interface ECRPrincipal {
7
+ AWS?: string | string[]
8
+ Service?: string | string[]
9
+ }
10
+ export declare interface ECRRepository extends CloudFormationResource {
11
+ Type: 'AWS::ECR::Repository'
12
+ Properties?: {
13
+ RepositoryName?: string
14
+ ImageTagMutability?: 'MUTABLE' | 'IMMUTABLE'
15
+ ImageScanningConfiguration?: {
16
+ ScanOnPush?: boolean
17
+ }
18
+ EncryptionConfiguration?: {
19
+ EncryptionType: 'AES256' | 'KMS'
20
+ KmsKey?: string
21
+ }
22
+ LifecyclePolicy?: {
23
+ LifecyclePolicyText?: string
24
+ RegistryId?: string
25
+ }
26
+ RepositoryPolicyText?: {
27
+ Version: string
28
+ Statement: Array<{
29
+ Sid?: string
30
+ Effect: 'Allow' | 'Deny'
31
+ Principal: '*' | ECRPrincipal
32
+ Action: string | string[]
33
+ Condition?: Record<string, any>
34
+ }>
35
+ }
36
+ Tags?: Array<{
37
+ Key: string
38
+ Value: string
39
+ }>
40
+ }
41
+ }
42
+ export declare interface ECRLifecyclePolicy {
43
+ rules: Array<{
44
+ rulePriority: number
45
+ description?: string
46
+ selection: {
47
+ tagStatus: 'tagged' | 'untagged' | 'any'
48
+ tagPrefixList?: string[]
49
+ countType: 'imageCountMoreThan' | 'sinceImagePushed'
50
+ countNumber: number
51
+ countUnit?: 'days'
52
+ }
53
+ action: {
54
+ type: 'expire'
55
+ }
56
+ }>
57
+ }
58
+ export declare interface ECRReplicationConfiguration extends CloudFormationResource {
59
+ Type: 'AWS::ECR::ReplicationConfiguration'
60
+ Properties: {
61
+ ReplicationConfiguration: {
62
+ Rules: Array<{
63
+ Destinations: Array<{
64
+ Region: string
65
+ RegistryId: string
66
+ }>
67
+ RepositoryFilters?: Array<{
68
+ Filter: string
69
+ FilterType: 'PREFIX_MATCH'
70
+ }>
71
+ }>
72
+ }
73
+ }
74
+ }
75
+ export declare interface ECRRegistryPolicy extends CloudFormationResource {
76
+ Type: 'AWS::ECR::RegistryPolicy'
77
+ Properties: {
78
+ PolicyText: {
79
+ Version: string
80
+ Statement: Array<{
81
+ Sid?: string
82
+ Effect: 'Allow' | 'Deny'
83
+ Principal: '*' | { AWS: string | string[] }
84
+ Action: string | string[]
85
+ Resource?: string | string[]
86
+ }>
87
+ }
88
+ }
89
+ }
90
+ export declare interface ECRPullThroughCacheRule extends CloudFormationResource {
91
+ Type: 'AWS::ECR::PullThroughCacheRule'
92
+ Properties: {
93
+ EcrRepositoryPrefix?: string
94
+ UpstreamRegistryUrl?: string
95
+ }
96
+ }
97
+ export declare interface ECRPublicRepository extends CloudFormationResource {
98
+ Type: 'AWS::ECR::PublicRepository'
99
+ Properties?: {
100
+ RepositoryName?: string
101
+ RepositoryCatalogData?: {
102
+ UsageText?: string
103
+ AboutText?: string
104
+ OperatingSystems?: string[]
105
+ Architectures?: string[]
106
+ RepositoryDescription?: string
107
+ }
108
+ RepositoryPolicyText?: {
109
+ Version: string
110
+ Statement: Array<{
111
+ Sid?: string
112
+ Effect: 'Allow' | 'Deny'
113
+ Principal: '*' | { AWS: string | string[] }
114
+ Action: string | string[]
115
+ }>
116
+ }
117
+ Tags?: Array<{
118
+ Key: string
119
+ Value: string
120
+ }>
121
+ }
122
+ }
package/dist/ecs.d.ts ADDED
@@ -0,0 +1,126 @@
1
+ import type { CloudFormationResource } from './index';
2
+ export declare interface ECSCluster extends CloudFormationResource {
3
+ Type: 'AWS::ECS::Cluster'
4
+ Properties?: {
5
+ ClusterName?: string
6
+ CapacityProviders?: string[]
7
+ DefaultCapacityProviderStrategy?: Array<{
8
+ CapacityProvider: string
9
+ Weight?: number
10
+ Base?: number
11
+ }>
12
+ Configuration?: {
13
+ ExecuteCommandConfiguration?: {
14
+ Logging?: string
15
+ }
16
+ }
17
+ Tags?: Array<{
18
+ Key: string
19
+ Value: string
20
+ }>
21
+ }
22
+ }
23
+ export declare interface ECSTaskDefinition extends CloudFormationResource {
24
+ Type: 'AWS::ECS::TaskDefinition'
25
+ Properties: {
26
+ Family: string
27
+ TaskRoleArn?: string
28
+ ExecutionRoleArn?: string
29
+ NetworkMode?: 'bridge' | 'host' | 'awsvpc' | 'none'
30
+ RequiresCompatibilities?: ('EC2' | 'FARGATE')[]
31
+ Cpu?: string
32
+ Memory?: string
33
+ ContainerDefinitions: Array<{
34
+ Name: string
35
+ Image: string
36
+ Cpu?: number
37
+ Memory?: number
38
+ MemoryReservation?: number
39
+ Essential?: boolean
40
+ PortMappings?: Array<{
41
+ ContainerPort: number
42
+ HostPort?: number
43
+ Protocol?: 'tcp' | 'udp'
44
+ }>
45
+ Environment?: Array<{
46
+ Name: string
47
+ Value: string
48
+ }>
49
+ Secrets?: Array<{
50
+ Name: string
51
+ ValueFrom: string
52
+ }>
53
+ LogConfiguration?: {
54
+ LogDriver: 'awslogs' | 'fluentd' | 'gelf' | 'json-file' | 'journald' | 'logentries' | 'splunk' | 'syslog'
55
+ Options?: Record<string, string>
56
+ }
57
+ HealthCheck?: {
58
+ Command: string[]
59
+ Interval?: number
60
+ Timeout?: number
61
+ Retries?: number
62
+ StartPeriod?: number
63
+ }
64
+ MountPoints?: Array<{
65
+ SourceVolume: string
66
+ ContainerPath: string
67
+ ReadOnly?: boolean
68
+ }>
69
+ }>
70
+ Volumes?: Array<{
71
+ Name: string
72
+ Host?: {
73
+ SourcePath?: string
74
+ }
75
+ EFSVolumeConfiguration?: {
76
+ FileSystemId: string
77
+ RootDirectory?: string
78
+ TransitEncryption?: 'ENABLED' | 'DISABLED'
79
+ AuthorizationConfig?: {
80
+ AccessPointId?: string
81
+ IAM?: 'ENABLED' | 'DISABLED'
82
+ }
83
+ }
84
+ }>
85
+ Tags?: Array<{
86
+ Key: string
87
+ Value: string
88
+ }>
89
+ }
90
+ }
91
+ export declare interface ECSService extends CloudFormationResource {
92
+ Type: 'AWS::ECS::Service'
93
+ Properties: {
94
+ ServiceName?: string
95
+ Cluster?: string | { Ref: string }
96
+ TaskDefinition: string | { Ref: string }
97
+ DesiredCount?: number
98
+ LaunchType?: 'EC2' | 'FARGATE' | 'EXTERNAL'
99
+ PlatformVersion?: string
100
+ NetworkConfiguration?: {
101
+ AwsvpcConfiguration: {
102
+ Subnets: string[]
103
+ SecurityGroups?: string[]
104
+ AssignPublicIp?: 'ENABLED' | 'DISABLED'
105
+ }
106
+ }
107
+ LoadBalancers?: Array<{
108
+ TargetGroupArn: string | { Ref: string }
109
+ ContainerName: string
110
+ ContainerPort: number
111
+ }>
112
+ HealthCheckGracePeriodSeconds?: number
113
+ DeploymentConfiguration?: {
114
+ MaximumPercent?: number
115
+ MinimumHealthyPercent?: number
116
+ DeploymentCircuitBreaker?: {
117
+ Enable: boolean
118
+ Rollback: boolean
119
+ }
120
+ }
121
+ Tags?: Array<{
122
+ Key: string
123
+ Value: string
124
+ }>
125
+ }
126
+ }