@ts-cloud/aws-types 0.2.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.
@@ -0,0 +1,174 @@
1
+ import type { Tag } from './common';
2
+ /**
3
+ * AWS::Backup::BackupVault
4
+ */
5
+ export declare interface BackupVault {
6
+ Type: 'AWS::Backup::BackupVault'
7
+ Properties: {
8
+ BackupVaultName: string
9
+ BackupVaultTags?: Record<string, string>
10
+ EncryptionKeyArn?: string
11
+ Notifications?: {
12
+ SNSTopicArn: string
13
+ BackupVaultEvents: Array<'BACKUP_JOB_STARTED' | 'BACKUP_JOB_COMPLETED' | 'BACKUP_JOB_SUCCESSFUL' | 'BACKUP_JOB_FAILED' | 'BACKUP_JOB_EXPIRED' | 'RESTORE_JOB_STARTED' | 'RESTORE_JOB_COMPLETED' | 'RESTORE_JOB_SUCCESSFUL' | 'RESTORE_JOB_FAILED' | 'COPY_JOB_STARTED' | 'COPY_JOB_SUCCESSFUL' | 'COPY_JOB_FAILED' | 'RECOVERY_POINT_MODIFIED' | 'BACKUP_PLAN_CREATED' | 'BACKUP_PLAN_MODIFIED' | 'S3_BACKUP_OBJECT_FAILED' | 'S3_RESTORE_OBJECT_FAILED'>
14
+ }
15
+ AccessPolicy?: {
16
+ Version: string
17
+ Statement: Array<{
18
+ Sid?: string
19
+ Effect: 'Allow' | 'Deny'
20
+ Principal: any
21
+ Action: string | string[]
22
+ Resource?: string | string[]
23
+ Condition?: Record<string, any>
24
+ }>
25
+ }
26
+ LockConfiguration?: {
27
+ MinRetentionDays: number
28
+ MaxRetentionDays?: number
29
+ ChangeableForDays?: number
30
+ }
31
+ }
32
+ }
33
+ /**
34
+ * AWS::Backup::BackupPlan
35
+ */
36
+ export declare interface BackupPlan {
37
+ Type: 'AWS::Backup::BackupPlan'
38
+ Properties: {
39
+ BackupPlan: {
40
+ BackupPlanName: string
41
+ BackupPlanRule: Array<{
42
+ RuleName: string
43
+ TargetBackupVault: string | { Ref: string }
44
+ ScheduleExpression?: string
45
+ ScheduleExpressionTimezone?: string
46
+ StartWindowMinutes?: number
47
+ CompletionWindowMinutes?: number
48
+ Lifecycle?: {
49
+ DeleteAfterDays?: number
50
+ MoveToColdStorageAfterDays?: number
51
+ OptInToArchiveForSupportedResources?: boolean
52
+ }
53
+ RecoveryPointTags?: Record<string, string>
54
+ CopyActions?: Array<{
55
+ DestinationBackupVaultArn: string
56
+ Lifecycle?: {
57
+ DeleteAfterDays?: number
58
+ MoveToColdStorageAfterDays?: number
59
+ OptInToArchiveForSupportedResources?: boolean
60
+ }
61
+ }>
62
+ EnableContinuousBackup?: boolean
63
+ }>
64
+ AdvancedBackupSettings?: Array<{
65
+ BackupOptions: Record<string, string>
66
+ ResourceType: string
67
+ }>
68
+ }
69
+ BackupPlanTags?: Record<string, string>
70
+ }
71
+ }
72
+ /**
73
+ * AWS::Backup::BackupSelection
74
+ */
75
+ export declare interface BackupSelection {
76
+ Type: 'AWS::Backup::BackupSelection'
77
+ Properties: {
78
+ BackupPlanId: string | { Ref: string }
79
+ BackupSelection: {
80
+ SelectionName: string
81
+ IamRoleArn: string | { 'Fn::GetAtt': [string, string] }
82
+ Resources?: string[]
83
+ ListOfTags?: Array<{
84
+ ConditionType: 'STRINGEQUALS'
85
+ ConditionKey: string
86
+ ConditionValue: string
87
+ }>
88
+ NotResources?: string[]
89
+ Conditions?: {
90
+ StringEquals?: Array<{
91
+ ConditionKey: string
92
+ ConditionValue: string
93
+ }>
94
+ StringNotEquals?: Array<{
95
+ ConditionKey: string
96
+ ConditionValue: string
97
+ }>
98
+ StringLike?: Array<{
99
+ ConditionKey: string
100
+ ConditionValue: string
101
+ }>
102
+ StringNotLike?: Array<{
103
+ ConditionKey: string
104
+ ConditionValue: string
105
+ }>
106
+ }
107
+ }
108
+ }
109
+ }
110
+ /**
111
+ * AWS::Backup::Framework
112
+ */
113
+ export declare interface BackupFramework {
114
+ Type: 'AWS::Backup::Framework'
115
+ Properties: {
116
+ FrameworkName?: string
117
+ FrameworkDescription?: string
118
+ FrameworkControls: Array<{
119
+ ControlName: string
120
+ ControlInputParameters?: Array<{
121
+ ParameterName: string
122
+ ParameterValue: string
123
+ }>
124
+ ControlScope?: {
125
+ ComplianceResourceIds?: string[]
126
+ ComplianceResourceTypes?: string[]
127
+ Tags?: Array<{
128
+ Key: string
129
+ Value: string
130
+ }>
131
+ }
132
+ }>
133
+ FrameworkTags?: Tag[]
134
+ }
135
+ }
136
+ /**
137
+ * AWS::Backup::ReportPlan
138
+ */
139
+ export declare interface BackupReportPlan {
140
+ Type: 'AWS::Backup::ReportPlan'
141
+ Properties: {
142
+ ReportPlanName?: string
143
+ ReportPlanDescription?: string
144
+ ReportDeliveryChannel: {
145
+ S3BucketName: string
146
+ S3KeyPrefix?: string
147
+ Formats?: string[]
148
+ }
149
+ ReportSetting: {
150
+ ReportTemplate: string
151
+ FrameworkArns?: string[]
152
+ Accounts?: string[]
153
+ OrganizationUnits?: string[]
154
+ Regions?: string[]
155
+ }
156
+ ReportPlanTags?: Tag[]
157
+ }
158
+ }
159
+ /**
160
+ * AWS::Backup::BackupVaultNotifications (Legacy)
161
+ */
162
+ export declare interface BackupVaultNotifications {
163
+ Type: 'AWS::Backup::BackupVault'
164
+ Properties: {
165
+ BackupVaultName: string
166
+ SNSTopicArn: string
167
+ BackupVaultEvents: Array<'BACKUP_JOB_STARTED' | 'BACKUP_JOB_COMPLETED' | 'RESTORE_JOB_STARTED' | 'RESTORE_JOB_COMPLETED' | 'COPY_JOB_STARTED' | 'COPY_JOB_SUCCESSFUL' | 'COPY_JOB_FAILED' | 'RECOVERY_POINT_MODIFIED'>
168
+ }
169
+ }
170
+ export type BackupResource = | BackupVault
171
+ | BackupPlan
172
+ | BackupSelection
173
+ | BackupFramework
174
+ | BackupReportPlan;
@@ -0,0 +1,90 @@
1
+ import type { CloudFormationResource } from './index';
2
+ export declare interface CloudWatchAlarm extends CloudFormationResource {
3
+ Type: 'AWS::CloudWatch::Alarm'
4
+ Properties: {
5
+ AlarmName?: string
6
+ AlarmDescription?: string
7
+ MetricName?: string
8
+ Namespace?: string
9
+ Statistic?: 'SampleCount' | 'Average' | 'Sum' | 'Minimum' | 'Maximum'
10
+ Period?: number
11
+ EvaluationPeriods: number
12
+ Threshold: number
13
+ ComparisonOperator: 'GreaterThanOrEqualToThreshold' | 'GreaterThanThreshold' | 'LessThanThreshold' | 'LessThanOrEqualToThreshold'
14
+ ActionsEnabled?: boolean
15
+ AlarmActions?: string[]
16
+ InsufficientDataActions?: string[]
17
+ OKActions?: string[]
18
+ Dimensions?: Array<{
19
+ Name: string
20
+ Value: string
21
+ }>
22
+ TreatMissingData?: 'breaching' | 'notBreaching' | 'ignore' | 'missing'
23
+ Unit?: string
24
+ DatapointsToAlarm?: number
25
+ }
26
+ }
27
+ export declare interface CloudWatchLogGroup extends CloudFormationResource {
28
+ Type: 'AWS::Logs::LogGroup'
29
+ Properties?: {
30
+ LogGroupName?: string
31
+ RetentionInDays?: 1 | 3 | 5 | 7 | 14 | 30 | 60 | 90 | 120 | 150 | 180 | 365 | 400 | 545 | 731 | 1827 | 3653
32
+ KmsKeyId?: string
33
+ Tags?: Array<{
34
+ Key: string
35
+ Value: string
36
+ }>
37
+ }
38
+ }
39
+ export declare interface CloudWatchDashboard extends CloudFormationResource {
40
+ Type: 'AWS::CloudWatch::Dashboard'
41
+ Properties: {
42
+ DashboardName?: string
43
+ DashboardBody: string
44
+ }
45
+ }
46
+ export declare interface CloudWatchLogStream extends CloudFormationResource {
47
+ Type: 'AWS::Logs::LogStream'
48
+ Properties: {
49
+ LogGroupName: string | { Ref: string }
50
+ LogStreamName?: string
51
+ }
52
+ }
53
+ export declare interface CloudWatchMetricFilter extends CloudFormationResource {
54
+ Type: 'AWS::Logs::MetricFilter'
55
+ Properties: {
56
+ LogGroupName: string | { Ref: string }
57
+ FilterPattern: string
58
+ MetricTransformations: Array<{
59
+ MetricName: string
60
+ MetricNamespace: string
61
+ MetricValue: string
62
+ DefaultValue?: number
63
+ Unit?: string
64
+ Dimensions?: Array<{
65
+ Key: string
66
+ Value: string
67
+ }>
68
+ }>
69
+ FilterName?: string
70
+ }
71
+ }
72
+ export declare interface CloudWatchCompositeAlarm extends CloudFormationResource {
73
+ Type: 'AWS::CloudWatch::CompositeAlarm'
74
+ Properties: {
75
+ AlarmName: string
76
+ AlarmRule: string
77
+ AlarmDescription?: string
78
+ ActionsEnabled?: boolean
79
+ AlarmActions?: string[]
80
+ InsufficientDataActions?: string[]
81
+ OKActions?: string[]
82
+ ActionsSuppressor?: string
83
+ ActionsSuppressorExtensionPeriod?: number
84
+ ActionsSuppressorWaitPeriod?: number
85
+ Tags?: Array<{
86
+ Key: string
87
+ Value: string
88
+ }>
89
+ }
90
+ }
@@ -0,0 +1,124 @@
1
+ import type { CloudFormationResource } from './index';
2
+ export declare interface CodeDeployApplication extends CloudFormationResource {
3
+ Type: 'AWS::CodeDeploy::Application'
4
+ Properties?: {
5
+ ApplicationName?: string
6
+ ComputePlatform?: 'Server' | 'Lambda' | 'ECS'
7
+ Tags?: Array<{
8
+ Key: string
9
+ Value: string
10
+ }>
11
+ }
12
+ }
13
+ export declare interface CodeDeployDeploymentGroup extends CloudFormationResource {
14
+ Type: 'AWS::CodeDeploy::DeploymentGroup'
15
+ Properties: {
16
+ ApplicationName: string | { Ref: string }
17
+ DeploymentGroupName?: string
18
+ ServiceRoleArn: string | { Ref: string } | { 'Fn::GetAtt': [string, string] }
19
+ AutoScalingGroups?: string[]
20
+ Ec2TagFilters?: Array<{
21
+ Key?: string
22
+ Value?: string
23
+ Type?: 'KEY_ONLY' | 'VALUE_ONLY' | 'KEY_AND_VALUE'
24
+ }>
25
+ Ec2TagSet?: {
26
+ Ec2TagSetList?: Array<{
27
+ Ec2TagGroup?: Array<{
28
+ Key?: string
29
+ Value?: string
30
+ Type?: 'KEY_ONLY' | 'VALUE_ONLY' | 'KEY_AND_VALUE'
31
+ }>
32
+ }>
33
+ }
34
+ OnPremisesInstanceTagFilters?: Array<{
35
+ Key?: string
36
+ Value?: string
37
+ Type?: 'KEY_ONLY' | 'VALUE_ONLY' | 'KEY_AND_VALUE'
38
+ }>
39
+ DeploymentConfigName?: string | { Ref: string }
40
+ DeploymentStyle?: {
41
+ DeploymentType?: 'IN_PLACE' | 'BLUE_GREEN'
42
+ DeploymentOption?: 'WITH_TRAFFIC_CONTROL' | 'WITHOUT_TRAFFIC_CONTROL'
43
+ }
44
+ AutoRollbackConfiguration?: {
45
+ Enabled?: boolean
46
+ Events?: ('DEPLOYMENT_FAILURE' | 'DEPLOYMENT_STOP_ON_ALARM' | 'DEPLOYMENT_STOP_ON_REQUEST')[]
47
+ }
48
+ AlarmConfiguration?: {
49
+ Enabled?: boolean
50
+ Alarms?: Array<{
51
+ Name?: string
52
+ }>
53
+ IgnorePollAlarmFailure?: boolean
54
+ }
55
+ LoadBalancerInfo?: {
56
+ TargetGroupInfoList?: Array<{
57
+ Name?: string
58
+ }>
59
+ ElbInfoList?: Array<{
60
+ Name?: string
61
+ }>
62
+ TargetGroupPairInfoList?: Array<{
63
+ TargetGroups?: Array<{
64
+ Name?: string
65
+ }>
66
+ ProdTrafficRoute?: {
67
+ ListenerArns?: string[]
68
+ }
69
+ TestTrafficRoute?: {
70
+ ListenerArns?: string[]
71
+ }
72
+ }>
73
+ }
74
+ BlueGreenDeploymentConfiguration?: {
75
+ TerminateBlueInstancesOnDeploymentSuccess?: {
76
+ Action?: 'TERMINATE' | 'KEEP_ALIVE'
77
+ TerminationWaitTimeInMinutes?: number
78
+ }
79
+ DeploymentReadyOption?: {
80
+ ActionOnTimeout?: 'CONTINUE_DEPLOYMENT' | 'STOP_DEPLOYMENT'
81
+ WaitTimeInMinutes?: number
82
+ }
83
+ GreenFleetProvisioningOption?: {
84
+ Action?: 'DISCOVER_EXISTING' | 'COPY_AUTO_SCALING_GROUP'
85
+ }
86
+ }
87
+ TriggerConfigurations?: Array<{
88
+ TriggerName?: string
89
+ TriggerTargetArn?: string
90
+ TriggerEvents?: string[]
91
+ }>
92
+ ECSServices?: Array<{
93
+ ClusterName: string
94
+ ServiceName: string
95
+ }>
96
+ OutdatedInstancesStrategy?: 'UPDATE' | 'IGNORE'
97
+ Tags?: Array<{
98
+ Key: string
99
+ Value: string
100
+ }>
101
+ }
102
+ }
103
+ export declare interface CodeDeployDeploymentConfig extends CloudFormationResource {
104
+ Type: 'AWS::CodeDeploy::DeploymentConfig'
105
+ Properties?: {
106
+ DeploymentConfigName?: string
107
+ ComputePlatform?: 'Server' | 'Lambda' | 'ECS'
108
+ MinimumHealthyHosts?: {
109
+ Type: 'HOST_COUNT' | 'FLEET_PERCENT'
110
+ Value: number
111
+ }
112
+ TrafficRoutingConfig?: {
113
+ Type: 'TimeBasedCanary' | 'TimeBasedLinear' | 'AllAtOnce'
114
+ TimeBasedCanary?: {
115
+ CanaryPercentage: number
116
+ CanaryInterval: number
117
+ }
118
+ TimeBasedLinear?: {
119
+ LinearPercentage: number
120
+ LinearInterval: number
121
+ }
122
+ }
123
+ }
124
+ }
@@ -0,0 +1,203 @@
1
+ import type { CloudFormationResource } from './index';
2
+ export declare interface CognitoUserPool extends CloudFormationResource {
3
+ Type: 'AWS::Cognito::UserPool'
4
+ Properties?: {
5
+ UserPoolName?: string
6
+ Policies?: {
7
+ PasswordPolicy?: {
8
+ MinimumLength?: number
9
+ RequireLowercase?: boolean
10
+ RequireUppercase?: boolean
11
+ RequireNumbers?: boolean
12
+ RequireSymbols?: boolean
13
+ TemporaryPasswordValidityDays?: number
14
+ }
15
+ }
16
+ MfaConfiguration?: 'OFF' | 'ON' | 'OPTIONAL'
17
+ UsernameAttributes?: ('email' | 'phone_number')[]
18
+ AutoVerifiedAttributes?: ('email' | 'phone_number')[]
19
+ Schema?: Array<{
20
+ Name: string
21
+ AttributeDataType?: 'String' | 'Number' | 'DateTime' | 'Boolean'
22
+ Required?: boolean
23
+ Mutable?: boolean
24
+ StringAttributeConstraints?: {
25
+ MinLength?: string
26
+ MaxLength?: string
27
+ }
28
+ NumberAttributeConstraints?: {
29
+ MinValue?: string
30
+ MaxValue?: string
31
+ }
32
+ }>
33
+ EmailConfiguration?: {
34
+ EmailSendingAccount?: 'COGNITO_DEFAULT' | 'DEVELOPER'
35
+ From?: string
36
+ ReplyToEmailAddress?: string
37
+ SourceArn?: string
38
+ ConfigurationSet?: string
39
+ }
40
+ SmsConfiguration?: {
41
+ ExternalId?: string
42
+ SnsCallerArn?: string
43
+ }
44
+ LambdaConfig?: {
45
+ PreSignUp?: string
46
+ PostConfirmation?: string
47
+ PreAuthentication?: string
48
+ PostAuthentication?: string
49
+ CustomMessage?: string
50
+ DefineAuthChallenge?: string
51
+ CreateAuthChallenge?: string
52
+ VerifyAuthChallengeResponse?: string
53
+ PreTokenGeneration?: string
54
+ UserMigration?: string
55
+ }
56
+ UserPoolAddOns?: {
57
+ AdvancedSecurityMode?: 'OFF' | 'AUDIT' | 'ENFORCED'
58
+ }
59
+ AccountRecoverySetting?: {
60
+ RecoveryMechanisms?: Array<{
61
+ Name?: 'verified_email' | 'verified_phone_number' | 'admin_only'
62
+ Priority?: number
63
+ }>
64
+ }
65
+ AdminCreateUserConfig?: {
66
+ AllowAdminCreateUserOnly?: boolean
67
+ InviteMessageTemplate?: {
68
+ EmailMessage?: string
69
+ EmailSubject?: string
70
+ SMSMessage?: string
71
+ }
72
+ }
73
+ Tags?: Array<{
74
+ Key: string
75
+ Value: string
76
+ }>
77
+ }
78
+ }
79
+ export declare interface CognitoUserPoolClient extends CloudFormationResource {
80
+ Type: 'AWS::Cognito::UserPoolClient'
81
+ Properties: {
82
+ ClientName?: string
83
+ UserPoolId: string | { Ref: string }
84
+ GenerateSecret?: boolean
85
+ RefreshTokenValidity?: number
86
+ AccessTokenValidity?: number
87
+ IdTokenValidity?: number
88
+ TokenValidityUnits?: {
89
+ RefreshToken?: 'seconds' | 'minutes' | 'hours' | 'days'
90
+ AccessToken?: 'seconds' | 'minutes' | 'hours' | 'days'
91
+ IdToken?: 'seconds' | 'minutes' | 'hours' | 'days'
92
+ }
93
+ ReadAttributes?: string[]
94
+ WriteAttributes?: string[]
95
+ ExplicitAuthFlows?: string[]
96
+ PreventUserExistenceErrors?: 'ENABLED' | 'LEGACY'
97
+ EnableTokenRevocation?: boolean
98
+ CallbackURLs?: string[]
99
+ LogoutURLs?: string[]
100
+ AllowedOAuthFlows?: ('code' | 'implicit' | 'client_credentials')[]
101
+ AllowedOAuthScopes?: string[]
102
+ AllowedOAuthFlowsUserPoolClient?: boolean
103
+ SupportedIdentityProviders?: string[]
104
+ DefaultRedirectURI?: string
105
+ AnalyticsConfiguration?: {
106
+ ApplicationArn?: string
107
+ ApplicationId?: string
108
+ ExternalId?: string
109
+ RoleArn?: string
110
+ UserDataShared?: boolean
111
+ }
112
+ }
113
+ }
114
+ export declare interface CognitoUserPoolDomain extends CloudFormationResource {
115
+ Type: 'AWS::Cognito::UserPoolDomain'
116
+ Properties: {
117
+ Domain: string
118
+ UserPoolId: string | { Ref: string }
119
+ CustomDomainConfig?: {
120
+ CertificateArn?: string
121
+ }
122
+ }
123
+ }
124
+ export declare interface CognitoIdentityPool extends CloudFormationResource {
125
+ Type: 'AWS::Cognito::IdentityPool'
126
+ Properties: {
127
+ IdentityPoolName?: string
128
+ AllowUnauthenticatedIdentities: boolean
129
+ CognitoIdentityProviders?: Array<{
130
+ ClientId?: string
131
+ ProviderName?: string
132
+ ServerSideTokenCheck?: boolean
133
+ }>
134
+ SupportedLoginProviders?: Record<string, string>
135
+ SamlProviderARNs?: string[]
136
+ OpenIdConnectProviderARNs?: string[]
137
+ CognitoStreams?: {
138
+ StreamingStatus?: 'ENABLED' | 'DISABLED'
139
+ StreamName?: string
140
+ RoleArn?: string
141
+ }
142
+ PushSync?: {
143
+ ApplicationArns?: string[]
144
+ RoleArn?: string
145
+ }
146
+ CognitoEvents?: Record<string, string>
147
+ DeveloperProviderName?: string
148
+ AllowClassicFlow?: boolean
149
+ }
150
+ }
151
+ export declare interface CognitoIdentityPoolRoleAttachment extends CloudFormationResource {
152
+ Type: 'AWS::Cognito::IdentityPoolRoleAttachment'
153
+ Properties: {
154
+ IdentityPoolId: string | { Ref: string }
155
+ Roles?: Record<string, string>
156
+ RoleMappings?: Record<string, {
157
+ Type?: 'Token' | 'Rules'
158
+ AmbiguousRoleResolution?: 'AuthenticatedRole' | 'Deny'
159
+ IdentityProvider?: string
160
+ RulesConfiguration?: {
161
+ Rules?: Array<{
162
+ Claim?: string
163
+ MatchType?: 'Equals' | 'Contains' | 'StartsWith' | 'NotEqual'
164
+ Value?: string
165
+ RoleARN?: string
166
+ }>
167
+ }
168
+ }>
169
+ }
170
+ }
171
+ export declare interface CognitoUserPoolGroup extends CloudFormationResource {
172
+ Type: 'AWS::Cognito::UserPoolGroup'
173
+ Properties: {
174
+ GroupName: string
175
+ UserPoolId: string | { Ref: string }
176
+ Description?: string
177
+ Precedence?: number
178
+ RoleArn?: string
179
+ }
180
+ }
181
+ export declare interface CognitoUserPoolResourceServer extends CloudFormationResource {
182
+ Type: 'AWS::Cognito::UserPoolResourceServer'
183
+ Properties: {
184
+ Identifier: string
185
+ Name: string
186
+ UserPoolId: string | { Ref: string }
187
+ Scopes?: Array<{
188
+ ScopeName: string
189
+ ScopeDescription: string
190
+ }>
191
+ }
192
+ }
193
+ export declare interface CognitoUserPoolIdentityProvider extends CloudFormationResource {
194
+ Type: 'AWS::Cognito::UserPoolIdentityProvider'
195
+ Properties: {
196
+ ProviderName: string
197
+ ProviderType: 'SAML' | 'Facebook' | 'Google' | 'LoginWithAmazon' | 'SignInWithApple' | 'OIDC'
198
+ UserPoolId: string | { Ref: string }
199
+ AttributeMapping?: Record<string, string>
200
+ ProviderDetails?: Record<string, string>
201
+ IdpIdentifiers?: string[]
202
+ }
203
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Common AWS Types
3
+ */
4
+ export declare interface Tag {
5
+ Key: string
6
+ Value: string
7
+ }
8
+ export declare interface ResourceBase {
9
+ Type: string
10
+ Properties: Record<string, any>
11
+ DependsOn?: string | string[]
12
+ Condition?: string
13
+ DeletionPolicy?: 'Delete' | 'Retain' | 'Snapshot'
14
+ UpdateReplacePolicy?: 'Delete' | 'Retain' | 'Snapshot'
15
+ Metadata?: Record<string, any>
16
+ }
17
+ export type Tags = Tag[];