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