

# 使用有条件请求向 S3 操作添加前提条件
<a name="conditional-requests"></a>

可以使用有条件请求向 S3 操作添加前提条件。要使用有条件请求，需要向 Amazon S3 API 操作添加一个额外的标头。此标头指定了一个条件，如果不满足该条件，将导致 S3 操作失败。

`GET`、`HEAD` 和 `COPY` 请求支持有条件读取。可以添加前提条件，来根据对象的实体标签（ETag）或上次修改日期返回或复制该对象。这可以将 S3 操作限制为自指定日期以来更新的对象。也可以将 S3 操作限制为特定的 ETag。这可以确保您只返回或复制特定的对象版本。有关对象元数据的详细信息，请参阅 [使用对象元数据](UsingMetadata.md)。

有条件写入可以确保在 `PUT` 操作期间，存储桶中不存在具有相同键名称的现有对象。这可以防止覆盖具有相同键名称的现有对象。同样，在更新对象之前，可以使用有条件写入来检查对象的 ETag 是否未更改。这样可以防止在不知道对象内容状态的情况下意外覆盖该对象。您可以将有条件写入用于 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)、[CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) 或 [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 请求。有关键名称的更多信息，请参阅 [为 Amazon S3 对象命名](object-keys.md)。

有条件删除会在删除对象之前评估对象是否存在或未更改。您可以在通用存储桶和目录存储桶中使用 `DeleteObject` 或 `DeleteObjects` API 执行有条件删除。有关有条件删除的更多信息，请参阅[如何执行有条件删除](conditional-deletes.md)。有条件读取、有条件写入或有条件删除无需额外付费。对于适用的请求，包括失败的请求，您只需按现有费率付费。有关 Amazon S3 特征和定价的信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing)。

**Topics**
+ [如何使用有条件读取根据元数据检索或复制对象](conditional-reads.md)
+ [如何使用有条件写入来防止对象覆盖](conditional-writes.md)
+ [如何执行有条件删除](conditional-deletes.md)