# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities
from . import outputs
from ._inputs import *

__all__ = ['BucketV2Args', 'BucketV2']

@pulumi.input_type
class BucketV2Args:
    def __init__(__self__, *,
                 acceleration_status: Optional[pulumi.Input[str]] = None,
                 acl: Optional[pulumi.Input[str]] = None,
                 arn: Optional[pulumi.Input[str]] = None,
                 bucket: Optional[pulumi.Input[str]] = None,
                 bucket_prefix: Optional[pulumi.Input[str]] = None,
                 cors_rules: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2CorsRuleArgs']]]] = None,
                 force_destroy: Optional[pulumi.Input[bool]] = None,
                 grants: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2GrantArgs']]]] = None,
                 hosted_zone_id: Optional[pulumi.Input[str]] = None,
                 lifecycle_rules: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LifecycleRuleArgs']]]] = None,
                 loggings: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LoggingArgs']]]] = None,
                 object_lock_configuration: Optional[pulumi.Input['BucketV2ObjectLockConfigurationArgs']] = None,
                 object_lock_enabled: Optional[pulumi.Input[bool]] = None,
                 policy: Optional[pulumi.Input[str]] = None,
                 replication_configurations: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ReplicationConfigurationArgs']]]] = None,
                 request_payer: Optional[pulumi.Input[str]] = None,
                 server_side_encryption_configurations: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ServerSideEncryptionConfigurationArgs']]]] = None,
                 tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 versionings: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2VersioningArgs']]]] = None,
                 websites: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2WebsiteArgs']]]] = None):
        """
        The set of arguments for constructing a BucketV2 resource.
        :param pulumi.Input[str] acceleration_status: Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketAccelerateConfigurationV2` instead.
        :param pulumi.Input[str] acl: The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`.  Conflicts with `grant`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        :param pulumi.Input[str] arn: The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`.
        :param pulumi.Input[str] bucket: The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        :param pulumi.Input[str] bucket_prefix: Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2CorsRuleArgs']]] cors_rules: A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead.
        :param pulumi.Input[bool] force_destroy: A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2GrantArgs']]] grants: An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        :param pulumi.Input[str] hosted_zone_id: The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2LifecycleRuleArgs']]] lifecycle_rules: A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketLifecycleConfigurationV2` instead.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2LoggingArgs']]] loggings: A configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketLoggingV2` instead.
        :param pulumi.Input['BucketV2ObjectLockConfigurationArgs'] object_lock_configuration: A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details.
               This provider wil only perform drift detection if a configuration value is provided.
               Use the `object_lock_enabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead.
        :param pulumi.Input[bool] object_lock_enabled: Indicates whether this bucket has an Object Lock configuration enabled.
        :param pulumi.Input[str] policy: A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a plan. In this case, please make sure you use the verbose/specific version of the policy.
               Use the resource `s3.BucketPolicy` instead.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2ReplicationConfigurationArgs']]] replication_configurations: A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. this provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketReplicationConfig` instead.
        :param pulumi.Input[str] request_payer: Specifies who should bear the cost of Amazon S3 data transfer.
               Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer.
               See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information.
               This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketRequestPaymentConfigurationV2` instead.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2ServerSideEncryptionConfigurationArgs']]] server_side_encryption_configurations: A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details.
               This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2VersioningArgs']]] versionings: A configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2WebsiteArgs']]] websites: A configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketWebsiteConfigurationV2` instead.
        """
        if acceleration_status is not None:
            warnings.warn("""Use the aws_s3_bucket_accelerate_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""acceleration_status is deprecated: Use the aws_s3_bucket_accelerate_configuration resource instead""")
        if acceleration_status is not None:
            pulumi.set(__self__, "acceleration_status", acceleration_status)
        if acl is not None:
            warnings.warn("""Use the aws_s3_bucket_acl resource instead""", DeprecationWarning)
            pulumi.log.warn("""acl is deprecated: Use the aws_s3_bucket_acl resource instead""")
        if acl is not None:
            pulumi.set(__self__, "acl", acl)
        if arn is not None:
            pulumi.set(__self__, "arn", arn)
        if bucket is not None:
            pulumi.set(__self__, "bucket", bucket)
        if bucket_prefix is not None:
            pulumi.set(__self__, "bucket_prefix", bucket_prefix)
        if cors_rules is not None:
            warnings.warn("""Use the aws_s3_bucket_cors_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""cors_rules is deprecated: Use the aws_s3_bucket_cors_configuration resource instead""")
        if cors_rules is not None:
            pulumi.set(__self__, "cors_rules", cors_rules)
        if force_destroy is not None:
            pulumi.set(__self__, "force_destroy", force_destroy)
        if grants is not None:
            warnings.warn("""Use the aws_s3_bucket_acl resource instead""", DeprecationWarning)
            pulumi.log.warn("""grants is deprecated: Use the aws_s3_bucket_acl resource instead""")
        if grants is not None:
            pulumi.set(__self__, "grants", grants)
        if hosted_zone_id is not None:
            pulumi.set(__self__, "hosted_zone_id", hosted_zone_id)
        if lifecycle_rules is not None:
            warnings.warn("""Use the aws_s3_bucket_lifecycle_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""lifecycle_rules is deprecated: Use the aws_s3_bucket_lifecycle_configuration resource instead""")
        if lifecycle_rules is not None:
            pulumi.set(__self__, "lifecycle_rules", lifecycle_rules)
        if loggings is not None:
            warnings.warn("""Use the aws_s3_bucket_logging resource instead""", DeprecationWarning)
            pulumi.log.warn("""loggings is deprecated: Use the aws_s3_bucket_logging resource instead""")
        if loggings is not None:
            pulumi.set(__self__, "loggings", loggings)
        if object_lock_configuration is not None:
            warnings.warn("""Use the top-level parameter object_lock_enabled and the aws_s3_bucket_object_lock_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""object_lock_configuration is deprecated: Use the top-level parameter object_lock_enabled and the aws_s3_bucket_object_lock_configuration resource instead""")
        if object_lock_configuration is not None:
            pulumi.set(__self__, "object_lock_configuration", object_lock_configuration)
        if object_lock_enabled is not None:
            pulumi.set(__self__, "object_lock_enabled", object_lock_enabled)
        if policy is not None:
            warnings.warn("""Use the aws_s3_bucket_policy resource instead""", DeprecationWarning)
            pulumi.log.warn("""policy is deprecated: Use the aws_s3_bucket_policy resource instead""")
        if policy is not None:
            pulumi.set(__self__, "policy", policy)
        if replication_configurations is not None:
            warnings.warn("""Use the aws_s3_bucket_replication_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""replication_configurations is deprecated: Use the aws_s3_bucket_replication_configuration resource instead""")
        if replication_configurations is not None:
            pulumi.set(__self__, "replication_configurations", replication_configurations)
        if request_payer is not None:
            warnings.warn("""Use the aws_s3_bucket_request_payment_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""request_payer is deprecated: Use the aws_s3_bucket_request_payment_configuration resource instead""")
        if request_payer is not None:
            pulumi.set(__self__, "request_payer", request_payer)
        if server_side_encryption_configurations is not None:
            warnings.warn("""Use the aws_s3_bucket_server_side_encryption_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""server_side_encryption_configurations is deprecated: Use the aws_s3_bucket_server_side_encryption_configuration resource instead""")
        if server_side_encryption_configurations is not None:
            pulumi.set(__self__, "server_side_encryption_configurations", server_side_encryption_configurations)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if versionings is not None:
            warnings.warn("""Use the aws_s3_bucket_versioning resource instead""", DeprecationWarning)
            pulumi.log.warn("""versionings is deprecated: Use the aws_s3_bucket_versioning resource instead""")
        if versionings is not None:
            pulumi.set(__self__, "versionings", versionings)
        if websites is not None:
            warnings.warn("""Use the aws_s3_bucket_website_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""websites is deprecated: Use the aws_s3_bucket_website_configuration resource instead""")
        if websites is not None:
            pulumi.set(__self__, "websites", websites)

    @property
    @pulumi.getter(name="accelerationStatus")
    def acceleration_status(self) -> Optional[pulumi.Input[str]]:
        """
        Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketAccelerateConfigurationV2` instead.
        """
        return pulumi.get(self, "acceleration_status")

    @acceleration_status.setter
    def acceleration_status(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "acceleration_status", value)

    @property
    @pulumi.getter
    def acl(self) -> Optional[pulumi.Input[str]]:
        """
        The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`.  Conflicts with `grant`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        """
        return pulumi.get(self, "acl")

    @acl.setter
    def acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "acl", value)

    @property
    @pulumi.getter
    def arn(self) -> Optional[pulumi.Input[str]]:
        """
        The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`.
        """
        return pulumi.get(self, "arn")

    @arn.setter
    def arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "arn", value)

    @property
    @pulumi.getter
    def bucket(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        """
        return pulumi.get(self, "bucket")

    @bucket.setter
    def bucket(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "bucket", value)

    @property
    @pulumi.getter(name="bucketPrefix")
    def bucket_prefix(self) -> Optional[pulumi.Input[str]]:
        """
        Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        """
        return pulumi.get(self, "bucket_prefix")

    @bucket_prefix.setter
    def bucket_prefix(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "bucket_prefix", value)

    @property
    @pulumi.getter(name="corsRules")
    def cors_rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2CorsRuleArgs']]]]:
        """
        A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead.
        """
        return pulumi.get(self, "cors_rules")

    @cors_rules.setter
    def cors_rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2CorsRuleArgs']]]]):
        pulumi.set(self, "cors_rules", value)

    @property
    @pulumi.getter(name="forceDestroy")
    def force_destroy(self) -> Optional[pulumi.Input[bool]]:
        """
        A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable.
        """
        return pulumi.get(self, "force_destroy")

    @force_destroy.setter
    def force_destroy(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "force_destroy", value)

    @property
    @pulumi.getter
    def grants(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2GrantArgs']]]]:
        """
        An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        """
        return pulumi.get(self, "grants")

    @grants.setter
    def grants(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2GrantArgs']]]]):
        pulumi.set(self, "grants", value)

    @property
    @pulumi.getter(name="hostedZoneId")
    def hosted_zone_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region.
        """
        return pulumi.get(self, "hosted_zone_id")

    @hosted_zone_id.setter
    def hosted_zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "hosted_zone_id", value)

    @property
    @pulumi.getter(name="lifecycleRules")
    def lifecycle_rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LifecycleRuleArgs']]]]:
        """
        A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketLifecycleConfigurationV2` instead.
        """
        return pulumi.get(self, "lifecycle_rules")

    @lifecycle_rules.setter
    def lifecycle_rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LifecycleRuleArgs']]]]):
        pulumi.set(self, "lifecycle_rules", value)

    @property
    @pulumi.getter
    def loggings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LoggingArgs']]]]:
        """
        A configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketLoggingV2` instead.
        """
        return pulumi.get(self, "loggings")

    @loggings.setter
    def loggings(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LoggingArgs']]]]):
        pulumi.set(self, "loggings", value)

    @property
    @pulumi.getter(name="objectLockConfiguration")
    def object_lock_configuration(self) -> Optional[pulumi.Input['BucketV2ObjectLockConfigurationArgs']]:
        """
        A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details.
        This provider wil only perform drift detection if a configuration value is provided.
        Use the `object_lock_enabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead.
        """
        return pulumi.get(self, "object_lock_configuration")

    @object_lock_configuration.setter
    def object_lock_configuration(self, value: Optional[pulumi.Input['BucketV2ObjectLockConfigurationArgs']]):
        pulumi.set(self, "object_lock_configuration", value)

    @property
    @pulumi.getter(name="objectLockEnabled")
    def object_lock_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Indicates whether this bucket has an Object Lock configuration enabled.
        """
        return pulumi.get(self, "object_lock_enabled")

    @object_lock_enabled.setter
    def object_lock_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "object_lock_enabled", value)

    @property
    @pulumi.getter
    def policy(self) -> Optional[pulumi.Input[str]]:
        """
        A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a plan. In this case, please make sure you use the verbose/specific version of the policy.
        Use the resource `s3.BucketPolicy` instead.
        """
        return pulumi.get(self, "policy")

    @policy.setter
    def policy(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "policy", value)

    @property
    @pulumi.getter(name="replicationConfigurations")
    def replication_configurations(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ReplicationConfigurationArgs']]]]:
        """
        A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. this provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketReplicationConfig` instead.
        """
        return pulumi.get(self, "replication_configurations")

    @replication_configurations.setter
    def replication_configurations(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ReplicationConfigurationArgs']]]]):
        pulumi.set(self, "replication_configurations", value)

    @property
    @pulumi.getter(name="requestPayer")
    def request_payer(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies who should bear the cost of Amazon S3 data transfer.
        Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer.
        See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information.
        This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketRequestPaymentConfigurationV2` instead.
        """
        return pulumi.get(self, "request_payer")

    @request_payer.setter
    def request_payer(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "request_payer", value)

    @property
    @pulumi.getter(name="serverSideEncryptionConfigurations")
    def server_side_encryption_configurations(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ServerSideEncryptionConfigurationArgs']]]]:
        """
        A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details.
        This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead.
        """
        return pulumi.get(self, "server_side_encryption_configurations")

    @server_side_encryption_configurations.setter
    def server_side_encryption_configurations(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ServerSideEncryptionConfigurationArgs']]]]):
        pulumi.set(self, "server_side_encryption_configurations", value)

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
        """
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
        pulumi.set(self, "tags", value)

    @property
    @pulumi.getter
    def versionings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2VersioningArgs']]]]:
        """
        A configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead.
        """
        return pulumi.get(self, "versionings")

    @versionings.setter
    def versionings(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2VersioningArgs']]]]):
        pulumi.set(self, "versionings", value)

    @property
    @pulumi.getter
    def websites(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2WebsiteArgs']]]]:
        """
        A configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketWebsiteConfigurationV2` instead.
        """
        return pulumi.get(self, "websites")

    @websites.setter
    def websites(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2WebsiteArgs']]]]):
        pulumi.set(self, "websites", value)


@pulumi.input_type
class _BucketV2State:
    def __init__(__self__, *,
                 acceleration_status: Optional[pulumi.Input[str]] = None,
                 acl: Optional[pulumi.Input[str]] = None,
                 arn: Optional[pulumi.Input[str]] = None,
                 bucket: Optional[pulumi.Input[str]] = None,
                 bucket_domain_name: Optional[pulumi.Input[str]] = None,
                 bucket_prefix: Optional[pulumi.Input[str]] = None,
                 bucket_regional_domain_name: Optional[pulumi.Input[str]] = None,
                 cors_rules: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2CorsRuleArgs']]]] = None,
                 force_destroy: Optional[pulumi.Input[bool]] = None,
                 grants: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2GrantArgs']]]] = None,
                 hosted_zone_id: Optional[pulumi.Input[str]] = None,
                 lifecycle_rules: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LifecycleRuleArgs']]]] = None,
                 loggings: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LoggingArgs']]]] = None,
                 object_lock_configuration: Optional[pulumi.Input['BucketV2ObjectLockConfigurationArgs']] = None,
                 object_lock_enabled: Optional[pulumi.Input[bool]] = None,
                 policy: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None,
                 replication_configurations: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ReplicationConfigurationArgs']]]] = None,
                 request_payer: Optional[pulumi.Input[str]] = None,
                 server_side_encryption_configurations: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ServerSideEncryptionConfigurationArgs']]]] = None,
                 tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 versionings: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2VersioningArgs']]]] = None,
                 website_domain: Optional[pulumi.Input[str]] = None,
                 website_endpoint: Optional[pulumi.Input[str]] = None,
                 websites: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2WebsiteArgs']]]] = None):
        """
        Input properties used for looking up and filtering BucketV2 resources.
        :param pulumi.Input[str] acceleration_status: Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketAccelerateConfigurationV2` instead.
        :param pulumi.Input[str] acl: The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`.  Conflicts with `grant`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        :param pulumi.Input[str] arn: The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`.
        :param pulumi.Input[str] bucket: The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        :param pulumi.Input[str] bucket_domain_name: The bucket domain name. Will be of format `bucketname.s3.amazonaws.com`.
        :param pulumi.Input[str] bucket_prefix: Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        :param pulumi.Input[str] bucket_regional_domain_name: The bucket region-specific domain name. The bucket domain name including the region name, please refer [here](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent [redirect issues](https://forums.aws.amazon.com/thread.jspa?threadID=216814) from CloudFront to S3 Origin URL.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2CorsRuleArgs']]] cors_rules: A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead.
        :param pulumi.Input[bool] force_destroy: A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2GrantArgs']]] grants: An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        :param pulumi.Input[str] hosted_zone_id: The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2LifecycleRuleArgs']]] lifecycle_rules: A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketLifecycleConfigurationV2` instead.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2LoggingArgs']]] loggings: A configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketLoggingV2` instead.
        :param pulumi.Input['BucketV2ObjectLockConfigurationArgs'] object_lock_configuration: A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details.
               This provider wil only perform drift detection if a configuration value is provided.
               Use the `object_lock_enabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead.
        :param pulumi.Input[bool] object_lock_enabled: Indicates whether this bucket has an Object Lock configuration enabled.
        :param pulumi.Input[str] policy: A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a plan. In this case, please make sure you use the verbose/specific version of the policy.
               Use the resource `s3.BucketPolicy` instead.
        :param pulumi.Input[str] region: The AWS region this bucket resides in.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2ReplicationConfigurationArgs']]] replication_configurations: A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. this provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketReplicationConfig` instead.
        :param pulumi.Input[str] request_payer: Specifies who should bear the cost of Amazon S3 data transfer.
               Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer.
               See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information.
               This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketRequestPaymentConfigurationV2` instead.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2ServerSideEncryptionConfigurationArgs']]] server_side_encryption_configurations: A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details.
               This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2VersioningArgs']]] versionings: A configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead.
        :param pulumi.Input[str] website_domain: The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records.
        :param pulumi.Input[str] website_endpoint: The website endpoint, if the bucket is configured with a website. If not, this will be an empty string.
        :param pulumi.Input[Sequence[pulumi.Input['BucketV2WebsiteArgs']]] websites: A configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketWebsiteConfigurationV2` instead.
        """
        if acceleration_status is not None:
            warnings.warn("""Use the aws_s3_bucket_accelerate_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""acceleration_status is deprecated: Use the aws_s3_bucket_accelerate_configuration resource instead""")
        if acceleration_status is not None:
            pulumi.set(__self__, "acceleration_status", acceleration_status)
        if acl is not None:
            warnings.warn("""Use the aws_s3_bucket_acl resource instead""", DeprecationWarning)
            pulumi.log.warn("""acl is deprecated: Use the aws_s3_bucket_acl resource instead""")
        if acl is not None:
            pulumi.set(__self__, "acl", acl)
        if arn is not None:
            pulumi.set(__self__, "arn", arn)
        if bucket is not None:
            pulumi.set(__self__, "bucket", bucket)
        if bucket_domain_name is not None:
            pulumi.set(__self__, "bucket_domain_name", bucket_domain_name)
        if bucket_prefix is not None:
            pulumi.set(__self__, "bucket_prefix", bucket_prefix)
        if bucket_regional_domain_name is not None:
            pulumi.set(__self__, "bucket_regional_domain_name", bucket_regional_domain_name)
        if cors_rules is not None:
            warnings.warn("""Use the aws_s3_bucket_cors_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""cors_rules is deprecated: Use the aws_s3_bucket_cors_configuration resource instead""")
        if cors_rules is not None:
            pulumi.set(__self__, "cors_rules", cors_rules)
        if force_destroy is not None:
            pulumi.set(__self__, "force_destroy", force_destroy)
        if grants is not None:
            warnings.warn("""Use the aws_s3_bucket_acl resource instead""", DeprecationWarning)
            pulumi.log.warn("""grants is deprecated: Use the aws_s3_bucket_acl resource instead""")
        if grants is not None:
            pulumi.set(__self__, "grants", grants)
        if hosted_zone_id is not None:
            pulumi.set(__self__, "hosted_zone_id", hosted_zone_id)
        if lifecycle_rules is not None:
            warnings.warn("""Use the aws_s3_bucket_lifecycle_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""lifecycle_rules is deprecated: Use the aws_s3_bucket_lifecycle_configuration resource instead""")
        if lifecycle_rules is not None:
            pulumi.set(__self__, "lifecycle_rules", lifecycle_rules)
        if loggings is not None:
            warnings.warn("""Use the aws_s3_bucket_logging resource instead""", DeprecationWarning)
            pulumi.log.warn("""loggings is deprecated: Use the aws_s3_bucket_logging resource instead""")
        if loggings is not None:
            pulumi.set(__self__, "loggings", loggings)
        if object_lock_configuration is not None:
            warnings.warn("""Use the top-level parameter object_lock_enabled and the aws_s3_bucket_object_lock_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""object_lock_configuration is deprecated: Use the top-level parameter object_lock_enabled and the aws_s3_bucket_object_lock_configuration resource instead""")
        if object_lock_configuration is not None:
            pulumi.set(__self__, "object_lock_configuration", object_lock_configuration)
        if object_lock_enabled is not None:
            pulumi.set(__self__, "object_lock_enabled", object_lock_enabled)
        if policy is not None:
            warnings.warn("""Use the aws_s3_bucket_policy resource instead""", DeprecationWarning)
            pulumi.log.warn("""policy is deprecated: Use the aws_s3_bucket_policy resource instead""")
        if policy is not None:
            pulumi.set(__self__, "policy", policy)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if replication_configurations is not None:
            warnings.warn("""Use the aws_s3_bucket_replication_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""replication_configurations is deprecated: Use the aws_s3_bucket_replication_configuration resource instead""")
        if replication_configurations is not None:
            pulumi.set(__self__, "replication_configurations", replication_configurations)
        if request_payer is not None:
            warnings.warn("""Use the aws_s3_bucket_request_payment_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""request_payer is deprecated: Use the aws_s3_bucket_request_payment_configuration resource instead""")
        if request_payer is not None:
            pulumi.set(__self__, "request_payer", request_payer)
        if server_side_encryption_configurations is not None:
            warnings.warn("""Use the aws_s3_bucket_server_side_encryption_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""server_side_encryption_configurations is deprecated: Use the aws_s3_bucket_server_side_encryption_configuration resource instead""")
        if server_side_encryption_configurations is not None:
            pulumi.set(__self__, "server_side_encryption_configurations", server_side_encryption_configurations)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if tags_all is not None:
            pulumi.set(__self__, "tags_all", tags_all)
        if versionings is not None:
            warnings.warn("""Use the aws_s3_bucket_versioning resource instead""", DeprecationWarning)
            pulumi.log.warn("""versionings is deprecated: Use the aws_s3_bucket_versioning resource instead""")
        if versionings is not None:
            pulumi.set(__self__, "versionings", versionings)
        if website_domain is not None:
            warnings.warn("""Use the aws_s3_bucket_website_configuration resource""", DeprecationWarning)
            pulumi.log.warn("""website_domain is deprecated: Use the aws_s3_bucket_website_configuration resource""")
        if website_domain is not None:
            pulumi.set(__self__, "website_domain", website_domain)
        if website_endpoint is not None:
            warnings.warn("""Use the aws_s3_bucket_website_configuration resource""", DeprecationWarning)
            pulumi.log.warn("""website_endpoint is deprecated: Use the aws_s3_bucket_website_configuration resource""")
        if website_endpoint is not None:
            pulumi.set(__self__, "website_endpoint", website_endpoint)
        if websites is not None:
            warnings.warn("""Use the aws_s3_bucket_website_configuration resource instead""", DeprecationWarning)
            pulumi.log.warn("""websites is deprecated: Use the aws_s3_bucket_website_configuration resource instead""")
        if websites is not None:
            pulumi.set(__self__, "websites", websites)

    @property
    @pulumi.getter(name="accelerationStatus")
    def acceleration_status(self) -> Optional[pulumi.Input[str]]:
        """
        Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketAccelerateConfigurationV2` instead.
        """
        return pulumi.get(self, "acceleration_status")

    @acceleration_status.setter
    def acceleration_status(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "acceleration_status", value)

    @property
    @pulumi.getter
    def acl(self) -> Optional[pulumi.Input[str]]:
        """
        The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`.  Conflicts with `grant`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        """
        return pulumi.get(self, "acl")

    @acl.setter
    def acl(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "acl", value)

    @property
    @pulumi.getter
    def arn(self) -> Optional[pulumi.Input[str]]:
        """
        The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`.
        """
        return pulumi.get(self, "arn")

    @arn.setter
    def arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "arn", value)

    @property
    @pulumi.getter
    def bucket(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        """
        return pulumi.get(self, "bucket")

    @bucket.setter
    def bucket(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "bucket", value)

    @property
    @pulumi.getter(name="bucketDomainName")
    def bucket_domain_name(self) -> Optional[pulumi.Input[str]]:
        """
        The bucket domain name. Will be of format `bucketname.s3.amazonaws.com`.
        """
        return pulumi.get(self, "bucket_domain_name")

    @bucket_domain_name.setter
    def bucket_domain_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "bucket_domain_name", value)

    @property
    @pulumi.getter(name="bucketPrefix")
    def bucket_prefix(self) -> Optional[pulumi.Input[str]]:
        """
        Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        """
        return pulumi.get(self, "bucket_prefix")

    @bucket_prefix.setter
    def bucket_prefix(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "bucket_prefix", value)

    @property
    @pulumi.getter(name="bucketRegionalDomainName")
    def bucket_regional_domain_name(self) -> Optional[pulumi.Input[str]]:
        """
        The bucket region-specific domain name. The bucket domain name including the region name, please refer [here](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent [redirect issues](https://forums.aws.amazon.com/thread.jspa?threadID=216814) from CloudFront to S3 Origin URL.
        """
        return pulumi.get(self, "bucket_regional_domain_name")

    @bucket_regional_domain_name.setter
    def bucket_regional_domain_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "bucket_regional_domain_name", value)

    @property
    @pulumi.getter(name="corsRules")
    def cors_rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2CorsRuleArgs']]]]:
        """
        A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead.
        """
        return pulumi.get(self, "cors_rules")

    @cors_rules.setter
    def cors_rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2CorsRuleArgs']]]]):
        pulumi.set(self, "cors_rules", value)

    @property
    @pulumi.getter(name="forceDestroy")
    def force_destroy(self) -> Optional[pulumi.Input[bool]]:
        """
        A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable.
        """
        return pulumi.get(self, "force_destroy")

    @force_destroy.setter
    def force_destroy(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "force_destroy", value)

    @property
    @pulumi.getter
    def grants(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2GrantArgs']]]]:
        """
        An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        """
        return pulumi.get(self, "grants")

    @grants.setter
    def grants(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2GrantArgs']]]]):
        pulumi.set(self, "grants", value)

    @property
    @pulumi.getter(name="hostedZoneId")
    def hosted_zone_id(self) -> Optional[pulumi.Input[str]]:
        """
        The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region.
        """
        return pulumi.get(self, "hosted_zone_id")

    @hosted_zone_id.setter
    def hosted_zone_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "hosted_zone_id", value)

    @property
    @pulumi.getter(name="lifecycleRules")
    def lifecycle_rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LifecycleRuleArgs']]]]:
        """
        A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketLifecycleConfigurationV2` instead.
        """
        return pulumi.get(self, "lifecycle_rules")

    @lifecycle_rules.setter
    def lifecycle_rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LifecycleRuleArgs']]]]):
        pulumi.set(self, "lifecycle_rules", value)

    @property
    @pulumi.getter
    def loggings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LoggingArgs']]]]:
        """
        A configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketLoggingV2` instead.
        """
        return pulumi.get(self, "loggings")

    @loggings.setter
    def loggings(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2LoggingArgs']]]]):
        pulumi.set(self, "loggings", value)

    @property
    @pulumi.getter(name="objectLockConfiguration")
    def object_lock_configuration(self) -> Optional[pulumi.Input['BucketV2ObjectLockConfigurationArgs']]:
        """
        A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details.
        This provider wil only perform drift detection if a configuration value is provided.
        Use the `object_lock_enabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead.
        """
        return pulumi.get(self, "object_lock_configuration")

    @object_lock_configuration.setter
    def object_lock_configuration(self, value: Optional[pulumi.Input['BucketV2ObjectLockConfigurationArgs']]):
        pulumi.set(self, "object_lock_configuration", value)

    @property
    @pulumi.getter(name="objectLockEnabled")
    def object_lock_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Indicates whether this bucket has an Object Lock configuration enabled.
        """
        return pulumi.get(self, "object_lock_enabled")

    @object_lock_enabled.setter
    def object_lock_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "object_lock_enabled", value)

    @property
    @pulumi.getter
    def policy(self) -> Optional[pulumi.Input[str]]:
        """
        A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a plan. In this case, please make sure you use the verbose/specific version of the policy.
        Use the resource `s3.BucketPolicy` instead.
        """
        return pulumi.get(self, "policy")

    @policy.setter
    def policy(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "policy", value)

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        """
        The AWS region this bucket resides in.
        """
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "region", value)

    @property
    @pulumi.getter(name="replicationConfigurations")
    def replication_configurations(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ReplicationConfigurationArgs']]]]:
        """
        A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. this provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketReplicationConfig` instead.
        """
        return pulumi.get(self, "replication_configurations")

    @replication_configurations.setter
    def replication_configurations(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ReplicationConfigurationArgs']]]]):
        pulumi.set(self, "replication_configurations", value)

    @property
    @pulumi.getter(name="requestPayer")
    def request_payer(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies who should bear the cost of Amazon S3 data transfer.
        Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer.
        See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information.
        This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketRequestPaymentConfigurationV2` instead.
        """
        return pulumi.get(self, "request_payer")

    @request_payer.setter
    def request_payer(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "request_payer", value)

    @property
    @pulumi.getter(name="serverSideEncryptionConfigurations")
    def server_side_encryption_configurations(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ServerSideEncryptionConfigurationArgs']]]]:
        """
        A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details.
        This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead.
        """
        return pulumi.get(self, "server_side_encryption_configurations")

    @server_side_encryption_configurations.setter
    def server_side_encryption_configurations(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2ServerSideEncryptionConfigurationArgs']]]]):
        pulumi.set(self, "server_side_encryption_configurations", value)

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
        """
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
        pulumi.set(self, "tags", value)

    @property
    @pulumi.getter(name="tagsAll")
    def tags_all(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
        """
        return pulumi.get(self, "tags_all")

    @tags_all.setter
    def tags_all(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
        pulumi.set(self, "tags_all", value)

    @property
    @pulumi.getter
    def versionings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2VersioningArgs']]]]:
        """
        A configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead.
        """
        return pulumi.get(self, "versionings")

    @versionings.setter
    def versionings(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2VersioningArgs']]]]):
        pulumi.set(self, "versionings", value)

    @property
    @pulumi.getter(name="websiteDomain")
    def website_domain(self) -> Optional[pulumi.Input[str]]:
        """
        The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records.
        """
        return pulumi.get(self, "website_domain")

    @website_domain.setter
    def website_domain(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "website_domain", value)

    @property
    @pulumi.getter(name="websiteEndpoint")
    def website_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The website endpoint, if the bucket is configured with a website. If not, this will be an empty string.
        """
        return pulumi.get(self, "website_endpoint")

    @website_endpoint.setter
    def website_endpoint(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "website_endpoint", value)

    @property
    @pulumi.getter
    def websites(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2WebsiteArgs']]]]:
        """
        A configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketWebsiteConfigurationV2` instead.
        """
        return pulumi.get(self, "websites")

    @websites.setter
    def websites(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BucketV2WebsiteArgs']]]]):
        pulumi.set(self, "websites", value)


class BucketV2(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 acceleration_status: Optional[pulumi.Input[str]] = None,
                 acl: Optional[pulumi.Input[str]] = None,
                 arn: Optional[pulumi.Input[str]] = None,
                 bucket: Optional[pulumi.Input[str]] = None,
                 bucket_prefix: Optional[pulumi.Input[str]] = None,
                 cors_rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2CorsRuleArgs']]]]] = None,
                 force_destroy: Optional[pulumi.Input[bool]] = None,
                 grants: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2GrantArgs']]]]] = None,
                 hosted_zone_id: Optional[pulumi.Input[str]] = None,
                 lifecycle_rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2LifecycleRuleArgs']]]]] = None,
                 loggings: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2LoggingArgs']]]]] = None,
                 object_lock_configuration: Optional[pulumi.Input[pulumi.InputType['BucketV2ObjectLockConfigurationArgs']]] = None,
                 object_lock_enabled: Optional[pulumi.Input[bool]] = None,
                 policy: Optional[pulumi.Input[str]] = None,
                 replication_configurations: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2ReplicationConfigurationArgs']]]]] = None,
                 request_payer: Optional[pulumi.Input[str]] = None,
                 server_side_encryption_configurations: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2ServerSideEncryptionConfigurationArgs']]]]] = None,
                 tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 versionings: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2VersioningArgs']]]]] = None,
                 websites: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2WebsiteArgs']]]]] = None,
                 __props__=None):
        """
        Provides a S3 bucket resource.

        > This functionality is for managing S3 in an AWS Partition. To manage [S3 on Outposts](https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html), see the `s3control.Bucket` resource.

        > **NOTE on S3 Bucket Accelerate Configuration:** S3 Bucket Accelerate can be configured in either the standalone resource `s3.BucketAccelerateConfigurationV2`
        or with the deprecated parameter `acceleration_status` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket canned ACL Configuration:** S3 Bucket canned ACL can be configured in either the standalone resource `s3.BucketAclV2`
        or with the deprecated parameter `acl` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket ACL Grants Configuration:** S3 Bucket grants can be configured in either the standalone resource `s3.BucketAclV2`
        or with the deprecated parameter `grant` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket CORS Configuration:** S3 Bucket CORS can be configured in either the standalone resource `s3.BucketCorsConfigurationV2`
        or with the deprecated parameter `cors_rule` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Lifecycle Configuration:** S3 Bucket Lifecycle can be configured in either the standalone resource `s3.BucketLifecycleConfigurationV2`
        or with the deprecated parameter `lifecycle_rule` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Logging Configuration:** S3 Bucket logging can be configured in either the standalone resource `s3.BucketLoggingV2`
        or with the deprecated parameter `logging` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Object Lock Configuration:** S3 Bucket Object Lock can be configured in either the standalone resource `s3.BucketObjectLockConfigurationV2`
        or with the deprecated parameter `object_lock_configuration` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Policy Configuration:** S3 Bucket Policy can be configured in either the standalone resource `s3.BucketPolicy`
        or with the deprecated parameter `policy` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Replication Configuration:** S3 Bucket Replication can be configured in either the standalone resource `aws_s3_bucket_replicaton_configuration`
        or with the deprecated parameter `replication_configuration` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Request Payment Configuration:** S3 Bucket Request Payment can be configured in either the standalone resource `s3.BucketRequestPaymentConfigurationV2`
        or with the deprecated parameter `request_payer` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Server Side Encryption Configuration:** S3 Bucket Server Side Encryption can be configured in either the standalone resource `s3.BucketServerSideEncryptionConfigurationV2`
        or with the deprecated parameter `server_side_encryption_configuration` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Versioning Configuration:** S3 Bucket versioning can be configured in either the standalone resource `s3.BucketVersioningV2`
        or with the deprecated parameter `versioning` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Website Configuration:** S3 Bucket Website can be configured in either the standalone resource `s3.BucketWebsiteConfigurationV2`
        or with the deprecated parameter `website` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        ## Example Usage
        ### Private Bucket w/ Tags

        ```python
        import pulumi
        import pulumi_aws as aws

        bucket_v2 = aws.s3.BucketV2("bucketV2", tags={
            "Name": "My bucket",
            "Environment": "Dev",
        })
        example = aws.s3.BucketAclV2("example",
            bucket=bucket_v2.id,
            acl="private")
        ```
        ### Static Website Hosting

        ```python
        import pulumi
        import pulumi_aws as aws

        bucket_v2 = aws.s3.BucketV2("bucketV2",
            acl="public-read",
            policy=(lambda path: open(path).read())("policy.json"),
            websites=[aws.s3.BucketV2WebsiteArgs(
                index_document="index.html",
                error_document="error.html",
                routing_rules=\"\"\"[{
            "Condition": {
                "KeyPrefixEquals": "docs/"
            },
            "Redirect": {
                "ReplaceKeyPrefixWith": "documents/"
            }
        }]
        \"\"\",
            )])
        ```
        ### Using CORS

        ```python
        import pulumi
        import pulumi_aws as aws

        bucket_v2 = aws.s3.BucketV2("bucketV2",
            acl="public-read",
            cors_rules=[aws.s3.BucketV2CorsRuleArgs(
                allowed_headers=["*"],
                allowed_methods=[
                    "PUT",
                    "POST",
                ],
                allowed_origins=["https://s3-website-test.hashicorp.com"],
                expose_headers=["ETag"],
                max_age_seconds=3000,
            )])
        ```
        ### Using versioning

        ```python
        import pulumi
        import pulumi_aws as aws

        bucket_v2 = aws.s3.BucketV2("bucketV2",
            acl="private",
            versionings=[aws.s3.BucketV2VersioningArgs(
                enabled=True,
            )])
        ```
        ### Enable Logging

        ```python
        import pulumi
        import pulumi_aws as aws

        log_bucket = aws.s3.BucketV2("logBucket", acl="log-delivery-write")
        bucket_v2 = aws.s3.BucketV2("bucketV2",
            acl="private",
            loggings=[aws.s3.BucketV2LoggingArgs(
                target_bucket=log_bucket.id,
                target_prefix="log/",
            )])
        ```
        ### Using object lifecycle

        ```python
        import pulumi
        import pulumi_aws as aws

        bucket = aws.s3.BucketV2("bucket",
            acl="private",
            lifecycle_rules=[
                aws.s3.BucketV2LifecycleRuleArgs(
                    enabled=True,
                    expirations=[aws.s3.BucketV2LifecycleRuleExpirationArgs(
                        days=90,
                    )],
                    id="log",
                    prefix="log/",
                    tags={
                        "autoclean": "true",
                        "rule": "log",
                    },
                    transitions=[
                        aws.s3.BucketV2LifecycleRuleTransitionArgs(
                            days=30,
                            storage_class="STANDARD_IA",
                        ),
                        aws.s3.BucketV2LifecycleRuleTransitionArgs(
                            days=60,
                            storage_class="GLACIER",
                        ),
                    ],
                ),
                aws.s3.BucketV2LifecycleRuleArgs(
                    enabled=True,
                    expirations=[aws.s3.BucketV2LifecycleRuleExpirationArgs(
                        date="2016-01-12",
                    )],
                    id="tmp",
                    prefix="tmp/",
                ),
            ])
        versioning_bucket = aws.s3.BucketV2("versioningBucket",
            acl="private",
            lifecycle_rules=[aws.s3.BucketV2LifecycleRuleArgs(
                enabled=True,
                noncurrent_version_expirations=[aws.s3.BucketV2LifecycleRuleNoncurrentVersionExpirationArgs(
                    days=90,
                )],
                noncurrent_version_transitions=[
                    aws.s3.BucketV2LifecycleRuleNoncurrentVersionTransitionArgs(
                        days=30,
                        storage_class="STANDARD_IA",
                    ),
                    aws.s3.BucketV2LifecycleRuleNoncurrentVersionTransitionArgs(
                        days=60,
                        storage_class="GLACIER",
                    ),
                ],
                prefix="config/",
            )],
            versionings=[aws.s3.BucketV2VersioningArgs(
                enabled=True,
            )])
        ```
        ### Using object lock configuration

        ```python
        import pulumi
        import pulumi_aws as aws

        example = aws.s3.BucketV2("example", object_lock_configuration=aws.s3.BucketV2ObjectLockConfigurationArgs(
            object_lock_enabled="Enabled",
            rule=[{
                "defaultRetention": [{
                    "days": 5,
                    "mode": "COMPLIANCE",
                }],
            }],
        ))
        ```
        ### Using replication configuration

        ```python
        import pulumi
        import pulumi_aws as aws
        import pulumi_pulumi as pulumi

        central = pulumi.providers.Aws("central", region="eu-central-1")
        replication_role = aws.iam.Role("replicationRole", assume_role_policy=\"\"\"{
          "Version": "2012-10-17",
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Principal": {
                "Service": "s3.amazonaws.com"
              },
              "Effect": "Allow",
              "Sid": ""
            }
          ]
        }
        \"\"\")
        destination = aws.s3.BucketV2("destination", versionings=[aws.s3.BucketV2VersioningArgs(
            enabled=True,
        )])
        source = aws.s3.BucketV2("source",
            acl="private",
            versionings=[aws.s3.BucketV2VersioningArgs(
                enabled=True,
            )],
            replication_configurations=[aws.s3.BucketV2ReplicationConfigurationArgs(
                role=replication_role.arn,
                rules=[aws.s3.BucketV2ReplicationConfigurationRuleArgs(
                    id="foobar",
                    status="Enabled",
                    filters=[aws.s3.BucketV2ReplicationConfigurationRuleFilterArgs(
                        tags={},
                    )],
                    destinations=[aws.s3.BucketV2ReplicationConfigurationRuleDestinationArgs(
                        bucket=destination.arn,
                        storage_class="STANDARD",
                        replication_times=[aws.s3.BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArgs(
                            status="Enabled",
                            minutes=15,
                        )],
                        metrics=[aws.s3.BucketV2ReplicationConfigurationRuleDestinationMetricArgs(
                            status="Enabled",
                            minutes=15,
                        )],
                    )],
                )],
            )],
            opts=pulumi.ResourceOptions(provider=aws["central"]))
        replication_policy = aws.iam.Policy("replicationPolicy", policy=pulumi.Output.all(source.arn, source.arn, destination.arn).apply(lambda sourceArn, sourceArn1, destinationArn: f\"\"\"{{
          "Version": "2012-10-17",
          "Statement": [
            {{
              "Action": [
                "s3:GetReplicationConfiguration",
                "s3:ListBucket"
              ],
              "Effect": "Allow",
              "Resource": [
                "{source_arn}"
              ]
            }},
            {{
              "Action": [
                "s3:GetObjectVersionForReplication",
                "s3:GetObjectVersionAcl",
                 "s3:GetObjectVersionTagging"
              ],
              "Effect": "Allow",
              "Resource": [
                "{source_arn1}/*"
              ]
            }},
            {{
              "Action": [
                "s3:ReplicateObject",
                "s3:ReplicateDelete",
                "s3:ReplicateTags"
              ],
              "Effect": "Allow",
              "Resource": "{destination_arn}/*"
            }}
          ]
        }}
        \"\"\"))
        replication_role_policy_attachment = aws.iam.RolePolicyAttachment("replicationRolePolicyAttachment",
            role=replication_role.name,
            policy_arn=replication_policy.arn)
        ```
        ### Enable Default Server Side Encryption

        ```python
        import pulumi
        import pulumi_aws as aws

        mykey = aws.kms.Key("mykey",
            description="This key is used to encrypt bucket objects",
            deletion_window_in_days=10)
        mybucket = aws.s3.BucketV2("mybucket", server_side_encryption_configurations=[aws.s3.BucketV2ServerSideEncryptionConfigurationArgs(
            rules=[aws.s3.BucketV2ServerSideEncryptionConfigurationRuleArgs(
                apply_server_side_encryption_by_defaults=[aws.s3.BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs(
                    kms_master_key_id=mykey.arn,
                    sse_algorithm="aws:kms",
                )],
            )],
        )])
        ```
        ### Using ACL policy grants

        ```python
        import pulumi
        import pulumi_aws as aws

        current_user = aws.s3.get_canonical_user_id()
        bucket = aws.s3.BucketV2("bucket", grants=[
            aws.s3.BucketV2GrantArgs(
                id=current_user.id,
                type="CanonicalUser",
                permissions=["FULL_CONTROL"],
            ),
            aws.s3.BucketV2GrantArgs(
                type="Group",
                permissions=[
                    "READ_ACP",
                    "WRITE",
                ],
                uri="http://acs.amazonaws.com/groups/s3/LogDelivery",
            ),
        ])
        ```

        ## Import

        S3 bucket can be imported using the `bucket`, e.g.,

        ```sh
         $ pulumi import aws:s3/bucketV2:BucketV2 bucket bucket-name
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] acceleration_status: Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketAccelerateConfigurationV2` instead.
        :param pulumi.Input[str] acl: The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`.  Conflicts with `grant`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        :param pulumi.Input[str] arn: The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`.
        :param pulumi.Input[str] bucket: The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        :param pulumi.Input[str] bucket_prefix: Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2CorsRuleArgs']]]] cors_rules: A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead.
        :param pulumi.Input[bool] force_destroy: A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2GrantArgs']]]] grants: An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        :param pulumi.Input[str] hosted_zone_id: The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2LifecycleRuleArgs']]]] lifecycle_rules: A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketLifecycleConfigurationV2` instead.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2LoggingArgs']]]] loggings: A configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketLoggingV2` instead.
        :param pulumi.Input[pulumi.InputType['BucketV2ObjectLockConfigurationArgs']] object_lock_configuration: A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details.
               This provider wil only perform drift detection if a configuration value is provided.
               Use the `object_lock_enabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead.
        :param pulumi.Input[bool] object_lock_enabled: Indicates whether this bucket has an Object Lock configuration enabled.
        :param pulumi.Input[str] policy: A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a plan. In this case, please make sure you use the verbose/specific version of the policy.
               Use the resource `s3.BucketPolicy` instead.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2ReplicationConfigurationArgs']]]] replication_configurations: A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. this provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketReplicationConfig` instead.
        :param pulumi.Input[str] request_payer: Specifies who should bear the cost of Amazon S3 data transfer.
               Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer.
               See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information.
               This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketRequestPaymentConfigurationV2` instead.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2ServerSideEncryptionConfigurationArgs']]]] server_side_encryption_configurations: A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details.
               This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2VersioningArgs']]]] versionings: A configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2WebsiteArgs']]]] websites: A configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketWebsiteConfigurationV2` instead.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: Optional[BucketV2Args] = None,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Provides a S3 bucket resource.

        > This functionality is for managing S3 in an AWS Partition. To manage [S3 on Outposts](https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html), see the `s3control.Bucket` resource.

        > **NOTE on S3 Bucket Accelerate Configuration:** S3 Bucket Accelerate can be configured in either the standalone resource `s3.BucketAccelerateConfigurationV2`
        or with the deprecated parameter `acceleration_status` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket canned ACL Configuration:** S3 Bucket canned ACL can be configured in either the standalone resource `s3.BucketAclV2`
        or with the deprecated parameter `acl` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket ACL Grants Configuration:** S3 Bucket grants can be configured in either the standalone resource `s3.BucketAclV2`
        or with the deprecated parameter `grant` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket CORS Configuration:** S3 Bucket CORS can be configured in either the standalone resource `s3.BucketCorsConfigurationV2`
        or with the deprecated parameter `cors_rule` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Lifecycle Configuration:** S3 Bucket Lifecycle can be configured in either the standalone resource `s3.BucketLifecycleConfigurationV2`
        or with the deprecated parameter `lifecycle_rule` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Logging Configuration:** S3 Bucket logging can be configured in either the standalone resource `s3.BucketLoggingV2`
        or with the deprecated parameter `logging` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Object Lock Configuration:** S3 Bucket Object Lock can be configured in either the standalone resource `s3.BucketObjectLockConfigurationV2`
        or with the deprecated parameter `object_lock_configuration` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Policy Configuration:** S3 Bucket Policy can be configured in either the standalone resource `s3.BucketPolicy`
        or with the deprecated parameter `policy` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Replication Configuration:** S3 Bucket Replication can be configured in either the standalone resource `aws_s3_bucket_replicaton_configuration`
        or with the deprecated parameter `replication_configuration` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Request Payment Configuration:** S3 Bucket Request Payment can be configured in either the standalone resource `s3.BucketRequestPaymentConfigurationV2`
        or with the deprecated parameter `request_payer` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Server Side Encryption Configuration:** S3 Bucket Server Side Encryption can be configured in either the standalone resource `s3.BucketServerSideEncryptionConfigurationV2`
        or with the deprecated parameter `server_side_encryption_configuration` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Versioning Configuration:** S3 Bucket versioning can be configured in either the standalone resource `s3.BucketVersioningV2`
        or with the deprecated parameter `versioning` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        > **NOTE on S3 Bucket Website Configuration:** S3 Bucket Website can be configured in either the standalone resource `s3.BucketWebsiteConfigurationV2`
        or with the deprecated parameter `website` in the resource `s3.BucketV2`.
        Configuring with both will cause inconsistencies and may overwrite configuration.

        ## Example Usage
        ### Private Bucket w/ Tags

        ```python
        import pulumi
        import pulumi_aws as aws

        bucket_v2 = aws.s3.BucketV2("bucketV2", tags={
            "Name": "My bucket",
            "Environment": "Dev",
        })
        example = aws.s3.BucketAclV2("example",
            bucket=bucket_v2.id,
            acl="private")
        ```
        ### Static Website Hosting

        ```python
        import pulumi
        import pulumi_aws as aws

        bucket_v2 = aws.s3.BucketV2("bucketV2",
            acl="public-read",
            policy=(lambda path: open(path).read())("policy.json"),
            websites=[aws.s3.BucketV2WebsiteArgs(
                index_document="index.html",
                error_document="error.html",
                routing_rules=\"\"\"[{
            "Condition": {
                "KeyPrefixEquals": "docs/"
            },
            "Redirect": {
                "ReplaceKeyPrefixWith": "documents/"
            }
        }]
        \"\"\",
            )])
        ```
        ### Using CORS

        ```python
        import pulumi
        import pulumi_aws as aws

        bucket_v2 = aws.s3.BucketV2("bucketV2",
            acl="public-read",
            cors_rules=[aws.s3.BucketV2CorsRuleArgs(
                allowed_headers=["*"],
                allowed_methods=[
                    "PUT",
                    "POST",
                ],
                allowed_origins=["https://s3-website-test.hashicorp.com"],
                expose_headers=["ETag"],
                max_age_seconds=3000,
            )])
        ```
        ### Using versioning

        ```python
        import pulumi
        import pulumi_aws as aws

        bucket_v2 = aws.s3.BucketV2("bucketV2",
            acl="private",
            versionings=[aws.s3.BucketV2VersioningArgs(
                enabled=True,
            )])
        ```
        ### Enable Logging

        ```python
        import pulumi
        import pulumi_aws as aws

        log_bucket = aws.s3.BucketV2("logBucket", acl="log-delivery-write")
        bucket_v2 = aws.s3.BucketV2("bucketV2",
            acl="private",
            loggings=[aws.s3.BucketV2LoggingArgs(
                target_bucket=log_bucket.id,
                target_prefix="log/",
            )])
        ```
        ### Using object lifecycle

        ```python
        import pulumi
        import pulumi_aws as aws

        bucket = aws.s3.BucketV2("bucket",
            acl="private",
            lifecycle_rules=[
                aws.s3.BucketV2LifecycleRuleArgs(
                    enabled=True,
                    expirations=[aws.s3.BucketV2LifecycleRuleExpirationArgs(
                        days=90,
                    )],
                    id="log",
                    prefix="log/",
                    tags={
                        "autoclean": "true",
                        "rule": "log",
                    },
                    transitions=[
                        aws.s3.BucketV2LifecycleRuleTransitionArgs(
                            days=30,
                            storage_class="STANDARD_IA",
                        ),
                        aws.s3.BucketV2LifecycleRuleTransitionArgs(
                            days=60,
                            storage_class="GLACIER",
                        ),
                    ],
                ),
                aws.s3.BucketV2LifecycleRuleArgs(
                    enabled=True,
                    expirations=[aws.s3.BucketV2LifecycleRuleExpirationArgs(
                        date="2016-01-12",
                    )],
                    id="tmp",
                    prefix="tmp/",
                ),
            ])
        versioning_bucket = aws.s3.BucketV2("versioningBucket",
            acl="private",
            lifecycle_rules=[aws.s3.BucketV2LifecycleRuleArgs(
                enabled=True,
                noncurrent_version_expirations=[aws.s3.BucketV2LifecycleRuleNoncurrentVersionExpirationArgs(
                    days=90,
                )],
                noncurrent_version_transitions=[
                    aws.s3.BucketV2LifecycleRuleNoncurrentVersionTransitionArgs(
                        days=30,
                        storage_class="STANDARD_IA",
                    ),
                    aws.s3.BucketV2LifecycleRuleNoncurrentVersionTransitionArgs(
                        days=60,
                        storage_class="GLACIER",
                    ),
                ],
                prefix="config/",
            )],
            versionings=[aws.s3.BucketV2VersioningArgs(
                enabled=True,
            )])
        ```
        ### Using object lock configuration

        ```python
        import pulumi
        import pulumi_aws as aws

        example = aws.s3.BucketV2("example", object_lock_configuration=aws.s3.BucketV2ObjectLockConfigurationArgs(
            object_lock_enabled="Enabled",
            rule=[{
                "defaultRetention": [{
                    "days": 5,
                    "mode": "COMPLIANCE",
                }],
            }],
        ))
        ```
        ### Using replication configuration

        ```python
        import pulumi
        import pulumi_aws as aws
        import pulumi_pulumi as pulumi

        central = pulumi.providers.Aws("central", region="eu-central-1")
        replication_role = aws.iam.Role("replicationRole", assume_role_policy=\"\"\"{
          "Version": "2012-10-17",
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Principal": {
                "Service": "s3.amazonaws.com"
              },
              "Effect": "Allow",
              "Sid": ""
            }
          ]
        }
        \"\"\")
        destination = aws.s3.BucketV2("destination", versionings=[aws.s3.BucketV2VersioningArgs(
            enabled=True,
        )])
        source = aws.s3.BucketV2("source",
            acl="private",
            versionings=[aws.s3.BucketV2VersioningArgs(
                enabled=True,
            )],
            replication_configurations=[aws.s3.BucketV2ReplicationConfigurationArgs(
                role=replication_role.arn,
                rules=[aws.s3.BucketV2ReplicationConfigurationRuleArgs(
                    id="foobar",
                    status="Enabled",
                    filters=[aws.s3.BucketV2ReplicationConfigurationRuleFilterArgs(
                        tags={},
                    )],
                    destinations=[aws.s3.BucketV2ReplicationConfigurationRuleDestinationArgs(
                        bucket=destination.arn,
                        storage_class="STANDARD",
                        replication_times=[aws.s3.BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArgs(
                            status="Enabled",
                            minutes=15,
                        )],
                        metrics=[aws.s3.BucketV2ReplicationConfigurationRuleDestinationMetricArgs(
                            status="Enabled",
                            minutes=15,
                        )],
                    )],
                )],
            )],
            opts=pulumi.ResourceOptions(provider=aws["central"]))
        replication_policy = aws.iam.Policy("replicationPolicy", policy=pulumi.Output.all(source.arn, source.arn, destination.arn).apply(lambda sourceArn, sourceArn1, destinationArn: f\"\"\"{{
          "Version": "2012-10-17",
          "Statement": [
            {{
              "Action": [
                "s3:GetReplicationConfiguration",
                "s3:ListBucket"
              ],
              "Effect": "Allow",
              "Resource": [
                "{source_arn}"
              ]
            }},
            {{
              "Action": [
                "s3:GetObjectVersionForReplication",
                "s3:GetObjectVersionAcl",
                 "s3:GetObjectVersionTagging"
              ],
              "Effect": "Allow",
              "Resource": [
                "{source_arn1}/*"
              ]
            }},
            {{
              "Action": [
                "s3:ReplicateObject",
                "s3:ReplicateDelete",
                "s3:ReplicateTags"
              ],
              "Effect": "Allow",
              "Resource": "{destination_arn}/*"
            }}
          ]
        }}
        \"\"\"))
        replication_role_policy_attachment = aws.iam.RolePolicyAttachment("replicationRolePolicyAttachment",
            role=replication_role.name,
            policy_arn=replication_policy.arn)
        ```
        ### Enable Default Server Side Encryption

        ```python
        import pulumi
        import pulumi_aws as aws

        mykey = aws.kms.Key("mykey",
            description="This key is used to encrypt bucket objects",
            deletion_window_in_days=10)
        mybucket = aws.s3.BucketV2("mybucket", server_side_encryption_configurations=[aws.s3.BucketV2ServerSideEncryptionConfigurationArgs(
            rules=[aws.s3.BucketV2ServerSideEncryptionConfigurationRuleArgs(
                apply_server_side_encryption_by_defaults=[aws.s3.BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs(
                    kms_master_key_id=mykey.arn,
                    sse_algorithm="aws:kms",
                )],
            )],
        )])
        ```
        ### Using ACL policy grants

        ```python
        import pulumi
        import pulumi_aws as aws

        current_user = aws.s3.get_canonical_user_id()
        bucket = aws.s3.BucketV2("bucket", grants=[
            aws.s3.BucketV2GrantArgs(
                id=current_user.id,
                type="CanonicalUser",
                permissions=["FULL_CONTROL"],
            ),
            aws.s3.BucketV2GrantArgs(
                type="Group",
                permissions=[
                    "READ_ACP",
                    "WRITE",
                ],
                uri="http://acs.amazonaws.com/groups/s3/LogDelivery",
            ),
        ])
        ```

        ## Import

        S3 bucket can be imported using the `bucket`, e.g.,

        ```sh
         $ pulumi import aws:s3/bucketV2:BucketV2 bucket bucket-name
        ```

        :param str resource_name: The name of the resource.
        :param BucketV2Args args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(BucketV2Args, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 acceleration_status: Optional[pulumi.Input[str]] = None,
                 acl: Optional[pulumi.Input[str]] = None,
                 arn: Optional[pulumi.Input[str]] = None,
                 bucket: Optional[pulumi.Input[str]] = None,
                 bucket_prefix: Optional[pulumi.Input[str]] = None,
                 cors_rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2CorsRuleArgs']]]]] = None,
                 force_destroy: Optional[pulumi.Input[bool]] = None,
                 grants: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2GrantArgs']]]]] = None,
                 hosted_zone_id: Optional[pulumi.Input[str]] = None,
                 lifecycle_rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2LifecycleRuleArgs']]]]] = None,
                 loggings: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2LoggingArgs']]]]] = None,
                 object_lock_configuration: Optional[pulumi.Input[pulumi.InputType['BucketV2ObjectLockConfigurationArgs']]] = None,
                 object_lock_enabled: Optional[pulumi.Input[bool]] = None,
                 policy: Optional[pulumi.Input[str]] = None,
                 replication_configurations: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2ReplicationConfigurationArgs']]]]] = None,
                 request_payer: Optional[pulumi.Input[str]] = None,
                 server_side_encryption_configurations: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2ServerSideEncryptionConfigurationArgs']]]]] = None,
                 tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 versionings: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2VersioningArgs']]]]] = None,
                 websites: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2WebsiteArgs']]]]] = None,
                 __props__=None):
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = _utilities.get_version()
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = BucketV2Args.__new__(BucketV2Args)

            if acceleration_status is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_accelerate_configuration resource instead""", DeprecationWarning)
                pulumi.log.warn("""acceleration_status is deprecated: Use the aws_s3_bucket_accelerate_configuration resource instead""")
            __props__.__dict__["acceleration_status"] = acceleration_status
            if acl is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_acl resource instead""", DeprecationWarning)
                pulumi.log.warn("""acl is deprecated: Use the aws_s3_bucket_acl resource instead""")
            __props__.__dict__["acl"] = acl
            __props__.__dict__["arn"] = arn
            __props__.__dict__["bucket"] = bucket
            __props__.__dict__["bucket_prefix"] = bucket_prefix
            if cors_rules is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_cors_configuration resource instead""", DeprecationWarning)
                pulumi.log.warn("""cors_rules is deprecated: Use the aws_s3_bucket_cors_configuration resource instead""")
            __props__.__dict__["cors_rules"] = cors_rules
            __props__.__dict__["force_destroy"] = force_destroy
            if grants is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_acl resource instead""", DeprecationWarning)
                pulumi.log.warn("""grants is deprecated: Use the aws_s3_bucket_acl resource instead""")
            __props__.__dict__["grants"] = grants
            __props__.__dict__["hosted_zone_id"] = hosted_zone_id
            if lifecycle_rules is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_lifecycle_configuration resource instead""", DeprecationWarning)
                pulumi.log.warn("""lifecycle_rules is deprecated: Use the aws_s3_bucket_lifecycle_configuration resource instead""")
            __props__.__dict__["lifecycle_rules"] = lifecycle_rules
            if loggings is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_logging resource instead""", DeprecationWarning)
                pulumi.log.warn("""loggings is deprecated: Use the aws_s3_bucket_logging resource instead""")
            __props__.__dict__["loggings"] = loggings
            if object_lock_configuration is not None and not opts.urn:
                warnings.warn("""Use the top-level parameter object_lock_enabled and the aws_s3_bucket_object_lock_configuration resource instead""", DeprecationWarning)
                pulumi.log.warn("""object_lock_configuration is deprecated: Use the top-level parameter object_lock_enabled and the aws_s3_bucket_object_lock_configuration resource instead""")
            __props__.__dict__["object_lock_configuration"] = object_lock_configuration
            __props__.__dict__["object_lock_enabled"] = object_lock_enabled
            if policy is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_policy resource instead""", DeprecationWarning)
                pulumi.log.warn("""policy is deprecated: Use the aws_s3_bucket_policy resource instead""")
            __props__.__dict__["policy"] = policy
            if replication_configurations is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_replication_configuration resource instead""", DeprecationWarning)
                pulumi.log.warn("""replication_configurations is deprecated: Use the aws_s3_bucket_replication_configuration resource instead""")
            __props__.__dict__["replication_configurations"] = replication_configurations
            if request_payer is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_request_payment_configuration resource instead""", DeprecationWarning)
                pulumi.log.warn("""request_payer is deprecated: Use the aws_s3_bucket_request_payment_configuration resource instead""")
            __props__.__dict__["request_payer"] = request_payer
            if server_side_encryption_configurations is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_server_side_encryption_configuration resource instead""", DeprecationWarning)
                pulumi.log.warn("""server_side_encryption_configurations is deprecated: Use the aws_s3_bucket_server_side_encryption_configuration resource instead""")
            __props__.__dict__["server_side_encryption_configurations"] = server_side_encryption_configurations
            __props__.__dict__["tags"] = tags
            if versionings is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_versioning resource instead""", DeprecationWarning)
                pulumi.log.warn("""versionings is deprecated: Use the aws_s3_bucket_versioning resource instead""")
            __props__.__dict__["versionings"] = versionings
            if websites is not None and not opts.urn:
                warnings.warn("""Use the aws_s3_bucket_website_configuration resource instead""", DeprecationWarning)
                pulumi.log.warn("""websites is deprecated: Use the aws_s3_bucket_website_configuration resource instead""")
            __props__.__dict__["websites"] = websites
            __props__.__dict__["bucket_domain_name"] = None
            __props__.__dict__["bucket_regional_domain_name"] = None
            __props__.__dict__["region"] = None
            __props__.__dict__["tags_all"] = None
            __props__.__dict__["website_domain"] = None
            __props__.__dict__["website_endpoint"] = None
        alias_opts = pulumi.ResourceOptions(aliases=[pulumi.Alias(type_="aws:s3/bucket:Bucket")])
        opts = pulumi.ResourceOptions.merge(opts, alias_opts)
        super(BucketV2, __self__).__init__(
            'aws:s3/bucketV2:BucketV2',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            acceleration_status: Optional[pulumi.Input[str]] = None,
            acl: Optional[pulumi.Input[str]] = None,
            arn: Optional[pulumi.Input[str]] = None,
            bucket: Optional[pulumi.Input[str]] = None,
            bucket_domain_name: Optional[pulumi.Input[str]] = None,
            bucket_prefix: Optional[pulumi.Input[str]] = None,
            bucket_regional_domain_name: Optional[pulumi.Input[str]] = None,
            cors_rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2CorsRuleArgs']]]]] = None,
            force_destroy: Optional[pulumi.Input[bool]] = None,
            grants: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2GrantArgs']]]]] = None,
            hosted_zone_id: Optional[pulumi.Input[str]] = None,
            lifecycle_rules: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2LifecycleRuleArgs']]]]] = None,
            loggings: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2LoggingArgs']]]]] = None,
            object_lock_configuration: Optional[pulumi.Input[pulumi.InputType['BucketV2ObjectLockConfigurationArgs']]] = None,
            object_lock_enabled: Optional[pulumi.Input[bool]] = None,
            policy: Optional[pulumi.Input[str]] = None,
            region: Optional[pulumi.Input[str]] = None,
            replication_configurations: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2ReplicationConfigurationArgs']]]]] = None,
            request_payer: Optional[pulumi.Input[str]] = None,
            server_side_encryption_configurations: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2ServerSideEncryptionConfigurationArgs']]]]] = None,
            tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
            tags_all: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
            versionings: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2VersioningArgs']]]]] = None,
            website_domain: Optional[pulumi.Input[str]] = None,
            website_endpoint: Optional[pulumi.Input[str]] = None,
            websites: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2WebsiteArgs']]]]] = None) -> 'BucketV2':
        """
        Get an existing BucketV2 resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] acceleration_status: Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketAccelerateConfigurationV2` instead.
        :param pulumi.Input[str] acl: The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`.  Conflicts with `grant`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        :param pulumi.Input[str] arn: The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`.
        :param pulumi.Input[str] bucket: The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        :param pulumi.Input[str] bucket_domain_name: The bucket domain name. Will be of format `bucketname.s3.amazonaws.com`.
        :param pulumi.Input[str] bucket_prefix: Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        :param pulumi.Input[str] bucket_regional_domain_name: The bucket region-specific domain name. The bucket domain name including the region name, please refer [here](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent [redirect issues](https://forums.aws.amazon.com/thread.jspa?threadID=216814) from CloudFront to S3 Origin URL.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2CorsRuleArgs']]]] cors_rules: A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead.
        :param pulumi.Input[bool] force_destroy: A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2GrantArgs']]]] grants: An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        :param pulumi.Input[str] hosted_zone_id: The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2LifecycleRuleArgs']]]] lifecycle_rules: A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketLifecycleConfigurationV2` instead.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2LoggingArgs']]]] loggings: A configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketLoggingV2` instead.
        :param pulumi.Input[pulumi.InputType['BucketV2ObjectLockConfigurationArgs']] object_lock_configuration: A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details.
               This provider wil only perform drift detection if a configuration value is provided.
               Use the `object_lock_enabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead.
        :param pulumi.Input[bool] object_lock_enabled: Indicates whether this bucket has an Object Lock configuration enabled.
        :param pulumi.Input[str] policy: A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a plan. In this case, please make sure you use the verbose/specific version of the policy.
               Use the resource `s3.BucketPolicy` instead.
        :param pulumi.Input[str] region: The AWS region this bucket resides in.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2ReplicationConfigurationArgs']]]] replication_configurations: A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. this provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketReplicationConfig` instead.
        :param pulumi.Input[str] request_payer: Specifies who should bear the cost of Amazon S3 data transfer.
               Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer.
               See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information.
               This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketRequestPaymentConfigurationV2` instead.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2ServerSideEncryptionConfigurationArgs']]]] server_side_encryption_configurations: A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details.
               This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags_all: A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2VersioningArgs']]]] versionings: A configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead.
        :param pulumi.Input[str] website_domain: The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records.
        :param pulumi.Input[str] website_endpoint: The website endpoint, if the bucket is configured with a website. If not, this will be an empty string.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['BucketV2WebsiteArgs']]]] websites: A configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. This provider will only perform drift detection if a configuration value is provided.
               Use the resource `s3.BucketWebsiteConfigurationV2` instead.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _BucketV2State.__new__(_BucketV2State)

        __props__.__dict__["acceleration_status"] = acceleration_status
        __props__.__dict__["acl"] = acl
        __props__.__dict__["arn"] = arn
        __props__.__dict__["bucket"] = bucket
        __props__.__dict__["bucket_domain_name"] = bucket_domain_name
        __props__.__dict__["bucket_prefix"] = bucket_prefix
        __props__.__dict__["bucket_regional_domain_name"] = bucket_regional_domain_name
        __props__.__dict__["cors_rules"] = cors_rules
        __props__.__dict__["force_destroy"] = force_destroy
        __props__.__dict__["grants"] = grants
        __props__.__dict__["hosted_zone_id"] = hosted_zone_id
        __props__.__dict__["lifecycle_rules"] = lifecycle_rules
        __props__.__dict__["loggings"] = loggings
        __props__.__dict__["object_lock_configuration"] = object_lock_configuration
        __props__.__dict__["object_lock_enabled"] = object_lock_enabled
        __props__.__dict__["policy"] = policy
        __props__.__dict__["region"] = region
        __props__.__dict__["replication_configurations"] = replication_configurations
        __props__.__dict__["request_payer"] = request_payer
        __props__.__dict__["server_side_encryption_configurations"] = server_side_encryption_configurations
        __props__.__dict__["tags"] = tags
        __props__.__dict__["tags_all"] = tags_all
        __props__.__dict__["versionings"] = versionings
        __props__.__dict__["website_domain"] = website_domain
        __props__.__dict__["website_endpoint"] = website_endpoint
        __props__.__dict__["websites"] = websites
        return BucketV2(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="accelerationStatus")
    def acceleration_status(self) -> pulumi.Output[str]:
        """
        Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketAccelerateConfigurationV2` instead.
        """
        return pulumi.get(self, "acceleration_status")

    @property
    @pulumi.getter
    def acl(self) -> pulumi.Output[str]:
        """
        The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`.  Conflicts with `grant`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        """
        return pulumi.get(self, "acl")

    @property
    @pulumi.getter
    def arn(self) -> pulumi.Output[str]:
        """
        The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`.
        """
        return pulumi.get(self, "arn")

    @property
    @pulumi.getter
    def bucket(self) -> pulumi.Output[str]:
        """
        The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        """
        return pulumi.get(self, "bucket")

    @property
    @pulumi.getter(name="bucketDomainName")
    def bucket_domain_name(self) -> pulumi.Output[str]:
        """
        The bucket domain name. Will be of format `bucketname.s3.amazonaws.com`.
        """
        return pulumi.get(self, "bucket_domain_name")

    @property
    @pulumi.getter(name="bucketPrefix")
    def bucket_prefix(self) -> pulumi.Output[Optional[str]]:
        """
        Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
        """
        return pulumi.get(self, "bucket_prefix")

    @property
    @pulumi.getter(name="bucketRegionalDomainName")
    def bucket_regional_domain_name(self) -> pulumi.Output[str]:
        """
        The bucket region-specific domain name. The bucket domain name including the region name, please refer [here](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent [redirect issues](https://forums.aws.amazon.com/thread.jspa?threadID=216814) from CloudFront to S3 Origin URL.
        """
        return pulumi.get(self, "bucket_regional_domain_name")

    @property
    @pulumi.getter(name="corsRules")
    def cors_rules(self) -> pulumi.Output[Sequence['outputs.BucketV2CorsRule']]:
        """
        A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead.
        """
        return pulumi.get(self, "cors_rules")

    @property
    @pulumi.getter(name="forceDestroy")
    def force_destroy(self) -> pulumi.Output[Optional[bool]]:
        """
        A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable.
        """
        return pulumi.get(self, "force_destroy")

    @property
    @pulumi.getter
    def grants(self) -> pulumi.Output[Sequence['outputs.BucketV2Grant']]:
        """
        An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead.
        """
        return pulumi.get(self, "grants")

    @property
    @pulumi.getter(name="hostedZoneId")
    def hosted_zone_id(self) -> pulumi.Output[str]:
        """
        The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region.
        """
        return pulumi.get(self, "hosted_zone_id")

    @property
    @pulumi.getter(name="lifecycleRules")
    def lifecycle_rules(self) -> pulumi.Output[Sequence['outputs.BucketV2LifecycleRule']]:
        """
        A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketLifecycleConfigurationV2` instead.
        """
        return pulumi.get(self, "lifecycle_rules")

    @property
    @pulumi.getter
    def loggings(self) -> pulumi.Output[Sequence['outputs.BucketV2Logging']]:
        """
        A configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketLoggingV2` instead.
        """
        return pulumi.get(self, "loggings")

    @property
    @pulumi.getter(name="objectLockConfiguration")
    def object_lock_configuration(self) -> pulumi.Output['outputs.BucketV2ObjectLockConfiguration']:
        """
        A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details.
        This provider wil only perform drift detection if a configuration value is provided.
        Use the `object_lock_enabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead.
        """
        return pulumi.get(self, "object_lock_configuration")

    @property
    @pulumi.getter(name="objectLockEnabled")
    def object_lock_enabled(self) -> pulumi.Output[bool]:
        """
        Indicates whether this bucket has an Object Lock configuration enabled.
        """
        return pulumi.get(self, "object_lock_enabled")

    @property
    @pulumi.getter
    def policy(self) -> pulumi.Output[str]:
        """
        A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a plan. In this case, please make sure you use the verbose/specific version of the policy.
        Use the resource `s3.BucketPolicy` instead.
        """
        return pulumi.get(self, "policy")

    @property
    @pulumi.getter
    def region(self) -> pulumi.Output[str]:
        """
        The AWS region this bucket resides in.
        """
        return pulumi.get(self, "region")

    @property
    @pulumi.getter(name="replicationConfigurations")
    def replication_configurations(self) -> pulumi.Output[Sequence['outputs.BucketV2ReplicationConfiguration']]:
        """
        A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. this provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketReplicationConfig` instead.
        """
        return pulumi.get(self, "replication_configurations")

    @property
    @pulumi.getter(name="requestPayer")
    def request_payer(self) -> pulumi.Output[str]:
        """
        Specifies who should bear the cost of Amazon S3 data transfer.
        Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer.
        See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information.
        This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketRequestPaymentConfigurationV2` instead.
        """
        return pulumi.get(self, "request_payer")

    @property
    @pulumi.getter(name="serverSideEncryptionConfigurations")
    def server_side_encryption_configurations(self) -> pulumi.Output[Sequence['outputs.BucketV2ServerSideEncryptionConfiguration']]:
        """
        A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details.
        This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead.
        """
        return pulumi.get(self, "server_side_encryption_configurations")

    @property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
        """
        A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="tagsAll")
    def tags_all(self) -> pulumi.Output[Mapping[str, str]]:
        """
        A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
        """
        return pulumi.get(self, "tags_all")

    @property
    @pulumi.getter
    def versionings(self) -> pulumi.Output[Sequence['outputs.BucketV2Versioning']]:
        """
        A configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead.
        """
        return pulumi.get(self, "versionings")

    @property
    @pulumi.getter(name="websiteDomain")
    def website_domain(self) -> pulumi.Output[str]:
        """
        The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records.
        """
        return pulumi.get(self, "website_domain")

    @property
    @pulumi.getter(name="websiteEndpoint")
    def website_endpoint(self) -> pulumi.Output[str]:
        """
        The website endpoint, if the bucket is configured with a website. If not, this will be an empty string.
        """
        return pulumi.get(self, "website_endpoint")

    @property
    @pulumi.getter
    def websites(self) -> pulumi.Output[Sequence['outputs.BucketV2Website']]:
        """
        A configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. This provider will only perform drift detection if a configuration value is provided.
        Use the resource `s3.BucketWebsiteConfigurationV2` instead.
        """
        return pulumi.get(self, "websites")

