UNPKG

@aws-cdk/aws-s3

Version:

The CDK Construct Library for AWS::S3

866 lines 1.16 MB
"use strict"; var _a, _b, _c, _d, _e, _f; Object.defineProperty(exports, "__esModule", { value: true }); exports.CfnStorageLens = exports.CfnMultiRegionAccessPointPolicy = exports.CfnMultiRegionAccessPoint = exports.CfnBucketPolicy = exports.CfnBucket = exports.CfnAccessPoint = void 0; const jsiiDeprecationWarnings = require("../.warnings.jsii.js"); const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); // Copyright 2012-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. // Generated from the AWS CloudFormation Resource Specification // See: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html // @cfn2ts:meta@ {"generated":"2023-06-19T15:13:48.657Z","fingerprint":"osJgTgrb2o33gLk5caBXpAzPROGeJTepQS25vyDov+0="} /* eslint-disable max-len */ // This is generated code - line lengths are difficult to control const cdk = require("@aws-cdk/core"); const cfn_parse = require("@aws-cdk/core/lib/helpers-internal"); /** * Determine whether the given properties match those of a `CfnAccessPointProps` * * @param properties - the TypeScript properties of a `CfnAccessPointProps` * * @returns the result of the validation. */ function CfnAccessPointPropsValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('bucket', cdk.requiredValidator)(properties.bucket)); errors.collect(cdk.propertyValidator('bucket', cdk.validateString)(properties.bucket)); errors.collect(cdk.propertyValidator('bucketAccountId', cdk.validateString)(properties.bucketAccountId)); errors.collect(cdk.propertyValidator('name', cdk.validateString)(properties.name)); errors.collect(cdk.propertyValidator('policy', cdk.validateObject)(properties.policy)); errors.collect(cdk.propertyValidator('publicAccessBlockConfiguration', CfnAccessPoint_PublicAccessBlockConfigurationPropertyValidator)(properties.publicAccessBlockConfiguration)); errors.collect(cdk.propertyValidator('vpcConfiguration', CfnAccessPoint_VpcConfigurationPropertyValidator)(properties.vpcConfiguration)); return errors.wrap('supplied properties not correct for "CfnAccessPointProps"'); } /** * Renders the AWS CloudFormation properties of an `AWS::S3::AccessPoint` resource * * @param properties - the TypeScript properties of a `CfnAccessPointProps` * * @returns the AWS CloudFormation properties of an `AWS::S3::AccessPoint` resource. */ // @ts-ignore TS6133 function cfnAccessPointPropsToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAccessPointPropsValidator(properties).assertSuccess(); return { Bucket: cdk.stringToCloudFormation(properties.bucket), BucketAccountId: cdk.stringToCloudFormation(properties.bucketAccountId), Name: cdk.stringToCloudFormation(properties.name), Policy: cdk.objectToCloudFormation(properties.policy), PublicAccessBlockConfiguration: cfnAccessPointPublicAccessBlockConfigurationPropertyToCloudFormation(properties.publicAccessBlockConfiguration), VpcConfiguration: cfnAccessPointVpcConfigurationPropertyToCloudFormation(properties.vpcConfiguration), }; } // @ts-ignore TS6133 function CfnAccessPointPropsFromCloudFormation(properties) { properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('bucket', 'Bucket', cfn_parse.FromCloudFormation.getString(properties.Bucket)); ret.addPropertyResult('bucketAccountId', 'BucketAccountId', properties.BucketAccountId != null ? cfn_parse.FromCloudFormation.getString(properties.BucketAccountId) : undefined); ret.addPropertyResult('name', 'Name', properties.Name != null ? cfn_parse.FromCloudFormation.getString(properties.Name) : undefined); ret.addPropertyResult('policy', 'Policy', properties.Policy != null ? cfn_parse.FromCloudFormation.getAny(properties.Policy) : undefined); ret.addPropertyResult('publicAccessBlockConfiguration', 'PublicAccessBlockConfiguration', properties.PublicAccessBlockConfiguration != null ? CfnAccessPointPublicAccessBlockConfigurationPropertyFromCloudFormation(properties.PublicAccessBlockConfiguration) : undefined); ret.addPropertyResult('vpcConfiguration', 'VpcConfiguration', properties.VpcConfiguration != null ? CfnAccessPointVpcConfigurationPropertyFromCloudFormation(properties.VpcConfiguration) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * A CloudFormation `AWS::S3::AccessPoint` * * The AWS::S3::AccessPoint resource is an Amazon S3 resource type that you can use to access buckets. * * @cloudformationResource AWS::S3::AccessPoint * @stability external * * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-accesspoint.html */ class CfnAccessPoint extends cdk.CfnResource { /** * Create a new `AWS::S3::AccessPoint`. * * @param scope - scope in which this resource is defined * @param id - scoped id of the resource * @param props - resource properties */ constructor(scope, id, props) { super(scope, id, { type: CfnAccessPoint.CFN_RESOURCE_TYPE_NAME, properties: props }); try { jsiiDeprecationWarnings._aws_cdk_aws_s3_CfnAccessPointProps(props); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, CfnAccessPoint); } throw error; } cdk.requireProperty(props, 'bucket', this); this.attrAlias = cdk.Token.asString(this.getAtt('Alias')); this.attrArn = cdk.Token.asString(this.getAtt('Arn')); this.attrName = cdk.Token.asString(this.getAtt('Name')); this.attrNetworkOrigin = cdk.Token.asString(this.getAtt('NetworkOrigin')); this.bucket = props.bucket; this.bucketAccountId = props.bucketAccountId; this.name = props.name; this.policy = props.policy; this.publicAccessBlockConfiguration = props.publicAccessBlockConfiguration; this.vpcConfiguration = props.vpcConfiguration; } /** * A factory method that creates a new instance of this class from an object * containing the CloudFormation properties of this resource. * Used in the @aws-cdk/cloudformation-include module. * * @internal */ static _fromCloudFormation(scope, id, resourceAttributes, options) { resourceAttributes = resourceAttributes || {}; const resourceProperties = options.parser.parseValue(resourceAttributes.Properties); const propsResult = CfnAccessPointPropsFromCloudFormation(resourceProperties); const ret = new CfnAccessPoint(scope, id, propsResult.value); for (const [propKey, propVal] of Object.entries(propsResult.extraProperties)) { ret.addPropertyOverride(propKey, propVal); } options.parser.handleAttributes(ret, resourceAttributes, id); return ret; } /** * Examines the CloudFormation resource and discloses attributes. * * @param inspector - tree inspector to collect and process attributes * */ inspect(inspector) { inspector.addAttribute("aws:cdk:cloudformation:type", CfnAccessPoint.CFN_RESOURCE_TYPE_NAME); inspector.addAttribute("aws:cdk:cloudformation:props", this.cfnProperties); } get cfnProperties() { return { bucket: this.bucket, bucketAccountId: this.bucketAccountId, name: this.name, policy: this.policy, publicAccessBlockConfiguration: this.publicAccessBlockConfiguration, vpcConfiguration: this.vpcConfiguration, }; } renderProperties(props) { return cfnAccessPointPropsToCloudFormation(props); } } exports.CfnAccessPoint = CfnAccessPoint; _a = JSII_RTTI_SYMBOL_1; CfnAccessPoint[_a] = { fqn: "@aws-cdk/aws-s3.CfnAccessPoint", version: "1.204.0" }; /** * The CloudFormation resource type name for this resource class. */ CfnAccessPoint.CFN_RESOURCE_TYPE_NAME = "AWS::S3::AccessPoint"; /** * Determine whether the given properties match those of a `PublicAccessBlockConfigurationProperty` * * @param properties - the TypeScript properties of a `PublicAccessBlockConfigurationProperty` * * @returns the result of the validation. */ function CfnAccessPoint_PublicAccessBlockConfigurationPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('blockPublicAcls', cdk.validateBoolean)(properties.blockPublicAcls)); errors.collect(cdk.propertyValidator('blockPublicPolicy', cdk.validateBoolean)(properties.blockPublicPolicy)); errors.collect(cdk.propertyValidator('ignorePublicAcls', cdk.validateBoolean)(properties.ignorePublicAcls)); errors.collect(cdk.propertyValidator('restrictPublicBuckets', cdk.validateBoolean)(properties.restrictPublicBuckets)); return errors.wrap('supplied properties not correct for "PublicAccessBlockConfigurationProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::S3::AccessPoint.PublicAccessBlockConfiguration` resource * * @param properties - the TypeScript properties of a `PublicAccessBlockConfigurationProperty` * * @returns the AWS CloudFormation properties of an `AWS::S3::AccessPoint.PublicAccessBlockConfiguration` resource. */ // @ts-ignore TS6133 function cfnAccessPointPublicAccessBlockConfigurationPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAccessPoint_PublicAccessBlockConfigurationPropertyValidator(properties).assertSuccess(); return { BlockPublicAcls: cdk.booleanToCloudFormation(properties.blockPublicAcls), BlockPublicPolicy: cdk.booleanToCloudFormation(properties.blockPublicPolicy), IgnorePublicAcls: cdk.booleanToCloudFormation(properties.ignorePublicAcls), RestrictPublicBuckets: cdk.booleanToCloudFormation(properties.restrictPublicBuckets), }; } // @ts-ignore TS6133 function CfnAccessPointPublicAccessBlockConfigurationPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('blockPublicAcls', 'BlockPublicAcls', properties.BlockPublicAcls != null ? cfn_parse.FromCloudFormation.getBoolean(properties.BlockPublicAcls) : undefined); ret.addPropertyResult('blockPublicPolicy', 'BlockPublicPolicy', properties.BlockPublicPolicy != null ? cfn_parse.FromCloudFormation.getBoolean(properties.BlockPublicPolicy) : undefined); ret.addPropertyResult('ignorePublicAcls', 'IgnorePublicAcls', properties.IgnorePublicAcls != null ? cfn_parse.FromCloudFormation.getBoolean(properties.IgnorePublicAcls) : undefined); ret.addPropertyResult('restrictPublicBuckets', 'RestrictPublicBuckets', properties.RestrictPublicBuckets != null ? cfn_parse.FromCloudFormation.getBoolean(properties.RestrictPublicBuckets) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `VpcConfigurationProperty` * * @param properties - the TypeScript properties of a `VpcConfigurationProperty` * * @returns the result of the validation. */ function CfnAccessPoint_VpcConfigurationPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('vpcId', cdk.validateString)(properties.vpcId)); return errors.wrap('supplied properties not correct for "VpcConfigurationProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::S3::AccessPoint.VpcConfiguration` resource * * @param properties - the TypeScript properties of a `VpcConfigurationProperty` * * @returns the AWS CloudFormation properties of an `AWS::S3::AccessPoint.VpcConfiguration` resource. */ // @ts-ignore TS6133 function cfnAccessPointVpcConfigurationPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAccessPoint_VpcConfigurationPropertyValidator(properties).assertSuccess(); return { VpcId: cdk.stringToCloudFormation(properties.vpcId), }; } // @ts-ignore TS6133 function CfnAccessPointVpcConfigurationPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('vpcId', 'VpcId', properties.VpcId != null ? cfn_parse.FromCloudFormation.getString(properties.VpcId) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `CfnBucketProps` * * @param properties - the TypeScript properties of a `CfnBucketProps` * * @returns the result of the validation. */ function CfnBucketPropsValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('accelerateConfiguration', CfnBucket_AccelerateConfigurationPropertyValidator)(properties.accelerateConfiguration)); errors.collect(cdk.propertyValidator('accessControl', cdk.validateString)(properties.accessControl)); errors.collect(cdk.propertyValidator('analyticsConfigurations', cdk.listValidator(CfnBucket_AnalyticsConfigurationPropertyValidator))(properties.analyticsConfigurations)); errors.collect(cdk.propertyValidator('bucketEncryption', CfnBucket_BucketEncryptionPropertyValidator)(properties.bucketEncryption)); errors.collect(cdk.propertyValidator('bucketName', cdk.validateString)(properties.bucketName)); errors.collect(cdk.propertyValidator('corsConfiguration', CfnBucket_CorsConfigurationPropertyValidator)(properties.corsConfiguration)); errors.collect(cdk.propertyValidator('intelligentTieringConfigurations', cdk.listValidator(CfnBucket_IntelligentTieringConfigurationPropertyValidator))(properties.intelligentTieringConfigurations)); errors.collect(cdk.propertyValidator('inventoryConfigurations', cdk.listValidator(CfnBucket_InventoryConfigurationPropertyValidator))(properties.inventoryConfigurations)); errors.collect(cdk.propertyValidator('lifecycleConfiguration', CfnBucket_LifecycleConfigurationPropertyValidator)(properties.lifecycleConfiguration)); errors.collect(cdk.propertyValidator('loggingConfiguration', CfnBucket_LoggingConfigurationPropertyValidator)(properties.loggingConfiguration)); errors.collect(cdk.propertyValidator('metricsConfigurations', cdk.listValidator(CfnBucket_MetricsConfigurationPropertyValidator))(properties.metricsConfigurations)); errors.collect(cdk.propertyValidator('notificationConfiguration', CfnBucket_NotificationConfigurationPropertyValidator)(properties.notificationConfiguration)); errors.collect(cdk.propertyValidator('objectLockConfiguration', CfnBucket_ObjectLockConfigurationPropertyValidator)(properties.objectLockConfiguration)); errors.collect(cdk.propertyValidator('objectLockEnabled', cdk.validateBoolean)(properties.objectLockEnabled)); errors.collect(cdk.propertyValidator('ownershipControls', CfnBucket_OwnershipControlsPropertyValidator)(properties.ownershipControls)); errors.collect(cdk.propertyValidator('publicAccessBlockConfiguration', CfnBucket_PublicAccessBlockConfigurationPropertyValidator)(properties.publicAccessBlockConfiguration)); errors.collect(cdk.propertyValidator('replicationConfiguration', CfnBucket_ReplicationConfigurationPropertyValidator)(properties.replicationConfiguration)); errors.collect(cdk.propertyValidator('tags', cdk.listValidator(cdk.validateCfnTag))(properties.tags)); errors.collect(cdk.propertyValidator('versioningConfiguration', CfnBucket_VersioningConfigurationPropertyValidator)(properties.versioningConfiguration)); errors.collect(cdk.propertyValidator('websiteConfiguration', CfnBucket_WebsiteConfigurationPropertyValidator)(properties.websiteConfiguration)); return errors.wrap('supplied properties not correct for "CfnBucketProps"'); } /** * Renders the AWS CloudFormation properties of an `AWS::S3::Bucket` resource * * @param properties - the TypeScript properties of a `CfnBucketProps` * * @returns the AWS CloudFormation properties of an `AWS::S3::Bucket` resource. */ // @ts-ignore TS6133 function cfnBucketPropsToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnBucketPropsValidator(properties).assertSuccess(); return { AccelerateConfiguration: cfnBucketAccelerateConfigurationPropertyToCloudFormation(properties.accelerateConfiguration), AccessControl: cdk.stringToCloudFormation(properties.accessControl), AnalyticsConfigurations: cdk.listMapper(cfnBucketAnalyticsConfigurationPropertyToCloudFormation)(properties.analyticsConfigurations), BucketEncryption: cfnBucketBucketEncryptionPropertyToCloudFormation(properties.bucketEncryption), BucketName: cdk.stringToCloudFormation(properties.bucketName), CorsConfiguration: cfnBucketCorsConfigurationPropertyToCloudFormation(properties.corsConfiguration), IntelligentTieringConfigurations: cdk.listMapper(cfnBucketIntelligentTieringConfigurationPropertyToCloudFormation)(properties.intelligentTieringConfigurations), InventoryConfigurations: cdk.listMapper(cfnBucketInventoryConfigurationPropertyToCloudFormation)(properties.inventoryConfigurations), LifecycleConfiguration: cfnBucketLifecycleConfigurationPropertyToCloudFormation(properties.lifecycleConfiguration), LoggingConfiguration: cfnBucketLoggingConfigurationPropertyToCloudFormation(properties.loggingConfiguration), MetricsConfigurations: cdk.listMapper(cfnBucketMetricsConfigurationPropertyToCloudFormation)(properties.metricsConfigurations), NotificationConfiguration: cfnBucketNotificationConfigurationPropertyToCloudFormation(properties.notificationConfiguration), ObjectLockConfiguration: cfnBucketObjectLockConfigurationPropertyToCloudFormation(properties.objectLockConfiguration), ObjectLockEnabled: cdk.booleanToCloudFormation(properties.objectLockEnabled), OwnershipControls: cfnBucketOwnershipControlsPropertyToCloudFormation(properties.ownershipControls), PublicAccessBlockConfiguration: cfnBucketPublicAccessBlockConfigurationPropertyToCloudFormation(properties.publicAccessBlockConfiguration), ReplicationConfiguration: cfnBucketReplicationConfigurationPropertyToCloudFormation(properties.replicationConfiguration), Tags: cdk.listMapper(cdk.cfnTagToCloudFormation)(properties.tags), VersioningConfiguration: cfnBucketVersioningConfigurationPropertyToCloudFormation(properties.versioningConfiguration), WebsiteConfiguration: cfnBucketWebsiteConfigurationPropertyToCloudFormation(properties.websiteConfiguration), }; } // @ts-ignore TS6133 function CfnBucketPropsFromCloudFormation(properties) { properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('accelerateConfiguration', 'AccelerateConfiguration', properties.AccelerateConfiguration != null ? CfnBucketAccelerateConfigurationPropertyFromCloudFormation(properties.AccelerateConfiguration) : undefined); ret.addPropertyResult('accessControl', 'AccessControl', properties.AccessControl != null ? cfn_parse.FromCloudFormation.getString(properties.AccessControl) : undefined); ret.addPropertyResult('analyticsConfigurations', 'AnalyticsConfigurations', properties.AnalyticsConfigurations != null ? cfn_parse.FromCloudFormation.getArray(CfnBucketAnalyticsConfigurationPropertyFromCloudFormation)(properties.AnalyticsConfigurations) : undefined); ret.addPropertyResult('bucketEncryption', 'BucketEncryption', properties.BucketEncryption != null ? CfnBucketBucketEncryptionPropertyFromCloudFormation(properties.BucketEncryption) : undefined); ret.addPropertyResult('bucketName', 'BucketName', properties.BucketName != null ? cfn_parse.FromCloudFormation.getString(properties.BucketName) : undefined); ret.addPropertyResult('corsConfiguration', 'CorsConfiguration', properties.CorsConfiguration != null ? CfnBucketCorsConfigurationPropertyFromCloudFormation(properties.CorsConfiguration) : undefined); ret.addPropertyResult('intelligentTieringConfigurations', 'IntelligentTieringConfigurations', properties.IntelligentTieringConfigurations != null ? cfn_parse.FromCloudFormation.getArray(CfnBucketIntelligentTieringConfigurationPropertyFromCloudFormation)(properties.IntelligentTieringConfigurations) : undefined); ret.addPropertyResult('inventoryConfigurations', 'InventoryConfigurations', properties.InventoryConfigurations != null ? cfn_parse.FromCloudFormation.getArray(CfnBucketInventoryConfigurationPropertyFromCloudFormation)(properties.InventoryConfigurations) : undefined); ret.addPropertyResult('lifecycleConfiguration', 'LifecycleConfiguration', properties.LifecycleConfiguration != null ? CfnBucketLifecycleConfigurationPropertyFromCloudFormation(properties.LifecycleConfiguration) : undefined); ret.addPropertyResult('loggingConfiguration', 'LoggingConfiguration', properties.LoggingConfiguration != null ? CfnBucketLoggingConfigurationPropertyFromCloudFormation(properties.LoggingConfiguration) : undefined); ret.addPropertyResult('metricsConfigurations', 'MetricsConfigurations', properties.MetricsConfigurations != null ? cfn_parse.FromCloudFormation.getArray(CfnBucketMetricsConfigurationPropertyFromCloudFormation)(properties.MetricsConfigurations) : undefined); ret.addPropertyResult('notificationConfiguration', 'NotificationConfiguration', properties.NotificationConfiguration != null ? CfnBucketNotificationConfigurationPropertyFromCloudFormation(properties.NotificationConfiguration) : undefined); ret.addPropertyResult('objectLockConfiguration', 'ObjectLockConfiguration', properties.ObjectLockConfiguration != null ? CfnBucketObjectLockConfigurationPropertyFromCloudFormation(properties.ObjectLockConfiguration) : undefined); ret.addPropertyResult('objectLockEnabled', 'ObjectLockEnabled', properties.ObjectLockEnabled != null ? cfn_parse.FromCloudFormation.getBoolean(properties.ObjectLockEnabled) : undefined); ret.addPropertyResult('ownershipControls', 'OwnershipControls', properties.OwnershipControls != null ? CfnBucketOwnershipControlsPropertyFromCloudFormation(properties.OwnershipControls) : undefined); ret.addPropertyResult('publicAccessBlockConfiguration', 'PublicAccessBlockConfiguration', properties.PublicAccessBlockConfiguration != null ? CfnBucketPublicAccessBlockConfigurationPropertyFromCloudFormation(properties.PublicAccessBlockConfiguration) : undefined); ret.addPropertyResult('replicationConfiguration', 'ReplicationConfiguration', properties.ReplicationConfiguration != null ? CfnBucketReplicationConfigurationPropertyFromCloudFormation(properties.ReplicationConfiguration) : undefined); ret.addPropertyResult('tags', 'Tags', properties.Tags != null ? cfn_parse.FromCloudFormation.getArray(cfn_parse.FromCloudFormation.getCfnTag)(properties.Tags) : undefined); ret.addPropertyResult('versioningConfiguration', 'VersioningConfiguration', properties.VersioningConfiguration != null ? CfnBucketVersioningConfigurationPropertyFromCloudFormation(properties.VersioningConfiguration) : undefined); ret.addPropertyResult('websiteConfiguration', 'WebsiteConfiguration', properties.WebsiteConfiguration != null ? CfnBucketWebsiteConfigurationPropertyFromCloudFormation(properties.WebsiteConfiguration) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * A CloudFormation `AWS::S3::Bucket` * * The `AWS::S3::Bucket` resource creates an Amazon S3 bucket in the same AWS Region where you create the AWS CloudFormation stack. * * To control how AWS CloudFormation handles the bucket when the stack is deleted, you can set a deletion policy for your bucket. You can choose to *retain* the bucket or to *delete* the bucket. For more information, see [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) . * * > You can only delete empty buckets. Deletion fails for buckets that have contents. * * @cloudformationResource AWS::S3::Bucket * @stability external * * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html */ class CfnBucket extends cdk.CfnResource { /** * Create a new `AWS::S3::Bucket`. * * @param scope - scope in which this resource is defined * @param id - scoped id of the resource * @param props - resource properties */ constructor(scope, id, props = {}) { super(scope, id, { type: CfnBucket.CFN_RESOURCE_TYPE_NAME, properties: props }); try { jsiiDeprecationWarnings._aws_cdk_aws_s3_CfnBucketProps(props); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, CfnBucket); } throw error; } this.attrArn = cdk.Token.asString(this.getAtt('Arn')); this.attrDomainName = cdk.Token.asString(this.getAtt('DomainName')); this.attrDualStackDomainName = cdk.Token.asString(this.getAtt('DualStackDomainName')); this.attrRegionalDomainName = cdk.Token.asString(this.getAtt('RegionalDomainName')); this.attrWebsiteUrl = cdk.Token.asString(this.getAtt('WebsiteURL')); this.accelerateConfiguration = props.accelerateConfiguration; this.accessControl = props.accessControl; this.analyticsConfigurations = props.analyticsConfigurations; this.bucketEncryption = props.bucketEncryption; this.bucketName = props.bucketName; this.corsConfiguration = props.corsConfiguration; this.intelligentTieringConfigurations = props.intelligentTieringConfigurations; this.inventoryConfigurations = props.inventoryConfigurations; this.lifecycleConfiguration = props.lifecycleConfiguration; this.loggingConfiguration = props.loggingConfiguration; this.metricsConfigurations = props.metricsConfigurations; this.notificationConfiguration = props.notificationConfiguration; this.objectLockConfiguration = props.objectLockConfiguration; this.objectLockEnabled = props.objectLockEnabled; this.ownershipControls = props.ownershipControls; this.publicAccessBlockConfiguration = props.publicAccessBlockConfiguration; this.replicationConfiguration = props.replicationConfiguration; this.tags = new cdk.TagManager(cdk.TagType.STANDARD, "AWS::S3::Bucket", props.tags, { tagPropertyName: 'tags' }); this.versioningConfiguration = props.versioningConfiguration; this.websiteConfiguration = props.websiteConfiguration; if (this.node.scope && cdk.Resource.isResource(this.node.scope)) { this.node.addValidation({ validate: () => this.cfnOptions.deletionPolicy === undefined ? ['\'AWS::S3::Bucket\' is a stateful resource type, and you must specify a Removal Policy for it. Call \'resource.applyRemovalPolicy()\'.'] : [] }); } } /** * A factory method that creates a new instance of this class from an object * containing the CloudFormation properties of this resource. * Used in the @aws-cdk/cloudformation-include module. * * @internal */ static _fromCloudFormation(scope, id, resourceAttributes, options) { resourceAttributes = resourceAttributes || {}; const resourceProperties = options.parser.parseValue(resourceAttributes.Properties); const propsResult = CfnBucketPropsFromCloudFormation(resourceProperties); const ret = new CfnBucket(scope, id, propsResult.value); for (const [propKey, propVal] of Object.entries(propsResult.extraProperties)) { ret.addPropertyOverride(propKey, propVal); } options.parser.handleAttributes(ret, resourceAttributes, id); return ret; } /** * Examines the CloudFormation resource and discloses attributes. * * @param inspector - tree inspector to collect and process attributes * */ inspect(inspector) { inspector.addAttribute("aws:cdk:cloudformation:type", CfnBucket.CFN_RESOURCE_TYPE_NAME); inspector.addAttribute("aws:cdk:cloudformation:props", this.cfnProperties); } get cfnProperties() { return { accelerateConfiguration: this.accelerateConfiguration, accessControl: this.accessControl, analyticsConfigurations: this.analyticsConfigurations, bucketEncryption: this.bucketEncryption, bucketName: this.bucketName, corsConfiguration: this.corsConfiguration, intelligentTieringConfigurations: this.intelligentTieringConfigurations, inventoryConfigurations: this.inventoryConfigurations, lifecycleConfiguration: this.lifecycleConfiguration, loggingConfiguration: this.loggingConfiguration, metricsConfigurations: this.metricsConfigurations, notificationConfiguration: this.notificationConfiguration, objectLockConfiguration: this.objectLockConfiguration, objectLockEnabled: this.objectLockEnabled, ownershipControls: this.ownershipControls, publicAccessBlockConfiguration: this.publicAccessBlockConfiguration, replicationConfiguration: this.replicationConfiguration, tags: this.tags.renderTags(), versioningConfiguration: this.versioningConfiguration, websiteConfiguration: this.websiteConfiguration, }; } renderProperties(props) { return cfnBucketPropsToCloudFormation(props); } } exports.CfnBucket = CfnBucket; _b = JSII_RTTI_SYMBOL_1; CfnBucket[_b] = { fqn: "@aws-cdk/aws-s3.CfnBucket", version: "1.204.0" }; /** * The CloudFormation resource type name for this resource class. */ CfnBucket.CFN_RESOURCE_TYPE_NAME = "AWS::S3::Bucket"; /** * Determine whether the given properties match those of a `AbortIncompleteMultipartUploadProperty` * * @param properties - the TypeScript properties of a `AbortIncompleteMultipartUploadProperty` * * @returns the result of the validation. */ function CfnBucket_AbortIncompleteMultipartUploadPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('daysAfterInitiation', cdk.requiredValidator)(properties.daysAfterInitiation)); errors.collect(cdk.propertyValidator('daysAfterInitiation', cdk.validateNumber)(properties.daysAfterInitiation)); return errors.wrap('supplied properties not correct for "AbortIncompleteMultipartUploadProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::S3::Bucket.AbortIncompleteMultipartUpload` resource * * @param properties - the TypeScript properties of a `AbortIncompleteMultipartUploadProperty` * * @returns the AWS CloudFormation properties of an `AWS::S3::Bucket.AbortIncompleteMultipartUpload` resource. */ // @ts-ignore TS6133 function cfnBucketAbortIncompleteMultipartUploadPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnBucket_AbortIncompleteMultipartUploadPropertyValidator(properties).assertSuccess(); return { DaysAfterInitiation: cdk.numberToCloudFormation(properties.daysAfterInitiation), }; } // @ts-ignore TS6133 function CfnBucketAbortIncompleteMultipartUploadPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('daysAfterInitiation', 'DaysAfterInitiation', cfn_parse.FromCloudFormation.getNumber(properties.DaysAfterInitiation)); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `AccelerateConfigurationProperty` * * @param properties - the TypeScript properties of a `AccelerateConfigurationProperty` * * @returns the result of the validation. */ function CfnBucket_AccelerateConfigurationPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('accelerationStatus', cdk.requiredValidator)(properties.accelerationStatus)); errors.collect(cdk.propertyValidator('accelerationStatus', cdk.validateString)(properties.accelerationStatus)); return errors.wrap('supplied properties not correct for "AccelerateConfigurationProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::S3::Bucket.AccelerateConfiguration` resource * * @param properties - the TypeScript properties of a `AccelerateConfigurationProperty` * * @returns the AWS CloudFormation properties of an `AWS::S3::Bucket.AccelerateConfiguration` resource. */ // @ts-ignore TS6133 function cfnBucketAccelerateConfigurationPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnBucket_AccelerateConfigurationPropertyValidator(properties).assertSuccess(); return { AccelerationStatus: cdk.stringToCloudFormation(properties.accelerationStatus), }; } // @ts-ignore TS6133 function CfnBucketAccelerateConfigurationPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('accelerationStatus', 'AccelerationStatus', cfn_parse.FromCloudFormation.getString(properties.AccelerationStatus)); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `AccessControlTranslationProperty` * * @param properties - the TypeScript properties of a `AccessControlTranslationProperty` * * @returns the result of the validation. */ function CfnBucket_AccessControlTranslationPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('owner', cdk.requiredValidator)(properties.owner)); errors.collect(cdk.propertyValidator('owner', cdk.validateString)(properties.owner)); return errors.wrap('supplied properties not correct for "AccessControlTranslationProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::S3::Bucket.AccessControlTranslation` resource * * @param properties - the TypeScript properties of a `AccessControlTranslationProperty` * * @returns the AWS CloudFormation properties of an `AWS::S3::Bucket.AccessControlTranslation` resource. */ // @ts-ignore TS6133 function cfnBucketAccessControlTranslationPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnBucket_AccessControlTranslationPropertyValidator(properties).assertSuccess(); return { Owner: cdk.stringToCloudFormation(properties.owner), }; } // @ts-ignore TS6133 function CfnBucketAccessControlTranslationPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('owner', 'Owner', cfn_parse.FromCloudFormation.getString(properties.Owner)); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `AnalyticsConfigurationProperty` * * @param properties - the TypeScript properties of a `AnalyticsConfigurationProperty` * * @returns the result of the validation. */ function CfnBucket_AnalyticsConfigurationPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('id', cdk.requiredValidator)(properties.id)); errors.collect(cdk.propertyValidator('id', cdk.validateString)(properties.id)); errors.collect(cdk.propertyValidator('prefix', cdk.validateString)(properties.prefix)); errors.collect(cdk.propertyValidator('storageClassAnalysis', cdk.requiredValidator)(properties.storageClassAnalysis)); errors.collect(cdk.propertyValidator('storageClassAnalysis', CfnBucket_StorageClassAnalysisPropertyValidator)(properties.storageClassAnalysis)); errors.collect(cdk.propertyValidator('tagFilters', cdk.listValidator(CfnBucket_TagFilterPropertyValidator))(properties.tagFilters)); return errors.wrap('supplied properties not correct for "AnalyticsConfigurationProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::S3::Bucket.AnalyticsConfiguration` resource * * @param properties - the TypeScript properties of a `AnalyticsConfigurationProperty` * * @returns the AWS CloudFormation properties of an `AWS::S3::Bucket.AnalyticsConfiguration` resource. */ // @ts-ignore TS6133 function cfnBucketAnalyticsConfigurationPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnBucket_AnalyticsConfigurationPropertyValidator(properties).assertSuccess(); return { Id: cdk.stringToCloudFormation(properties.id), Prefix: cdk.stringToCloudFormation(properties.prefix), StorageClassAnalysis: cfnBucketStorageClassAnalysisPropertyToCloudFormation(properties.storageClassAnalysis), TagFilters: cdk.listMapper(cfnBucketTagFilterPropertyToCloudFormation)(properties.tagFilters), }; } // @ts-ignore TS6133 function CfnBucketAnalyticsConfigurationPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('id', 'Id', cfn_parse.FromCloudFormation.getString(properties.Id)); ret.addPropertyResult('prefix', 'Prefix', properties.Prefix != null ? cfn_parse.FromCloudFormation.getString(properties.Prefix) : undefined); ret.addPropertyResult('storageClassAnalysis', 'StorageClassAnalysis', CfnBucketStorageClassAnalysisPropertyFromCloudFormation(properties.StorageClassAnalysis)); ret.addPropertyResult('tagFilters', 'TagFilters', properties.TagFilters != null ? cfn_parse.FromCloudFormation.getArray(CfnBucketTagFilterPropertyFromCloudFormation)(properties.TagFilters) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `BucketEncryptionProperty` * * @param properties - the TypeScript properties of a `BucketEncryptionProperty` * * @returns the result of the validation. */ function CfnBucket_BucketEncryptionPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('serverSideEncryptionConfiguration', cdk.requiredValidator)(properties.serverSideEncryptionConfiguration)); errors.collect(cdk.propertyValidator('serverSideEncryptionConfiguration', cdk.listValidator(CfnBucket_ServerSideEncryptionRulePropertyValidator))(properties.serverSideEncryptionConfiguration)); return errors.wrap('supplied properties not correct for "BucketEncryptionProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::S3::Bucket.BucketEncryption` resource * * @param properties - the TypeScript properties of a `BucketEncryptionProperty` * * @returns the AWS CloudFormation properties of an `AWS::S3::Bucket.BucketEncryption` resource. */ // @ts-ignore TS6133 function cfnBucketBucketEncryptionPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnBucket_BucketEncryptionPropertyValidator(properties).assertSuccess(); return { ServerSideEncryptionConfiguration: cdk.listMapper(cfnBucketServerSideEncryptionRulePropertyToCloudFormation)(properties.serverSideEncryptionConfiguration), }; } // @ts-ignore TS6133 function CfnBucketBucketEncryptionPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('serverSideEncryptionConfiguration', 'ServerSideEncryptionConfiguration', cfn_parse.FromCloudFormation.getArray(CfnBucketServerSideEncryptionRulePropertyFromCloudFormation)(properties.ServerSideEncryptionConfiguration)); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `CorsConfigurationProperty` * * @param properties - the TypeScript properties of a `CorsConfigurationProperty` * * @returns the result of the validation. */ function CfnBucket_CorsConfigurationPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('corsRules', cdk.requiredValidator)(properties.corsRules)); errors.collect(cdk.propertyValidator('corsRules', cdk.listValidator(CfnBucket_CorsRulePropertyValidator))(properties.corsRules)); return errors.wrap('supplied properties not correct for "CorsConfigurationProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::S3::Bucket.CorsConfiguration` resource * * @param properties - the TypeScript properties of a `CorsConfigurationProperty` * * @returns the AWS CloudFormation properties of an `AWS::S3::Bucket.CorsConfiguration` resource. */ // @ts-ignore TS6133 function cfnBucketCorsConfigurationPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnBucket_CorsConfigurationPropertyValidator(properties).assertSuccess(); return { CorsRules: cdk.listMapper(cfnBucketCorsRulePropertyToCloudFormation)(properties.corsRules), }; } // @ts-ignore TS6133 function CfnBucketCorsConfigurationPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('corsRules', 'CorsRules', cfn_parse.FromCloudFormation.getArray(CfnBucketCorsRulePropertyFromCloudFormation)(properties.CorsRules)); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `CorsRuleProperty` * * @param properties - the TypeScript properties of a `CorsRuleProperty` * * @returns the result of the validation. */ function CfnBucket_CorsRulePropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('allowedHeaders', cdk.listValidator(cdk.validateString))(properties.allowedHeaders)); errors.collect(cdk.propertyValidator('allowedMethods', cdk.requiredValidator)(properties.allowedMethods)); errors.collect(cdk.propertyValidator('allowedMethods', cdk.listValidator(cdk.validateString))(properties.allowedMethods)); errors.collect(cdk.propertyValidator('allowedOrigins', cdk.requiredValidator)(properties.allowedOrigins)); errors.collect(cdk.propertyValidator('allowedOrigins', cdk.listValidator(cdk.validateString))(properties.allowedOrigins)); errors.collect(cdk.propertyValidator('exposedHeaders', cdk.listValidator(cdk.validateString))(properties.exposedHeaders)); errors.collect(cdk.propertyValidator('id', cdk.validateString)(properties.id)); errors.collect(cdk.propertyValidator('maxAge', cdk.validateNumber)(properties.maxAge)); return errors.wrap('supplied properties not correct for "CorsRuleProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::S3::Bucket.CorsRule` resource * * @param properties - the TypeScript properties of a `CorsRuleProperty` * * @returns the AWS CloudFormation properties of an `AWS::S3::Bucket.CorsRule` resource. */ // @ts-ignore TS6133 function cfnBucketCorsRulePropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnBucket_CorsRulePropertyValidator(properties).assertSuccess(); return { AllowedHeaders: cdk.listMapper(cdk.stringToCloudFormation)(properties.allowedHeaders), AllowedMethods: cdk.listMapper(cdk.stringToCloudFormation)(properties.allowedMethods), AllowedOrigins: cdk.listMapper(cdk.stringToCloudFormation)(properties.allowedOrigins), ExposedHeaders: cdk.listMapper(cdk.stringToCloudFormation)(properties.exposedHeaders), Id: cdk.stringToCloudFormation(properties.id), MaxAge: cdk.numberToCloudFormation(properties.maxAge), }; } // @ts-ignore TS6133 function CfnBucketCorsRulePropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof propertie