/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.S3.Model { /// /// Container for the parameters to the PutBucket operation. /// Creates a new S3 bucket. To create a bucket, you must register with Amazon S3 and /// have a valid Amazon Web Services Access Key ID to authenticate requests. Anonymous /// requests are never allowed to create buckets. By creating the bucket, you become the /// bucket owner. /// /// /// /// Not every string is an acceptable bucket name. For information about bucket naming /// restrictions, see Bucket /// naming rules. /// /// /// /// If you want to create an Amazon S3 on Outposts bucket, see Create /// Bucket. /// /// /// /// By default, the bucket is created in the US East (N. Virginia) Region. You can optionally /// specify a Region in the request body. You might choose a Region to optimize latency, /// minimize costs, or address regulatory requirements. For example, if you reside in /// Europe, you will probably find it advantageous to create buckets in the Europe (Ireland) /// Region. For more information, see Accessing /// a bucket. /// /// /// /// If you send your create bucket request to the s3.amazonaws.com endpoint, /// the request goes to the us-east-1 Region. Accordingly, the signature calculations /// in Signature Version 4 must use us-east-1 as the Region, even if the location constraint /// in the request specifies another Region where the bucket is to be created. If you /// create a bucket in a Region other than US East (N. Virginia), your application must /// be able to handle 307 redirect. For more information, see Virtual /// hosting of buckets. /// ///
Access control lists (ACLs)
/// /// /// When creating a bucket using this operation, you can optionally configure the bucket /// ACL to specify the accounts or groups that should be granted specific permissions /// on the bucket. /// /// /// /// If your CreateBucket request includes the BucketOwnerEnforced value for /// the x-amz-object-ownership header, your request can either not specify /// an ACL or specify bucket owner full control ACLs, such as the bucket-owner-full-control /// canned ACL or an equivalent ACL expressed in the XML format. For more information, /// see Controlling /// object ownership in the Amazon S3 User Guide. /// /// /// /// There are two ways to grant the appropriate permissions using the request headers. /// ///
  • /// /// Specify a canned ACL using the x-amz-acl request header. Amazon S3 supports /// a set of predefined ACLs, known as canned ACLs. Each canned ACL has a predefined /// set of grantees and permissions. For more information, see Canned /// ACL. /// ///
  • /// /// Specify access permissions explicitly using the x-amz-grant-read, x-amz-grant-write, /// x-amz-grant-read-acp, x-amz-grant-write-acp, and x-amz-grant-full-control /// headers. These headers map to the set of permissions Amazon S3 supports in an ACL. /// For more information, see Access /// control list (ACL) overview. /// /// /// /// You specify each grantee as a type=value pair, where the type is one of the following: /// ///
    • /// /// id – if the value specified is the canonical user ID of an Amazon Web /// Services account /// ///
    • /// /// uri – if you are granting permissions to a predefined group /// ///
    • /// /// emailAddress – if the value specified is the email address of an Amazon /// Web Services account /// /// /// /// Using email addresses to specify a grantee is only supported in the following Amazon /// Web Services Regions: /// ///
      • /// /// US East (N. Virginia) /// ///
      • /// /// US West (N. California) /// ///
      • /// /// US West (Oregon) /// ///
      • /// /// Asia Pacific (Singapore) /// ///
      • /// /// Asia Pacific (Sydney) /// ///
      • /// /// Asia Pacific (Tokyo) /// ///
      • /// /// Europe (Ireland) /// ///
      • /// /// South America (São Paulo) /// ///
      /// /// For a list of all the Amazon S3 supported Regions and endpoints, see Regions /// and Endpoints in the Amazon Web Services General Reference. /// ///
    /// /// For example, the following x-amz-grant-read header grants the Amazon /// Web Services accounts identified by account IDs permissions to read object data and /// its metadata: /// /// /// /// x-amz-grant-read: id="11112222333", id="444455556666" /// ///
/// /// You can use either a canned ACL or specify access permissions explicitly. You cannot /// do both. /// ///
Permissions
/// /// /// In addition to s3:CreateBucket, the following permissions are required /// when your CreateBucket includes specific headers: /// ///
  • /// /// ACLs - If your CreateBucket request specifies ACL permissions /// and the ACL is public-read, public-read-write, authenticated-read, or if you specify /// access permissions explicitly through any other ACL, both s3:CreateBucket /// and s3:PutBucketAcl permissions are needed. If the ACL the CreateBucket /// request is private or doesn't specify any ACLs, only s3:CreateBucket /// permission is needed. /// ///
  • /// /// Object Lock - If ObjectLockEnabledForBucket is set to true in /// your CreateBucket request, s3:PutBucketObjectLockConfiguration /// and s3:PutBucketVersioning permissions are required. /// ///
  • /// /// S3 Object Ownership - If your CreateBucket request includes the the x-amz-object-ownership /// header, s3:PutBucketOwnershipControls permission is required. /// ///
/// /// The following operations are related to CreateBucket: /// /// ///
public partial class PutBucketRequest : PutWithACLRequest { private string bucketName; private S3Region bucketRegion; private string bucketRegionName; private bool useClientRegion = true; private S3CannedACL cannedAcl; private bool? _objectLockEnabledForBucket; private ObjectOwnership _objectOwnership; /// /// The canned ACL to apply to the bucket. /// /// public S3CannedACL CannedACL { get { return this.cannedAcl; } set { this.cannedAcl = value; } } // Check to see if ACL property is set internal bool IsSetCannedACL() { return cannedAcl != null && cannedAcl != S3CannedACL.NoACL; } /// /// If set to true the bucket will be created in the same region /// as the configuration of the AmazonS3 client. /// If PutBucketRequest.BucketRegion or PutBucketRequest.BucketRegionName are set they take precedence over /// this property. /// Default: true. /// public bool UseClientRegion { get { return this.useClientRegion; } set { this.useClientRegion = value; } } /// /// The name of the bucket to be created. /// public string BucketName { get { return this.bucketName; } set { this.bucketName = value; } } // Check to see if BucketName property is set internal bool IsSetBucketName() { return this.bucketName != null; } /// /// The region locality for the bucket. /// /// /// When set, this will determine where your data will /// reside in S3. Refer /// for a list of possible values. /// public S3Region BucketRegion { get { return this.bucketRegion; } set { this.bucketRegion = value; } } // Check to see if BucketRegion property is set internal bool IsSetBucketRegion() { return this.bucketRegion != null; } /// /// The bucket region locality expressed using the name of the region. /// When set, this will determine where your data will reside in S3. /// Valid values: us-east-1, us-west-1, us-west-2, eu-west-1, ap-southeast-1, ap-southeast-2, ap-northeast-1, sa-east-1 /// public string BucketRegionName { get { return this.bucketRegionName; } set { this.bucketRegionName = value; } } // Check to see if BucketRegionName property is set internal bool IsSetBucketRegionName() { return !string.IsNullOrEmpty(this.bucketRegionName); } /// /// Gets and sets the property ObjectLockEnabledForBucket. /// /// Specifies whether you want S3 Object Lock to be enabled for the new bucket. /// /// public bool ObjectLockEnabledForBucket { get { return this._objectLockEnabledForBucket.GetValueOrDefault(); } set { this._objectLockEnabledForBucket = value; } } // Check to see if ObjectLockEnabledForBucket property is set internal bool IsSetObjectLockEnabledForBucket() { return this._objectLockEnabledForBucket.HasValue; } /// /// Gets and sets the property ObjectOwnership. /// public ObjectOwnership ObjectOwnership { get { return this._objectOwnership; } set { this._objectOwnership = value; } } // Check to see if ObjectOwnership property is set internal bool IsSetObjectOwnership() { return this._objectOwnership != null; } } }