import { ResourceBase , ResourceTag } from '../resource' ; import { Value , List } from '../dataTypes' ; export class OwnershipControls { Rules ! : List < OwnershipControlsRule > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ReplicaModifications { Status ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CorsRule { AllowedHeaders ? : List < Value < string > > ; AllowedMethods ! : List < Value < string > > ; AllowedOrigins ! : List < Value < string > > ; ExposedHeaders ? : List < Value < string > > ; Id ? : Value < string > ; MaxAge ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Destination { BucketAccountId ? : Value < string > ; BucketArn ! : Value < string > ; Format ! : Value < string > ; Prefix ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class OwnershipControlsRule { ObjectOwnership ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class AccessControlTranslation { Owner ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class VersioningConfiguration { Status ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ReplicationTime { Status ! : Value < string > ; Time ! : ReplicationTimeValue ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ServerSideEncryptionByDefault { KMSMasterKeyID ? : Value < string > ; SSEAlgorithm ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Tiering { AccessTier ! : Value < string > ; Days ! : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SseKmsEncryptedObjects { Status ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class QueueConfiguration { Event ! : Value < string > ; Filter ? : NotificationFilter ; Queue ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ObjectLockConfiguration { ObjectLockEnabled ? : Value < string > ; Rule ? : ObjectLockRule ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class AccelerateConfiguration { AccelerationStatus ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class IntelligentTieringConfiguration { Id ! : Value < string > ; Prefix ? : Value < string > ; Status ! : Value < string > ; TagFilters ? : List < TagFilter > ; Tierings ! : List < Tiering > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class AbortIncompleteMultipartUpload { DaysAfterInitiation ! : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class DeleteMarkerReplication { Status ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class PublicAccessBlockConfiguration { BlockPublicAcls ? : Value < boolean > ; BlockPublicPolicy ? : Value < boolean > ; IgnorePublicAcls ? : Value < boolean > ; RestrictPublicBuckets ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ReplicationRule { DeleteMarkerReplication ? : DeleteMarkerReplication ; Destination ! : ReplicationDestination ; Filter ? : ReplicationRuleFilter ; Id ? : Value < string > ; Prefix ? : Value < string > ; Priority ? : Value < number > ; SourceSelectionCriteria ? : SourceSelectionCriteria ; Status ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SourceSelectionCriteria { ReplicaModifications ? : ReplicaModifications ; SseKmsEncryptedObjects ? : SseKmsEncryptedObjects ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class StorageClassAnalysis { DataExport ? : DataExport ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class RedirectRule { HostName ? : Value < string > ; HttpRedirectCode ? : Value < string > ; Protocol ? : Value < string > ; ReplaceKeyPrefixWith ? : Value < string > ; ReplaceKeyWith ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ObjectLockRule { DefaultRetention ? : DefaultRetention ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Rule { AbortIncompleteMultipartUpload ? : AbortIncompleteMultipartUpload ; ExpirationDate ? : Value < string > ; ExpirationInDays ? : Value < number > ; ExpiredObjectDeleteMarker ? : Value < boolean > ; Id ? : Value < string > ; NoncurrentVersionExpirationInDays ? : Value < number > ; NoncurrentVersionTransition ? : NoncurrentVersionTransition ; NoncurrentVersionTransitions ? : List < NoncurrentVersionTransition > ; Prefix ? : Value < string > ; Status ! : Value < string > ; TagFilters ? : List < TagFilter > ; Transition ? : Transition ; Transitions ? : List < Transition > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class MetricsConfiguration { Id ! : Value < string > ; Prefix ? : Value < string > ; TagFilters ? : List < TagFilter > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class DataExport { Destination ! : Destination ; OutputSchemaVersion ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ReplicationTimeValue { Minutes ! : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class FilterRule { Name ! : Value < string > ; Value ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ReplicationRuleAndOperator { Prefix ? : Value < string > ; TagFilters ? : List < TagFilter > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class BucketEncryption { ServerSideEncryptionConfiguration ! : List < ServerSideEncryptionRule > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Metrics { EventThreshold ? : ReplicationTimeValue ; Status ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class RoutingRuleCondition { HttpErrorCodeReturnedEquals ? : Value < string > ; KeyPrefixEquals ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LifecycleConfiguration { Rules ! : List < Rule > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class NotificationConfiguration { LambdaConfigurations ? : List < LambdaConfiguration > ; QueueConfigurations ? : List < QueueConfiguration > ; TopicConfigurations ? : List < TopicConfiguration > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class RedirectAllRequestsTo { HostName ! : Value < string > ; Protocol ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class S3KeyFilter { Rules ! : List < FilterRule > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class InventoryConfiguration { Destination ! : Destination ; Enabled ! : Value < boolean > ; Id ! : Value < string > ; IncludedObjectVersions ! : Value < string > ; OptionalFields ? : List < Value < string > > ; Prefix ? : Value < string > ; ScheduleFrequency ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ReplicationConfiguration { Role ! : Value < string > ; Rules ! : List < ReplicationRule > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CorsConfiguration { CorsRules ! : List < CorsRule > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ReplicationDestination { AccessControlTranslation ? : AccessControlTranslation ; Account ? : Value < string > ; Bucket ! : Value < string > ; EncryptionConfiguration ? : EncryptionConfiguration ; Metrics ? : Metrics ; ReplicationTime ? : ReplicationTime ; StorageClass ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class NoncurrentVersionTransition { StorageClass ! : Value < string > ; TransitionInDays ! : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class DefaultRetention { Days ? : Value < number > ; Mode ? : Value < string > ; Years ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class NotificationFilter { S3Key ! : S3KeyFilter ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LambdaConfiguration { Event ! : Value < string > ; Filter ? : NotificationFilter ; Function ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ServerSideEncryptionRule { BucketKeyEnabled ? : Value < boolean > ; ServerSideEncryptionByDefault ? : ServerSideEncryptionByDefault ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class AnalyticsConfiguration { Id ! : Value < string > ; Prefix ? : Value < string > ; StorageClassAnalysis ! : StorageClassAnalysis ; TagFilters ? : List < TagFilter > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LoggingConfiguration { DestinationBucketName ? : Value < string > ; LogFilePrefix ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class RoutingRule { RedirectRule ! : RedirectRule ; RoutingRuleCondition ? : RoutingRuleCondition ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class EncryptionConfiguration { ReplicaKmsKeyID ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class WebsiteConfiguration { ErrorDocument ? : Value < string > ; IndexDocument ? : Value < string > ; RedirectAllRequestsTo ? : RedirectAllRequestsTo ; RoutingRules ? : List < RoutingRule > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class TopicConfiguration { Event ! : Value < string > ; Filter ? : NotificationFilter ; Topic ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class TagFilter { Key ! : Value < string > ; Value ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Transition { StorageClass ! : Value < string > ; TransitionDate ? : Value < string > ; TransitionInDays ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ReplicationRuleFilter { And ? : ReplicationRuleAndOperator ; Prefix ? : Value < string > ; TagFilter ? : TagFilter ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export interface BucketProperties { AccelerateConfiguration ? : AccelerateConfiguration ; AccessControl ? : Value < string > ; AnalyticsConfigurations ? : List < AnalyticsConfiguration > ; BucketEncryption ? : BucketEncryption ; BucketName ? : Value < string > ; CorsConfiguration ? : CorsConfiguration ; IntelligentTieringConfigurations ? : List < IntelligentTieringConfiguration > ; InventoryConfigurations ? : List < InventoryConfiguration > ; LifecycleConfiguration ? : LifecycleConfiguration ; LoggingConfiguration ? : LoggingConfiguration ; MetricsConfigurations ? : List < MetricsConfiguration > ; NotificationConfiguration ? : NotificationConfiguration ; ObjectLockConfiguration ? : ObjectLockConfiguration ; ObjectLockEnabled ? : Value < boolean > ; OwnershipControls ? : OwnershipControls ; PublicAccessBlockConfiguration ? : PublicAccessBlockConfiguration ; ReplicationConfiguration ? : ReplicationConfiguration ; Tags ? : List < ResourceTag > ; VersioningConfiguration ? : VersioningConfiguration ; WebsiteConfiguration ? : WebsiteConfiguration ; } export default class Bucket extends ResourceBase < BucketProperties > { static OwnershipControls = OwnershipControls ; static ReplicaModifications = ReplicaModifications ; static CorsRule = CorsRule ; static Destination = Destination ; static OwnershipControlsRule = OwnershipControlsRule ; static AccessControlTranslation = AccessControlTranslation ; static VersioningConfiguration = VersioningConfiguration ; static ReplicationTime = ReplicationTime ; static ServerSideEncryptionByDefault = ServerSideEncryptionByDefault ; static Tiering = Tiering ; static SseKmsEncryptedObjects = SseKmsEncryptedObjects ; static QueueConfiguration = QueueConfiguration ; static ObjectLockConfiguration = ObjectLockConfiguration ; static AccelerateConfiguration = AccelerateConfiguration ; static IntelligentTieringConfiguration = IntelligentTieringConfiguration ; static AbortIncompleteMultipartUpload = AbortIncompleteMultipartUpload ; static DeleteMarkerReplication = DeleteMarkerReplication ; static PublicAccessBlockConfiguration = PublicAccessBlockConfiguration ; static ReplicationRule = ReplicationRule ; static SourceSelectionCriteria = SourceSelectionCriteria ; static StorageClassAnalysis = StorageClassAnalysis ; static RedirectRule = RedirectRule ; static ObjectLockRule = ObjectLockRule ; static Rule = Rule ; static MetricsConfiguration = MetricsConfiguration ; static DataExport = DataExport ; static ReplicationTimeValue = ReplicationTimeValue ; static FilterRule = FilterRule ; static ReplicationRuleAndOperator = ReplicationRuleAndOperator ; static BucketEncryption = BucketEncryption ; static Metrics = Metrics ; static RoutingRuleCondition = RoutingRuleCondition ; static LifecycleConfiguration = LifecycleConfiguration ; static NotificationConfiguration = NotificationConfiguration ; static RedirectAllRequestsTo = RedirectAllRequestsTo ; static S3KeyFilter = S3KeyFilter ; static InventoryConfiguration = InventoryConfiguration ; static ReplicationConfiguration = ReplicationConfiguration ; static CorsConfiguration = CorsConfiguration ; static ReplicationDestination = ReplicationDestination ; static NoncurrentVersionTransition = NoncurrentVersionTransition ; static DefaultRetention = DefaultRetention ; static NotificationFilter = NotificationFilter ; static LambdaConfiguration = LambdaConfiguration ; static ServerSideEncryptionRule = ServerSideEncryptionRule ; static AnalyticsConfiguration = AnalyticsConfiguration ; static LoggingConfiguration = LoggingConfiguration ; static RoutingRule = RoutingRule ; static EncryptionConfiguration = EncryptionConfiguration ; static WebsiteConfiguration = WebsiteConfiguration ; static TopicConfiguration = TopicConfiguration ; static TagFilter = TagFilter ; static Transition = Transition ; static ReplicationRuleFilter = ReplicationRuleFilter ; constructor ( properties ? ) { super ( 'AWS::S3::Bucket' , properties || { } ) ; } }