/*
* 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 Amazon.Runtime;
namespace Amazon.S3.Model
{
///
/// Container for the parameters to the PutBucketInventoryConfiguration operation.
/// This implementation of the PUT
action adds an inventory configuration
/// (identified by the inventory ID) to the bucket. You can have up to 1,000 inventory
/// configurations per bucket.
///
///
///
/// Amazon S3 inventory generates inventories of the objects in the bucket on a daily
/// or weekly basis, and the results are published to a flat file. The bucket that is
/// inventoried is called the source bucket, and the bucket where the inventory
/// flat file is stored is called the destination bucket. The destination
/// bucket must be in the same Amazon Web Services Region as the source bucket.
///
///
///
///
/// When you configure an inventory for a source bucket, you specify the destination
/// bucket where you want the inventory to be stored, and whether to generate the inventory
/// daily or weekly. You can also configure what object metadata to include and whether
/// to inventory all object versions or only current versions. For more information, see
/// Amazon
/// S3 Inventory in the Amazon S3 User Guide.
///
///
///
/// You must create a bucket policy on the destination bucket to grant permissions
/// to Amazon S3 to write objects to the bucket in the defined location. For an example
/// policy, see
/// Granting Permissions for Amazon S3 Inventory and Storage Class Analysis.
///
/// - Permissions
-
///
/// To use this operation, you must have permissions to perform the
s3:PutInventoryConfiguration
/// action. The bucket owner has this permission by default and can grant this permission
/// to others.
///
///
///
/// The s3:PutInventoryConfiguration
permission allows a user to create an
/// S3
/// Inventory report that includes all object metadata fields available and to specify
/// the destination bucket to store the inventory. A user with read access to objects
/// in the destination bucket can also access all object metadata fields that are available
/// in the inventory report.
///
///
///
/// To restrict access to an inventory report, see Restricting
/// access to an Amazon S3 Inventory report in the Amazon S3 User Guide. For
/// more information about the metadata fields available in S3 Inventory, see Amazon
/// S3 Inventory lists in the Amazon S3 User Guide. For more information about
/// permissions, see Permissions
/// related to bucket subresource operations and Identity
/// and access management in Amazon S3 in the Amazon S3 User Guide.
///
///
///
/// PutBucketInventoryConfiguration
has the following special errors:
///
/// - HTTP 400 Bad Request Error
-
///
/// Code: InvalidArgument
///
///
/// Cause: Invalid Argument
///
///
- HTTP 400 Bad Request Error
-
///
/// Code: TooManyConfigurations
///
///
/// Cause: You are attempting to create a new configuration but have already reached
/// the 1,000-configuration limit.
///
///
- HTTP 400 Bad Request Error
-
///
/// Cause: You are not the owner of the specified bucket, or you do not have the
///
s3:PutInventoryConfiguration
bucket permission to set the configuration
/// on the bucket.
///
///
///
/// The following operations are related to PutBucketInventoryConfiguration
:
///
///
///
public partial class PutBucketInventoryConfigurationRequest : AmazonWebServiceRequest
{
private string bucketName;
private string inventoryId;
private InventoryConfiguration inventoryConfiguration;
private string expectedBucketOwner;
///
/// The name of the bucket where the inventory configuration will be stored.
///
public string BucketName
{
get { return this.bucketName; }
set { this.bucketName = value; }
}
// Check to see if Bucket property is set
internal bool IsSetBucketName()
{
return !(string.IsNullOrEmpty(this.bucketName));
}
///
/// Specifies the inventory Id.
///
public string InventoryId
{
get { return this.inventoryId; }
set { this.inventoryId = value; }
}
// Check to see if InventoryId property is set
internal bool IsSetInventoryId()
{
return !(string.IsNullOrEmpty(this.inventoryId));
}
///
/// Specifies the inventory configuration.
///
public InventoryConfiguration InventoryConfiguration
{
get { return this.inventoryConfiguration; }
set { this.inventoryConfiguration = value; }
}
// Check to see if InventoryConfiguration property is set
internal bool IsSetInventoryConfiguration()
{
return this.inventoryConfiguration != null;
}
///
/// The account ID of the expected bucket owner.
/// If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
///
public string ExpectedBucketOwner
{
get { return this.expectedBucketOwner; }
set { this.expectedBucketOwner = value; }
}
///
/// Checks to see if ExpectedBucketOwner is set.
///
/// true, if ExpectedBucketOwner property is set.
internal bool IsSetExpectedBucketOwner()
{
return !String.IsNullOrEmpty(this.expectedBucketOwner);
}
}
}