/*
* 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 PutLifecycleConfiguration operation.
/// Creates a new lifecycle configuration for the bucket or replaces an existing lifecycle
/// configuration. For information about lifecycle configuration, see Managing
/// your storage lifecycle.
///
///
///
/// Bucket lifecycle configuration now supports specifying a lifecycle rule using an object
/// key name prefix, one or more object tags, or a combination of both. Accordingly, this
/// section describes the latest API. The previous version of the API supported filtering
/// based only on an object key name prefix, which is supported for backward compatibility.
/// For the related API description, see PutBucketLifecycle.
///
/// - Rules
-
///
/// You specify the lifecycle configuration in your request body. The lifecycle configuration
/// is specified as XML consisting of one or more rules. An Amazon S3 Lifecycle configuration
/// can have up to 1,000 rules. This limit is not adjustable. Each rule consists of the
/// following:
///
///
-
///
/// Filter identifying a subset of objects to which the rule applies. The filter can be
/// based on a key name prefix, object tags, or a combination of both.
///
///
-
///
/// Status whether the rule is in effect.
///
///
-
///
/// One or more lifecycle transition and expiration actions that you want Amazon S3 to
/// perform on the objects identified by the filter. If the state of your bucket is versioning-enabled
/// or versioning-suspended, you can have many versions of the same object (one current
/// version and zero or more noncurrent versions). Amazon S3 provides predefined actions
/// that you can specify for current and noncurrent object versions.
///
///
///
/// For more information, see Object
/// Lifecycle Management and Lifecycle
/// Configuration Elements.
///
/// - Permissions
-
///
/// By default, all Amazon S3 resources are private, including buckets, objects, and related
/// subresources (for example, lifecycle configuration and website configuration). Only
/// the resource owner (that is, the Amazon Web Services account that created it) can
/// access the resource. The resource owner can optionally grant access permissions to
/// others by writing an access policy. For this operation, a user must get the s3:PutLifecycleConfiguration
/// permission.
///
///
///
/// You can also explicitly deny permissions. Explicit deny also supersedes any other
/// permissions. If you want to block users or accounts from removing or deleting objects
/// from your bucket, you must deny them permissions for the following actions:
///
///
-
///
/// s3:DeleteObject
///
///
-
///
/// s3:DeleteObjectVersion
///
///
-
///
/// s3:PutLifecycleConfiguration
///
///
///
/// For more information about permissions, see Managing
/// Access Permissions to Your Amazon S3 Resources.
///
///
///
/// The following operations are related to PutBucketLifecycleConfiguration
:
///
///
///
public partial class PutLifecycleConfigurationRequest : AmazonWebServiceRequest
{
private string bucketName;
private ChecksumAlgorithm _checksumAlgorithm;
private LifecycleConfiguration lifecycleConfiguration;
private string expectedBucketOwner;
///
/// Gets and sets the property BucketName.
///
/// The name of the bucket for which to set the configuration.
///
///
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;
}
///
/// Gets and sets the property ChecksumAlgorithm.
///
public ChecksumAlgorithm ChecksumAlgorithm
{
get { return this._checksumAlgorithm; }
set { this._checksumAlgorithm = value; }
}
// Check to see if ChecksumAlgorithm property is set
internal bool IsSetChecksumAlgorithm()
{
return this._checksumAlgorithm != null;
}
///
/// The lifecycle configuration to be applied.
///
public LifecycleConfiguration Configuration
{
get { return this.lifecycleConfiguration; }
set { this.lifecycleConfiguration = value; }
}
// Check to see if Configuration property is set
internal bool IsSetConfiguration()
{
return this.lifecycleConfiguration != null;
}
///
/// Gets and sets the property ExpectedBucketOwner.
///
/// 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; }
}
// Check to see if ExpectedBucketOwner property is set
internal bool IsSetExpectedBucketOwner()
{
return !String.IsNullOrEmpty(this.expectedBucketOwner);
}
}
}