@stacksjs/ts-cloud-aws-types 0.1.5 → 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.
package/dist/efs.d.ts ADDED
@@ -0,0 +1,54 @@
1
+ import type { CloudFormationResource } from './index';
2
+ export declare interface EFSFileSystem extends CloudFormationResource {
3
+ Type: 'AWS::EFS::FileSystem'
4
+ Properties?: {
5
+ Encrypted?: boolean
6
+ KmsKeyId?: string
7
+ LifecyclePolicies?: Array<{
8
+ TransitionToIA?: 'AFTER_7_DAYS' | 'AFTER_14_DAYS' | 'AFTER_30_DAYS' | 'AFTER_60_DAYS' | 'AFTER_90_DAYS'
9
+ TransitionToPrimaryStorageClass?: 'AFTER_1_ACCESS'
10
+ }>
11
+ PerformanceMode?: 'generalPurpose' | 'maxIO'
12
+ ThroughputMode?: 'bursting' | 'provisioned' | 'elastic'
13
+ ProvisionedThroughputInMibps?: number
14
+ BackupPolicy?: {
15
+ Status: 'ENABLED' | 'DISABLED'
16
+ }
17
+ FileSystemTags?: Array<{
18
+ Key: string
19
+ Value: string
20
+ }>
21
+ }
22
+ }
23
+ export declare interface EFSMountTarget extends CloudFormationResource {
24
+ Type: 'AWS::EFS::MountTarget'
25
+ Properties: {
26
+ FileSystemId: string | { Ref: string }
27
+ SubnetId: string
28
+ SecurityGroups: string[]
29
+ IpAddress?: string
30
+ }
31
+ }
32
+ export declare interface EFSAccessPoint extends CloudFormationResource {
33
+ Type: 'AWS::EFS::AccessPoint'
34
+ Properties: {
35
+ FileSystemId: string | { Ref: string }
36
+ PosixUser?: {
37
+ Uid: string
38
+ Gid: string
39
+ SecondaryGids?: string[]
40
+ }
41
+ RootDirectory?: {
42
+ Path?: string
43
+ CreationInfo?: {
44
+ OwnerUid: string
45
+ OwnerGid: string
46
+ Permissions: string
47
+ }
48
+ }
49
+ AccessPointTags?: Array<{
50
+ Key: string
51
+ Value: string
52
+ }>
53
+ }
54
+ }
@@ -0,0 +1,87 @@
1
+ import type { CloudFormationResource } from './index';
2
+ /**
3
+ * AWS ElastiCache Types
4
+ */
5
+ export declare interface ElastiCacheCluster extends CloudFormationResource {
6
+ Type: 'AWS::ElastiCache::CacheCluster'
7
+ Properties: {
8
+ ClusterName?: string
9
+ CacheNodeType: string
10
+ Engine: 'memcached' | 'redis'
11
+ EngineVersion?: string
12
+ NumCacheNodes: number
13
+ Port?: number
14
+ PreferredAvailabilityZone?: string
15
+ PreferredAvailabilityZones?: string[]
16
+ PreferredMaintenanceWindow?: string
17
+ CacheSubnetGroupName?: string | { Ref: string }
18
+ VpcSecurityGroupIds?: string[]
19
+ CacheParameterGroupName?: string | { Ref: string }
20
+ SnapshotRetentionLimit?: number
21
+ SnapshotWindow?: string
22
+ AutoMinorVersionUpgrade?: boolean
23
+ AZMode?: 'single-az' | 'cross-az'
24
+ NotificationTopicArn?: string
25
+ Tags?: Array<{
26
+ Key: string
27
+ Value: string
28
+ }>
29
+ }
30
+ }
31
+ export declare interface ElastiCacheReplicationGroup extends CloudFormationResource {
32
+ Type: 'AWS::ElastiCache::ReplicationGroup'
33
+ Properties: {
34
+ ReplicationGroupId?: string
35
+ ReplicationGroupDescription: string
36
+ Engine?: 'redis'
37
+ EngineVersion?: string
38
+ CacheNodeType: string
39
+ NumCacheClusters?: number
40
+ NumNodeGroups?: number
41
+ ReplicasPerNodeGroup?: number
42
+ AutomaticFailoverEnabled?: boolean
43
+ MultiAZEnabled?: boolean
44
+ PreferredCacheClusterAZs?: string[]
45
+ Port?: number
46
+ CacheSubnetGroupName?: string | { Ref: string }
47
+ SecurityGroupIds?: string[]
48
+ CacheParameterGroupName?: string | { Ref: string }
49
+ SnapshotRetentionLimit?: number
50
+ SnapshotWindow?: string
51
+ PreferredMaintenanceWindow?: string
52
+ AtRestEncryptionEnabled?: boolean
53
+ TransitEncryptionEnabled?: boolean
54
+ AuthToken?: string
55
+ KmsKeyId?: string
56
+ AutoMinorVersionUpgrade?: boolean
57
+ NotificationTopicArn?: string
58
+ Tags?: Array<{
59
+ Key: string
60
+ Value: string
61
+ }>
62
+ }
63
+ }
64
+ export declare interface ElastiCacheSubnetGroup extends CloudFormationResource {
65
+ Type: 'AWS::ElastiCache::SubnetGroup'
66
+ Properties: {
67
+ CacheSubnetGroupName?: string
68
+ Description: string
69
+ SubnetIds: string[]
70
+ Tags?: Array<{
71
+ Key: string
72
+ Value: string
73
+ }>
74
+ }
75
+ }
76
+ export declare interface ElastiCacheParameterGroup extends CloudFormationResource {
77
+ Type: 'AWS::ElastiCache::ParameterGroup'
78
+ Properties: {
79
+ CacheParameterGroupFamily: string
80
+ Description: string
81
+ Properties?: Record<string, string>
82
+ Tags?: Array<{
83
+ Key: string
84
+ Value: string
85
+ }>
86
+ }
87
+ }
@@ -0,0 +1,134 @@
1
+ import type { CloudFormationResource } from './index';
2
+ /**
3
+ * AWS EventBridge Types
4
+ */
5
+ /**
6
+ * ECS Parameters for EventBridge targets
7
+ */
8
+ export declare interface EventBridgeEcsParameters {
9
+ TaskDefinitionArn: string
10
+ TaskCount?: number
11
+ LaunchType?: 'EC2' | 'FARGATE' | 'EXTERNAL'
12
+ NetworkConfiguration?: {
13
+ awsvpcConfiguration: {
14
+ Subnets: string[]
15
+ SecurityGroups?: string[]
16
+ AssignPublicIp?: 'ENABLED' | 'DISABLED'
17
+ }
18
+ }
19
+ PlatformVersion?: string
20
+ Group?: string
21
+ CapacityProviderStrategy?: Array<{
22
+ capacityProvider: string
23
+ weight?: number
24
+ base?: number
25
+ }>
26
+ EnableECSManagedTags?: boolean
27
+ EnableExecuteCommand?: boolean
28
+ PlacementConstraints?: Array<{
29
+ type?: string
30
+ expression?: string
31
+ }>
32
+ PlacementStrategy?: Array<{
33
+ type?: string
34
+ field?: string
35
+ }>
36
+ PropagateTags?: 'TASK_DEFINITION'
37
+ ReferenceId?: string
38
+ Tags?: Array<{
39
+ Key: string
40
+ Value: string
41
+ }>
42
+ }
43
+ /**
44
+ * EventBridge Rule Target
45
+ */
46
+ export declare interface EventBridgeTarget {
47
+ Id: string
48
+ Arn: string
49
+ RoleArn?: string
50
+ Input?: string
51
+ InputPath?: string
52
+ InputTransformer?: {
53
+ InputPathsMap?: Record<string, string>
54
+ InputTemplate: string
55
+ }
56
+ KinesisParameters?: {
57
+ PartitionKeyPath: string
58
+ }
59
+ EcsParameters?: EventBridgeEcsParameters
60
+ SqsParameters?: {
61
+ MessageGroupId: string
62
+ }
63
+ HttpParameters?: {
64
+ PathParameterValues?: string[]
65
+ HeaderParameters?: Record<string, string>
66
+ QueryStringParameters?: Record<string, string>
67
+ }
68
+ RedshiftDataParameters?: {
69
+ Database: string
70
+ Sql: string
71
+ DbUser?: string
72
+ SecretManagerArn?: string
73
+ StatementName?: string
74
+ WithEvent?: boolean
75
+ }
76
+ SageMakerPipelineParameters?: {
77
+ PipelineParameterList?: Array<{
78
+ Name: string
79
+ Value: string
80
+ }>
81
+ }
82
+ DeadLetterConfig?: {
83
+ Arn: string
84
+ }
85
+ RetryPolicy?: {
86
+ MaximumRetryAttempts?: number
87
+ MaximumEventAge?: number
88
+ }
89
+ }
90
+ export declare interface EventBridgeRule extends CloudFormationResource {
91
+ Type: 'AWS::Events::Rule'
92
+ Properties: {
93
+ Name?: string
94
+ Description?: string
95
+ State?: 'ENABLED' | 'DISABLED' | 'ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS'
96
+ ScheduleExpression?: string
97
+ EventPattern?: {
98
+ source?: string[]
99
+ 'detail-type'?: string[]
100
+ detail?: Record<string, unknown>
101
+ account?: string[]
102
+ region?: string[]
103
+ resources?: string[]
104
+ }
105
+ EventBusName?: string
106
+ RoleArn?: string
107
+ Targets?: EventBridgeTarget[]
108
+ }
109
+ }
110
+ export declare interface EventBridgeEventBus extends CloudFormationResource {
111
+ Type: 'AWS::Events::EventBus'
112
+ Properties: {
113
+ Name: string
114
+ EventSourceName?: string
115
+ Tags?: Array<{
116
+ Key: string
117
+ Value: string
118
+ }>
119
+ }
120
+ }
121
+ export declare interface EventBridgeArchive extends CloudFormationResource {
122
+ Type: 'AWS::Events::Archive'
123
+ Properties: {
124
+ ArchiveName?: string
125
+ Description?: string
126
+ EventPattern?: {
127
+ source?: string[]
128
+ 'detail-type'?: string[]
129
+ detail?: Record<string, unknown>
130
+ }
131
+ RetentionDays?: number
132
+ SourceArn: string
133
+ }
134
+ }
@@ -0,0 +1,49 @@
1
+ import type { Tag } from './common';
2
+ export declare interface Accelerator {
3
+ Type: 'AWS::GlobalAccelerator::Accelerator'
4
+ Properties: {
5
+ Name: string
6
+ Enabled?: boolean
7
+ IpAddressType?: 'IPV4' | 'DUAL_STACK'
8
+ IpAddresses?: string[]
9
+ Tags?: Tag[]
10
+ }
11
+ DeletionPolicy?: 'Delete' | 'Retain'
12
+ UpdateReplacePolicy?: 'Delete' | 'Retain'
13
+ }
14
+ export declare interface GlobalAcceleratorListener {
15
+ Type: 'AWS::GlobalAccelerator::Listener'
16
+ Properties: {
17
+ AcceleratorArn: string | { Ref: string }
18
+ Protocol: 'TCP' | 'UDP'
19
+ PortRanges: Array<{
20
+ FromPort: number
21
+ ToPort: number
22
+ }>
23
+ ClientAffinity?: 'NONE' | 'SOURCE_IP'
24
+ }
25
+ DependsOn?: string | string[]
26
+ }
27
+ export declare interface EndpointGroup {
28
+ Type: 'AWS::GlobalAccelerator::EndpointGroup'
29
+ Properties: {
30
+ ListenerArn: string | { Ref: string }
31
+ EndpointGroupRegion: string
32
+ EndpointConfigurations?: Array<{
33
+ EndpointId: string | { Ref: string }
34
+ Weight?: number
35
+ ClientIPPreservationEnabled?: boolean
36
+ }>
37
+ TrafficDialPercentage?: number
38
+ HealthCheckIntervalSeconds?: number
39
+ HealthCheckPath?: string
40
+ HealthCheckPort?: number
41
+ HealthCheckProtocol?: 'TCP' | 'HTTP' | 'HTTPS'
42
+ ThresholdCount?: number
43
+ PortOverrides?: Array<{
44
+ ListenerPort: number
45
+ EndpointPort: number
46
+ }>
47
+ }
48
+ DependsOn?: string | string[]
49
+ }
package/dist/glue.d.ts ADDED
@@ -0,0 +1,227 @@
1
+ export declare interface Database {
2
+ Type: 'AWS::Glue::Database'
3
+ Properties: {
4
+ CatalogId: string
5
+ DatabaseInput: {
6
+ Name: string
7
+ Description?: string
8
+ LocationUri?: string
9
+ Parameters?: Record<string, string>
10
+ }
11
+ }
12
+ }
13
+ export declare interface Table {
14
+ Type: 'AWS::Glue::Table'
15
+ Properties: {
16
+ CatalogId: string
17
+ DatabaseName: string | { Ref: string }
18
+ TableInput: {
19
+ Name: string
20
+ Description?: string
21
+ Owner?: string
22
+ Retention?: number
23
+ StorageDescriptor?: {
24
+ Columns?: Array<{
25
+ Name: string
26
+ Type?: string
27
+ Comment?: string
28
+ }>
29
+ Location?: string
30
+ InputFormat?: string
31
+ OutputFormat?: string
32
+ Compressed?: boolean
33
+ NumberOfBuckets?: number
34
+ SerdeInfo?: {
35
+ Name?: string
36
+ SerializationLibrary?: string
37
+ Parameters?: Record<string, string>
38
+ }
39
+ BucketColumns?: string[]
40
+ SortColumns?: Array<{
41
+ Column: string
42
+ SortOrder: number
43
+ }>
44
+ Parameters?: Record<string, string>
45
+ SkewedInfo?: {
46
+ SkewedColumnNames?: string[]
47
+ SkewedColumnValues?: string[]
48
+ SkewedColumnValueLocationMaps?: Record<string, string>
49
+ }
50
+ StoredAsSubDirectories?: boolean
51
+ }
52
+ PartitionKeys?: Array<{
53
+ Name: string
54
+ Type?: string
55
+ Comment?: string
56
+ }>
57
+ TableType?: string
58
+ Parameters?: Record<string, string>
59
+ }
60
+ }
61
+ DependsOn?: string | string[]
62
+ }
63
+ export declare interface Crawler {
64
+ Type: 'AWS::Glue::Crawler'
65
+ Properties: {
66
+ Name?: string
67
+ Role: string | { Ref: string }
68
+ DatabaseName: string | { Ref: string }
69
+ Targets: {
70
+ S3Targets?: Array<{
71
+ Path: string
72
+ Exclusions?: string[]
73
+ ConnectionName?: string
74
+ }>
75
+ JdbcTargets?: Array<{
76
+ ConnectionName: string
77
+ Path: string
78
+ Exclusions?: string[]
79
+ }>
80
+ DynamoDBTargets?: Array<{
81
+ Path: string
82
+ }>
83
+ CatalogTargets?: Array<{
84
+ DatabaseName: string
85
+ Tables: string[]
86
+ }>
87
+ }
88
+ Description?: string
89
+ Schedule?: {
90
+ ScheduleExpression: string
91
+ }
92
+ Classifiers?: string[]
93
+ TablePrefix?: string
94
+ SchemaChangePolicy?: {
95
+ UpdateBehavior?: 'LOG' | 'UPDATE_IN_DATABASE'
96
+ DeleteBehavior?: 'LOG' | 'DELETE_FROM_DATABASE' | 'DEPRECATE_IN_DATABASE'
97
+ }
98
+ Configuration?: string
99
+ CrawlerSecurityConfiguration?: string
100
+ Tags?: Record<string, string>
101
+ }
102
+ }
103
+ export declare interface Job {
104
+ Type: 'AWS::Glue::Job'
105
+ Properties: {
106
+ Name?: string
107
+ Role: string | { Ref: string }
108
+ Command: {
109
+ Name: 'glueetl' | 'gluestreaming' | 'pythonshell'
110
+ ScriptLocation: string
111
+ PythonVersion?: '2' | '3'
112
+ }
113
+ AllocatedCapacity?: number
114
+ MaxCapacity?: number
115
+ ExecutionProperty?: {
116
+ MaxConcurrentRuns?: number
117
+ }
118
+ MaxRetries?: number
119
+ Timeout?: number
120
+ GlueVersion?: string
121
+ NumberOfWorkers?: number
122
+ WorkerType?: 'Standard' | 'G.1X' | 'G.2X' | 'G.025X'
123
+ DefaultArguments?: Record<string, string>
124
+ Connections?: {
125
+ Connections?: string[]
126
+ }
127
+ Description?: string
128
+ SecurityConfiguration?: string
129
+ Tags?: Record<string, string>
130
+ }
131
+ }
132
+ export declare interface Trigger {
133
+ Type: 'AWS::Glue::Trigger'
134
+ Properties: {
135
+ Name?: string
136
+ Type: 'SCHEDULED' | 'CONDITIONAL' | 'ON_DEMAND'
137
+ Actions: Array<{
138
+ JobName?: string | { Ref: string }
139
+ Arguments?: Record<string, string>
140
+ Timeout?: number
141
+ SecurityConfiguration?: string
142
+ NotificationProperty?: {
143
+ NotifyDelayAfter?: number
144
+ }
145
+ CrawlerName?: string
146
+ }>
147
+ Description?: string
148
+ Schedule?: string // Cron expression
149
+ Predicate?: {
150
+ Logical?: 'AND' | 'ANY'
151
+ Conditions?: Array<{
152
+ LogicalOperator?: 'EQUALS'
153
+ JobName?: string | { Ref: string }
154
+ State?: 'SUCCEEDED' | 'STOPPED' | 'FAILED' | 'TIMEOUT'
155
+ CrawlerName?: string
156
+ CrawlState?: 'SUCCEEDED' | 'FAILED' | 'CANCELLED'
157
+ }>
158
+ }
159
+ StartOnCreation?: boolean
160
+ WorkflowName?: string
161
+ Tags?: Record<string, string>
162
+ }
163
+ }
164
+ export declare interface Partition {
165
+ Type: 'AWS::Glue::Partition'
166
+ Properties: {
167
+ CatalogId: string
168
+ DatabaseName: string | { Ref: string }
169
+ TableName: string | { Ref: string }
170
+ PartitionInput: {
171
+ Values: string[]
172
+ StorageDescriptor?: {
173
+ Columns?: Array<{
174
+ Name: string
175
+ Type?: string
176
+ Comment?: string
177
+ }>
178
+ Location?: string
179
+ InputFormat?: string
180
+ OutputFormat?: string
181
+ SerdeInfo?: {
182
+ SerializationLibrary?: string
183
+ Parameters?: Record<string, string>
184
+ }
185
+ }
186
+ Parameters?: Record<string, string>
187
+ }
188
+ }
189
+ DependsOn?: string | string[]
190
+ }
191
+ export declare interface Connection {
192
+ Type: 'AWS::Glue::Connection'
193
+ Properties: {
194
+ CatalogId: string
195
+ ConnectionInput: {
196
+ Name: string
197
+ Description?: string
198
+ ConnectionType: 'JDBC' | 'SFTP' | 'MONGODB' | 'KAFKA' | 'NETWORK'
199
+ ConnectionProperties: Record<string, string>
200
+ PhysicalConnectionRequirements?: {
201
+ AvailabilityZone?: string
202
+ SecurityGroupIdList?: Array<string | { Ref: string }>
203
+ SubnetId?: string | { Ref: string }
204
+ }
205
+ }
206
+ }
207
+ }
208
+ export declare interface SecurityConfiguration {
209
+ Type: 'AWS::Glue::SecurityConfiguration'
210
+ Properties: {
211
+ Name: string
212
+ EncryptionConfiguration: {
213
+ S3Encryptions?: Array<{
214
+ S3EncryptionMode?: 'DISABLED' | 'SSE-KMS' | 'SSE-S3'
215
+ KmsKeyArn?: string | { Ref: string }
216
+ }>
217
+ CloudWatchEncryption?: {
218
+ CloudWatchEncryptionMode?: 'DISABLED' | 'SSE-KMS'
219
+ KmsKeyArn?: string | { Ref: string }
220
+ }
221
+ JobBookmarksEncryption?: {
222
+ JobBookmarksEncryptionMode?: 'DISABLED' | 'CSE-KMS'
223
+ KmsKeyArn?: string | { Ref: string }
224
+ }
225
+ }
226
+ }
227
+ }
package/dist/iam.d.ts ADDED
@@ -0,0 +1,135 @@
1
+ import type { CloudFormationResource } from './index';
2
+ export declare interface IAMRole extends CloudFormationResource {
3
+ Type: 'AWS::IAM::Role'
4
+ Properties: {
5
+ RoleName?: string
6
+ MaxSessionDuration?: number
7
+ AssumeRolePolicyDocument: {
8
+ Version: '2012-10-17'
9
+ Statement: Array<{
10
+ Effect: 'Allow' | 'Deny'
11
+ Principal: {
12
+ Service?: string | string[]
13
+ AWS?: string | string[]
14
+ Federated?: string | string[]
15
+ }
16
+ Action: string | string[]
17
+ Condition?: Record<string, unknown>
18
+ }>
19
+ }
20
+ ManagedPolicyArns?: string[]
21
+ Policies?: Array<{
22
+ PolicyName: string
23
+ PolicyDocument: {
24
+ Version: '2012-10-17'
25
+ Statement: Array<{
26
+ Effect: 'Allow' | 'Deny'
27
+ Action: string | string[]
28
+ Resource: string | string[]
29
+ }>
30
+ }
31
+ }>
32
+ Tags?: Array<{
33
+ Key: string
34
+ Value: string
35
+ }>
36
+ }
37
+ }
38
+ export declare interface IAMPolicy extends CloudFormationResource {
39
+ Type: 'AWS::IAM::Policy'
40
+ Properties: {
41
+ PolicyName: string
42
+ PolicyDocument: {
43
+ Version: '2012-10-17'
44
+ Statement: Array<{
45
+ Sid?: string
46
+ Effect: 'Allow' | 'Deny'
47
+ Action: string | string[]
48
+ Resource: string | string[]
49
+ Condition?: Record<string, unknown>
50
+ }>
51
+ }
52
+ Roles?: string[]
53
+ Users?: string[]
54
+ Groups?: string[]
55
+ }
56
+ }
57
+ export declare interface IAMUser extends CloudFormationResource {
58
+ Type: 'AWS::IAM::User'
59
+ Properties: {
60
+ UserName?: string
61
+ ManagedPolicyArns?: string[]
62
+ Groups?: string[]
63
+ Policies?: Array<{
64
+ PolicyName: string
65
+ PolicyDocument: {
66
+ Version: '2012-10-17'
67
+ Statement: Array<{
68
+ Effect: 'Allow' | 'Deny'
69
+ Action: string | string[]
70
+ Resource: string | string[]
71
+ }>
72
+ }
73
+ }>
74
+ Tags?: Array<{
75
+ Key: string
76
+ Value: string
77
+ }>
78
+ }
79
+ }
80
+ export declare interface IAMManagedPolicy extends CloudFormationResource {
81
+ Type: 'AWS::IAM::ManagedPolicy'
82
+ Properties: {
83
+ ManagedPolicyName?: string
84
+ Description?: string
85
+ Path?: string
86
+ PolicyDocument: {
87
+ Version: '2012-10-17'
88
+ Statement: Array<{
89
+ Sid?: string
90
+ Effect: 'Allow' | 'Deny'
91
+ Action: string | string[]
92
+ Resource: string | string[]
93
+ Condition?: Record<string, unknown>
94
+ }>
95
+ }
96
+ Roles?: Array<string | { Ref: string }>
97
+ Users?: Array<string | { Ref: string }>
98
+ Groups?: Array<string | { Ref: string }>
99
+ }
100
+ }
101
+ export declare interface IAMGroup extends CloudFormationResource {
102
+ Type: 'AWS::IAM::Group'
103
+ Properties: {
104
+ GroupName?: string
105
+ ManagedPolicyArns?: string[]
106
+ Policies?: Array<{
107
+ PolicyName: string
108
+ PolicyDocument: {
109
+ Version: '2012-10-17'
110
+ Statement: Array<{
111
+ Effect: 'Allow' | 'Deny'
112
+ Action: string | string[]
113
+ Resource: string | string[]
114
+ }>
115
+ }
116
+ }>
117
+ Path?: string
118
+ }
119
+ }
120
+ export declare interface IAMAccessKey extends CloudFormationResource {
121
+ Type: 'AWS::IAM::AccessKey'
122
+ Properties: {
123
+ UserName: string | { Ref: string }
124
+ Status?: 'Active' | 'Inactive'
125
+ Serial?: number
126
+ }
127
+ }
128
+ export declare interface IAMInstanceProfile extends CloudFormationResource {
129
+ Type: 'AWS::IAM::InstanceProfile'
130
+ Properties: {
131
+ InstanceProfileName?: string
132
+ Path?: string
133
+ Roles: Array<string | { Ref: string }>
134
+ }
135
+ }