Source code for troposphere.s3

# Copyright (c) 2012-2024, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.
#
# *** Do not modify - this file is autogenerated ***


from . import AWSObject, AWSProperty, PropsDictType, Tags
from .validators import boolean, double, integer
from .validators.s3 import AuthenticatedRead  # noqa: F401
from .validators.s3 import BucketOwnerFullControl  # noqa: F401
from .validators.s3 import BucketOwnerRead  # noqa: F401
from .validators.s3 import LogDeliveryWrite  # noqa: F401
from .validators.s3 import Private  # noqa: F401
from .validators.s3 import PublicRead  # noqa: F401
from .validators.s3 import PublicReadWrite  # noqa: F401
from .validators.s3 import (
    policytypes,
    s3_transfer_acceleration_status,
    validate_bucket,
    validate_lifecycle_rule,
    validate_s3_bucket_name,
)


[docs]class AccessGrantsLocationConfiguration(AWSProperty): """ `AccessGrantsLocationConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-accessgrant-accessgrantslocationconfiguration.html>`__ """ props: PropsDictType = { "S3SubPrefix": (str, True), }
[docs]class Grantee(AWSProperty): """ `Grantee <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-accessgrant-grantee.html>`__ """ props: PropsDictType = { "GranteeIdentifier": (str, True), "GranteeType": (str, True), }
[docs]class AccessGrant(AWSObject): """ `AccessGrant <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accessgrant.html>`__ """ resource_type = "AWS::S3::AccessGrant" props: PropsDictType = { "AccessGrantsLocationConfiguration": (AccessGrantsLocationConfiguration, False), "AccessGrantsLocationId": (str, True), "ApplicationArn": (str, False), "Grantee": (Grantee, True), "Permission": (str, True), "S3PrefixType": (str, False), "Tags": (Tags, False), }
[docs]class AccessGrantsInstance(AWSObject): """ `AccessGrantsInstance <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accessgrantsinstance.html>`__ """ resource_type = "AWS::S3::AccessGrantsInstance" props: PropsDictType = { "IdentityCenterArn": (str, False), "Tags": (Tags, False), }
[docs]class AccessGrantsLocation(AWSObject): """ `AccessGrantsLocation <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accessgrantslocation.html>`__ """ resource_type = "AWS::S3::AccessGrantsLocation" props: PropsDictType = { "IamRoleArn": (str, False), "LocationScope": (str, False), "Tags": (Tags, False), }
[docs]class PublicAccessBlockConfiguration(AWSProperty): """ `PublicAccessBlockConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-multiregionaccesspoint-publicaccessblockconfiguration.html>`__ """ props: PropsDictType = { "BlockPublicAcls": (boolean, False), "BlockPublicPolicy": (boolean, False), "IgnorePublicAcls": (boolean, False), "RestrictPublicBuckets": (boolean, False), }
[docs]class VpcConfiguration(AWSProperty): """ `VpcConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-accesspoint-vpcconfiguration.html>`__ """ props: PropsDictType = { "VpcId": (str, False), }
[docs]class AccessPoint(AWSObject): """ `AccessPoint <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accesspoint.html>`__ """ resource_type = "AWS::S3::AccessPoint" props: PropsDictType = { "Bucket": (str, True), "BucketAccountId": (str, False), "Name": (str, False), "Policy": (policytypes, False), "PublicAccessBlockConfiguration": (PublicAccessBlockConfiguration, False), "VpcConfiguration": (VpcConfiguration, False), }
[docs]class AccelerateConfiguration(AWSProperty): """ `AccelerateConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accelerateconfiguration.html>`__ """ props: PropsDictType = { "AccelerationStatus": (s3_transfer_acceleration_status, True), }
[docs]class Destination(AWSProperty): """ `Destination <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html>`__ """ props: PropsDictType = { "BucketAccountId": (str, False), "BucketArn": (str, True), "Format": (str, True), "Prefix": (str, False), }
[docs]class DataExport(AWSProperty): """ `DataExport <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-dataexport.html>`__ """ props: PropsDictType = { "Destination": (Destination, True), "OutputSchemaVersion": (str, True), }
[docs]class StorageClassAnalysis(AWSProperty): """ `StorageClassAnalysis <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-storageclassanalysis.html>`__ """ props: PropsDictType = { "DataExport": (DataExport, False), }
[docs]class TagFilter(AWSProperty): """ `TagFilter <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tagfilter.html>`__ """ props: PropsDictType = { "Key": (str, True), "Value": (str, True), }
[docs]class AnalyticsConfiguration(AWSProperty): """ `AnalyticsConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html>`__ """ props: PropsDictType = { "Id": (str, True), "Prefix": (str, False), "StorageClassAnalysis": (StorageClassAnalysis, True), "TagFilters": ([TagFilter], False), }
[docs]class ServerSideEncryptionByDefault(AWSProperty): """ `ServerSideEncryptionByDefault <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionbydefault.html>`__ """ props: PropsDictType = { "KMSMasterKeyID": (str, False), "SSEAlgorithm": (str, True), }
[docs]class ServerSideEncryptionRule(AWSProperty): """ `ServerSideEncryptionRule <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html>`__ """ props: PropsDictType = { "BucketKeyEnabled": (boolean, False), "ServerSideEncryptionByDefault": (ServerSideEncryptionByDefault, False), }
[docs]class BucketEncryption(AWSProperty): """ `BucketEncryption <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-bucketencryption.html>`__ """ props: PropsDictType = { "ServerSideEncryptionConfiguration": ([ServerSideEncryptionRule], True), }
[docs]class CorsRules(AWSProperty): """ `CorsRules <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-corsrule.html>`__ """ props: PropsDictType = { "AllowedHeaders": ([str], False), "AllowedMethods": ([str], True), "AllowedOrigins": ([str], True), "ExposedHeaders": ([str], False), "Id": (str, False), "MaxAge": (integer, False), }
[docs]class CorsConfiguration(AWSProperty): """ `CorsConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-corsconfiguration.html>`__ """ props: PropsDictType = { "CorsRules": ([CorsRules], True), }
[docs]class Tiering(AWSProperty): """ `Tiering <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tiering.html>`__ """ props: PropsDictType = { "AccessTier": (str, True), "Days": (integer, True), }
[docs]class IntelligentTieringConfiguration(AWSProperty): """ `IntelligentTieringConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-intelligenttieringconfiguration.html>`__ """ props: PropsDictType = { "Id": (str, True), "Prefix": (str, False), "Status": (str, True), "TagFilters": ([TagFilter], False), "Tierings": ([Tiering], True), }
[docs]class InventoryConfiguration(AWSProperty): """ `InventoryConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html>`__ """ props: PropsDictType = { "Destination": (Destination, True), "Enabled": (boolean, True), "Id": (str, True), "IncludedObjectVersions": (str, True), "OptionalFields": ([str], False), "Prefix": (str, False), "ScheduleFrequency": (str, True), }
[docs]class AbortIncompleteMultipartUpload(AWSProperty): """ `AbortIncompleteMultipartUpload <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-abortincompletemultipartupload.html>`__ """ props: PropsDictType = { "DaysAfterInitiation": (integer, True), }
[docs]class LifecycleRuleTransition(AWSProperty): """ `LifecycleRuleTransition <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-transition.html>`__ """ props: PropsDictType = { "StorageClass": (str, True), "TransitionDate": (str, False), "TransitionInDays": (integer, False), }
[docs]class NoncurrentVersionExpiration(AWSProperty): """ `NoncurrentVersionExpiration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-noncurrentversionexpiration.html>`__ """ props: PropsDictType = { "NewerNoncurrentVersions": (integer, False), "NoncurrentDays": (integer, True), }
[docs]class NoncurrentVersionTransition(AWSProperty): """ `NoncurrentVersionTransition <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-noncurrentversiontransition.html>`__ """ props: PropsDictType = { "NewerNoncurrentVersions": (integer, False), "StorageClass": (str, True), "TransitionInDays": (integer, True), }
[docs]class LifecycleRule(AWSProperty): """ `LifecycleRule <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-rule.html>`__ """ props: PropsDictType = { "AbortIncompleteMultipartUpload": (AbortIncompleteMultipartUpload, False), "ExpirationDate": (str, False), "ExpirationInDays": (integer, False), "ExpiredObjectDeleteMarker": (boolean, False), "Id": (str, False), "NoncurrentVersionExpiration": (NoncurrentVersionExpiration, False), "NoncurrentVersionExpirationInDays": (integer, False), "NoncurrentVersionTransition": (NoncurrentVersionTransition, False), "NoncurrentVersionTransitions": ([NoncurrentVersionTransition], False), "ObjectSizeGreaterThan": (str, False), "ObjectSizeLessThan": (str, False), "Prefix": (str, False), "Status": (str, True), "TagFilters": ([TagFilter], False), "Transition": (LifecycleRuleTransition, False), "Transitions": ([LifecycleRuleTransition], False), }
[docs] def validate(self): validate_lifecycle_rule(self)
[docs]class LifecycleConfiguration(AWSProperty): """ `LifecycleConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfiguration.html>`__ """ props: PropsDictType = { "Rules": ([LifecycleRule], True), }
[docs]class PartitionedPrefix(AWSProperty): """ `PartitionedPrefix <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-partitionedprefix.html>`__ """ props: PropsDictType = { "PartitionDateSource": (str, False), }
[docs]class TargetObjectKeyFormat(AWSProperty): """ `TargetObjectKeyFormat <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-targetobjectkeyformat.html>`__ """ props: PropsDictType = { "PartitionedPrefix": (PartitionedPrefix, False), "SimplePrefix": (dict, False), }
[docs]class LoggingConfiguration(AWSProperty): """ `LoggingConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfiguration.html>`__ """ props: PropsDictType = { "DestinationBucketName": (validate_s3_bucket_name, False), "LogFilePrefix": (str, False), "TargetObjectKeyFormat": (TargetObjectKeyFormat, False), }
[docs]class MetricsConfiguration(AWSProperty): """ `MetricsConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metricsconfiguration.html>`__ """ props: PropsDictType = { "AccessPointArn": (str, False), "Id": (str, True), "Prefix": (str, False), "TagFilters": ([TagFilter], False), }
[docs]class EventBridgeConfiguration(AWSProperty): """ `EventBridgeConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-eventbridgeconfiguration.html>`__ """ props: PropsDictType = { "EventBridgeEnabled": (boolean, True), }
[docs]class Rules(AWSProperty): """ `Rules <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-filterrule.html>`__ """ props: PropsDictType = { "Name": (str, True), "Value": (str, True), }
[docs]class S3Key(AWSProperty): """ `S3Key <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-s3keyfilter.html>`__ """ props: PropsDictType = { "Rules": ([Rules], True), }
[docs]class Filter(AWSProperty): """ `Filter <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationfilter.html>`__ """ props: PropsDictType = { "S3Key": (S3Key, True), }
[docs]class LambdaConfigurations(AWSProperty): """ `LambdaConfigurations <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lambdaconfiguration.html>`__ """ props: PropsDictType = { "Event": (str, True), "Filter": (Filter, False), "Function": (str, True), }
[docs]class QueueConfigurations(AWSProperty): """ `QueueConfigurations <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-queueconfiguration.html>`__ """ props: PropsDictType = { "Event": (str, True), "Filter": (Filter, False), "Queue": (str, True), }
[docs]class TopicConfigurations(AWSProperty): """ `TopicConfigurations <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-topicconfiguration.html>`__ """ props: PropsDictType = { "Event": (str, True), "Filter": (Filter, False), "Topic": (str, True), }
[docs]class NotificationConfiguration(AWSProperty): """ `NotificationConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration.html>`__ """ props: PropsDictType = { "EventBridgeConfiguration": (EventBridgeConfiguration, False), "LambdaConfigurations": ([LambdaConfigurations], False), "QueueConfigurations": ([QueueConfigurations], False), "TopicConfigurations": ([TopicConfigurations], False), }
[docs]class DefaultRetention(AWSProperty): """ `DefaultRetention <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-defaultretention.html>`__ """ props: PropsDictType = { "Days": (integer, False), "Mode": (str, False), "Years": (integer, False), }
[docs]class ObjectLockRule(AWSProperty): """ `ObjectLockRule <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-objectlockrule.html>`__ """ props: PropsDictType = { "DefaultRetention": (DefaultRetention, False), }
[docs]class ObjectLockConfiguration(AWSProperty): """ `ObjectLockConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-objectlockconfiguration.html>`__ """ props: PropsDictType = { "ObjectLockEnabled": (str, False), "Rule": (ObjectLockRule, False), }
[docs]class OwnershipControlsRule(AWSProperty): """ `OwnershipControlsRule <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ownershipcontrolsrule.html>`__ """ props: PropsDictType = { "ObjectOwnership": (str, False), }
[docs]class OwnershipControls(AWSProperty): """ `OwnershipControls <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ownershipcontrols.html>`__ """ props: PropsDictType = { "Rules": ([OwnershipControlsRule], True), }
[docs]class DeleteMarkerReplication(AWSProperty): """ `DeleteMarkerReplication <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-deletemarkerreplication.html>`__ """ props: PropsDictType = { "Status": (str, False), }
[docs]class AccessControlTranslation(AWSProperty): """ `AccessControlTranslation <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accesscontroltranslation.html>`__ """ props: PropsDictType = { "Owner": (str, True), }
[docs]class EncryptionConfiguration(AWSProperty): """ `EncryptionConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-encryptionconfiguration.html>`__ """ props: PropsDictType = { "ReplicaKmsKeyID": (str, True), }
[docs]class ReplicationTimeValue(AWSProperty): """ `ReplicationTimeValue <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationtimevalue.html>`__ """ props: PropsDictType = { "Minutes": (integer, True), }
[docs]class Metrics(AWSProperty): """ `Metrics <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metrics.html>`__ """ props: PropsDictType = { "EventThreshold": (ReplicationTimeValue, False), "Status": (str, True), }
[docs]class ReplicationTime(AWSProperty): """ `ReplicationTime <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationtime.html>`__ """ props: PropsDictType = { "Status": (str, True), "Time": (ReplicationTimeValue, True), }
[docs]class ReplicationConfigurationRulesDestination(AWSProperty): """ `ReplicationConfigurationRulesDestination <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationdestination.html>`__ """ props: PropsDictType = { "AccessControlTranslation": (AccessControlTranslation, False), "Account": (str, False), "Bucket": (str, True), "EncryptionConfiguration": (EncryptionConfiguration, False), "Metrics": (Metrics, False), "ReplicationTime": (ReplicationTime, False), "StorageClass": (str, False), }
[docs]class ReplicationRuleAndOperator(AWSProperty): """ `ReplicationRuleAndOperator <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationruleandoperator.html>`__ """ props: PropsDictType = { "Prefix": (str, False), "TagFilters": ([TagFilter], False), }
[docs]class ReplicationRuleFilter(AWSProperty): """ `ReplicationRuleFilter <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationrulefilter.html>`__ """ props: PropsDictType = { "And": (ReplicationRuleAndOperator, False), "Prefix": (str, False), "TagFilter": (TagFilter, False), }
[docs]class ReplicaModifications(AWSProperty): """ `ReplicaModifications <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicamodifications.html>`__ """ props: PropsDictType = { "Status": (str, True), }
[docs]class SseKmsEncryptedObjects(AWSProperty): """ `SseKmsEncryptedObjects <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ssekmsencryptedobjects.html>`__ """ props: PropsDictType = { "Status": (str, True), }
[docs]class SourceSelectionCriteria(AWSProperty): """ `SourceSelectionCriteria <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-sourceselectioncriteria.html>`__ """ props: PropsDictType = { "ReplicaModifications": (ReplicaModifications, False), "SseKmsEncryptedObjects": (SseKmsEncryptedObjects, False), }
[docs]class ReplicationConfigurationRules(AWSProperty): """ `ReplicationConfigurationRules <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationrule.html>`__ """ props: PropsDictType = { "DeleteMarkerReplication": (DeleteMarkerReplication, False), "Destination": (ReplicationConfigurationRulesDestination, True), "Filter": (ReplicationRuleFilter, False), "Id": (str, False), "Prefix": (str, False), "Priority": (integer, False), "SourceSelectionCriteria": (SourceSelectionCriteria, False), "Status": (str, True), }
[docs]class ReplicationConfiguration(AWSProperty): """ `ReplicationConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration.html>`__ """ props: PropsDictType = { "Role": (str, True), "Rules": ([ReplicationConfigurationRules], True), }
[docs]class VersioningConfiguration(AWSProperty): """ `VersioningConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfiguration.html>`__ """ props: PropsDictType = { "Status": (str, True), }
[docs]class RedirectAllRequestsTo(AWSProperty): """ `RedirectAllRequestsTo <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-redirectallrequeststo.html>`__ """ props: PropsDictType = { "HostName": (str, True), "Protocol": (str, False), }
[docs]class RedirectRule(AWSProperty): """ `RedirectRule <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-redirectrule.html>`__ """ props: PropsDictType = { "HostName": (str, False), "HttpRedirectCode": (str, False), "Protocol": (str, False), "ReplaceKeyPrefixWith": (str, False), "ReplaceKeyWith": (str, False), }
[docs]class RoutingRuleCondition(AWSProperty): """ `RoutingRuleCondition <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-routingrulecondition.html>`__ """ props: PropsDictType = { "HttpErrorCodeReturnedEquals": (str, False), "KeyPrefixEquals": (str, False), }
[docs]class RoutingRule(AWSProperty): """ `RoutingRule <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-routingrule.html>`__ """ props: PropsDictType = { "RedirectRule": (RedirectRule, True), "RoutingRuleCondition": (RoutingRuleCondition, False), }
[docs]class WebsiteConfiguration(AWSProperty): """ `WebsiteConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-websiteconfiguration.html>`__ """ props: PropsDictType = { "ErrorDocument": (str, False), "IndexDocument": (str, False), "RedirectAllRequestsTo": (RedirectAllRequestsTo, False), "RoutingRules": ([RoutingRule], False), }
[docs]class Bucket(AWSObject): """ `Bucket <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html>`__ """ resource_type = "AWS::S3::Bucket" props: PropsDictType = { "AccelerateConfiguration": (AccelerateConfiguration, False), "AccessControl": (str, False), "AnalyticsConfigurations": ([AnalyticsConfiguration], False), "BucketEncryption": (BucketEncryption, False), "BucketName": (validate_s3_bucket_name, False), "CorsConfiguration": (CorsConfiguration, False), "IntelligentTieringConfigurations": ([IntelligentTieringConfiguration], False), "InventoryConfigurations": ([InventoryConfiguration], False), "LifecycleConfiguration": (LifecycleConfiguration, False), "LoggingConfiguration": (LoggingConfiguration, False), "MetricsConfigurations": ([MetricsConfiguration], False), "NotificationConfiguration": (NotificationConfiguration, False), "ObjectLockConfiguration": (ObjectLockConfiguration, False), "ObjectLockEnabled": (boolean, False), "OwnershipControls": (OwnershipControls, False), "PublicAccessBlockConfiguration": (PublicAccessBlockConfiguration, False), "ReplicationConfiguration": (ReplicationConfiguration, False), "Tags": (Tags, False), "VersioningConfiguration": (VersioningConfiguration, False), "WebsiteConfiguration": (WebsiteConfiguration, False), }
[docs] def validate(self): validate_bucket(self)
[docs]class BucketPolicy(AWSObject): """ `BucketPolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucketpolicy.html>`__ """ resource_type = "AWS::S3::BucketPolicy" props: PropsDictType = { "Bucket": (str, True), "PolicyDocument": (policytypes, True), }
[docs]class Region(AWSProperty): """ `Region <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-multiregionaccesspoint-region.html>`__ """ props: PropsDictType = { "Bucket": (str, True), "BucketAccountId": (str, False), }
[docs]class MultiRegionAccessPoint(AWSObject): """ `MultiRegionAccessPoint <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-multiregionaccesspoint.html>`__ """ resource_type = "AWS::S3::MultiRegionAccessPoint" props: PropsDictType = { "Name": (str, False), "PublicAccessBlockConfiguration": (PublicAccessBlockConfiguration, False), "Regions": ([Region], True), }
[docs]class MultiRegionAccessPointPolicy(AWSObject): """ `MultiRegionAccessPointPolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-multiregionaccesspointpolicy.html>`__ """ resource_type = "AWS::S3::MultiRegionAccessPointPolicy" props: PropsDictType = { "MrapName": (str, True), "Policy": (policytypes, True), }
[docs]class ActivityMetrics(AWSProperty): """ `ActivityMetrics <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-activitymetrics.html>`__ """ props: PropsDictType = { "IsEnabled": (boolean, False), }
[docs]class AdvancedCostOptimizationMetrics(AWSProperty): """ `AdvancedCostOptimizationMetrics <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-advancedcostoptimizationmetrics.html>`__ """ props: PropsDictType = { "IsEnabled": (boolean, False), }
[docs]class AdvancedDataProtectionMetrics(AWSProperty): """ `AdvancedDataProtectionMetrics <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-advanceddataprotectionmetrics.html>`__ """ props: PropsDictType = { "IsEnabled": (boolean, False), }
[docs]class DetailedStatusCodesMetrics(AWSProperty): """ `DetailedStatusCodesMetrics <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-detailedstatuscodesmetrics.html>`__ """ props: PropsDictType = { "IsEnabled": (boolean, False), }
[docs]class SelectionCriteria(AWSProperty): """ `SelectionCriteria <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-selectioncriteria.html>`__ """ props: PropsDictType = { "Delimiter": (str, False), "MaxDepth": (integer, False), "MinStorageBytesPercentage": (double, False), }
[docs]class PrefixLevelStorageMetrics(AWSProperty): """ `PrefixLevelStorageMetrics <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevelstoragemetrics.html>`__ """ props: PropsDictType = { "IsEnabled": (boolean, False), "SelectionCriteria": (SelectionCriteria, False), }
[docs]class PrefixLevel(AWSProperty): """ `PrefixLevel <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevel.html>`__ """ props: PropsDictType = { "StorageMetrics": (PrefixLevelStorageMetrics, True), }
[docs]class BucketLevel(AWSProperty): """ `BucketLevel <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketlevel.html>`__ """ props: PropsDictType = { "ActivityMetrics": (ActivityMetrics, False), "AdvancedCostOptimizationMetrics": (AdvancedCostOptimizationMetrics, False), "AdvancedDataProtectionMetrics": (AdvancedDataProtectionMetrics, False), "DetailedStatusCodesMetrics": (DetailedStatusCodesMetrics, False), "PrefixLevel": (PrefixLevel, False), }
[docs]class StorageLensGroupSelectionCriteria(AWSProperty): """ `StorageLensGroupSelectionCriteria <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensgroupselectioncriteria.html>`__ """ props: PropsDictType = { "Exclude": ([str], False), "Include": ([str], False), }
[docs]class StorageLensGroupLevel(AWSProperty): """ `StorageLensGroupLevel <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensgrouplevel.html>`__ """ props: PropsDictType = { "StorageLensGroupSelectionCriteria": (StorageLensGroupSelectionCriteria, False), }
[docs]class AccountLevel(AWSProperty): """ `AccountLevel <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-accountlevel.html>`__ """ props: PropsDictType = { "ActivityMetrics": (ActivityMetrics, False), "AdvancedCostOptimizationMetrics": (AdvancedCostOptimizationMetrics, False), "AdvancedDataProtectionMetrics": (AdvancedDataProtectionMetrics, False), "BucketLevel": (BucketLevel, True), "DetailedStatusCodesMetrics": (DetailedStatusCodesMetrics, False), "StorageLensGroupLevel": (StorageLensGroupLevel, False), }
[docs]class AwsOrg(AWSProperty): """ `AwsOrg <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-awsorg.html>`__ """ props: PropsDictType = { "Arn": (str, True), }
[docs]class BucketsAndRegions(AWSProperty): """ `BucketsAndRegions <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketsandregions.html>`__ """ props: PropsDictType = { "Buckets": ([str], False), "Regions": ([str], False), }
[docs]class CloudWatchMetrics(AWSProperty): """ `CloudWatchMetrics <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-cloudwatchmetrics.html>`__ """ props: PropsDictType = { "IsEnabled": (boolean, True), }
[docs]class SSEKMS(AWSProperty): """ `SSEKMS <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-ssekms.html>`__ """ props: PropsDictType = { "KeyId": (str, True), }
[docs]class Encryption(AWSProperty): """ `Encryption <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-encryption.html>`__ """ props: PropsDictType = { "SSEKMS": (SSEKMS, False), "SSES3": (dict, False), }
[docs]class S3BucketDestination(AWSProperty): """ `S3BucketDestination <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html>`__ """ props: PropsDictType = { "AccountId": (str, True), "Arn": (str, True), "Encryption": (Encryption, False), "Format": (str, True), "OutputSchemaVersion": (str, True), "Prefix": (str, False), }
[docs]class StorageLensDataExport(AWSProperty): """ `StorageLensDataExport <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-dataexport.html>`__ """ props: PropsDictType = { "CloudWatchMetrics": (CloudWatchMetrics, False), "S3BucketDestination": (S3BucketDestination, False), }
[docs]class StorageLensConfiguration(AWSProperty): """ `StorageLensConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html>`__ """ props: PropsDictType = { "AccountLevel": (AccountLevel, True), "AwsOrg": (AwsOrg, False), "DataExport": (StorageLensDataExport, False), "Exclude": (BucketsAndRegions, False), "Id": (str, True), "Include": (BucketsAndRegions, False), "IsEnabled": (boolean, True), "StorageLensArn": (str, False), }
[docs]class StorageLens(AWSObject): """ `StorageLens <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-storagelens.html>`__ """ resource_type = "AWS::S3::StorageLens" props: PropsDictType = { "StorageLensConfiguration": (StorageLensConfiguration, True), "Tags": (Tags, False), }
[docs]class MatchObjectAge(AWSProperty): """ `MatchObjectAge <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelensgroup-matchobjectage.html>`__ """ props: PropsDictType = { "DaysGreaterThan": (integer, False), "DaysLessThan": (integer, False), }
[docs]class MatchObjectSize(AWSProperty): """ `MatchObjectSize <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelensgroup-matchobjectsize.html>`__ """ props: PropsDictType = { "BytesGreaterThan": (integer, False), "BytesLessThan": (integer, False), }
[docs]class And(AWSProperty): """ `And <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelensgroup-and.html>`__ """ props: PropsDictType = { "MatchAnyPrefix": ([str], False), "MatchAnySuffix": ([str], False), "MatchAnyTag": (Tags, False), "MatchObjectAge": (MatchObjectAge, False), "MatchObjectSize": (MatchObjectSize, False), }
[docs]class Or(AWSProperty): """ `Or <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelensgroup-or.html>`__ """ props: PropsDictType = { "MatchAnyPrefix": ([str], False), "MatchAnySuffix": ([str], False), "MatchAnyTag": (Tags, False), "MatchObjectAge": (MatchObjectAge, False), "MatchObjectSize": (MatchObjectSize, False), }
[docs]class StorageLensFilter(AWSProperty): """ `StorageLensFilter <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelensgroup-filter.html>`__ """ props: PropsDictType = { "And": (And, False), "MatchAnyPrefix": ([str], False), "MatchAnySuffix": ([str], False), "MatchAnyTag": (Tags, False), "MatchObjectAge": (MatchObjectAge, False), "MatchObjectSize": (MatchObjectSize, False), "Or": (Or, False), }
[docs]class StorageLensGroup(AWSObject): """ `StorageLensGroup <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-storagelensgroup.html>`__ """ resource_type = "AWS::S3::StorageLensGroup" props: PropsDictType = { "Filter": (StorageLensFilter, True), "Name": (str, True), "Tags": (Tags, False), }
[docs]class PolicyStatus(AWSProperty): """ `PolicyStatus <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-multiregionaccesspointpolicy-policystatus.html>`__ """ props: PropsDictType = { "IsPublic": (str, True), }