

# Configuración de una clave de bucket de S3 en el nivel de objeto
<a name="configuring-bucket-key-object"></a>

Cuando realiza una operación PUT o COPY mediante la API de REST, los SDK de AWS o la AWS CLI, puede habilitar o desactivar una clave de bucket de S3 en el nivel de objeto agregando el encabezado de la solicitud `x-amz-server-side-encryption-bucket-key-enabled` con un valor `true` o `false`. Las claves de bucket de S3 permiten reducir el costo de cifrado del lado del servidor mediante AWS Key Management Service (AWS KMS) (SSE-KMS) al disminuir el tráfico de solicitudes de Amazon S3 a AWS KMS. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md). 

Cuando se configura una clave de bucket de S3 para un objeto mediante una operación PUT o COPY, Amazon S3 solo actualiza la configuración de ese objeto. El ajuste de la clave de bucket de S3 para el bucket de destino no cambia. Si envía una solicitud PUT o COPY para un objeto cifrado con KMS a un bucket con las claves de bucket de S3 habilitadas, la operación en el nivel de objeto utilizará automáticamente las claves de bucket de S3, a menos que desactive las claves del encabezado de la solicitud. Si no especifica una clave de bucket de S3 para el objeto, Amazon S3 aplica el ajuste de la clave de bucket de S3 para el bucket de destino al objeto.

**Requisito previo:**  
Antes de configurar el objeto para usar una clave de bucket de S3, consulte  [Cambios para tener en cuenta antes de habilitar una clave de bucket de S3](bucket-key.md#bucket-key-changes). 

**Topics**
+ [Herramienta de operaciones por lotes de Amazon S3](#bucket-key-object-bops)
+ [Uso de la API de REST](#bucket-key-object-rest)
+ [Uso de AWS SDK para Java (PutObject)](#bucket-key-object-sdk)
+ [Uso de la AWS CLI (PutObject)](#bucket-key-object-cli)

## Herramienta de operaciones por lotes de Amazon S3
<a name="bucket-key-object-bops"></a>

Para cifrar los objetos de Amazon S3 existentes, puede utilizar la herramienta de operaciones por lotes de Amazon S3. A las operaciones por lotes de S3 se les proporciona una lista de objetos en los que deben actuar. Las operaciones por lotes llaman a la API correspondiente para llevar a cabo la operación especificada. 

Puede utilizar la [operación de copia de la herramienta de operaciones por lotes de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html) para copiar objetos existentes sin cifrar y escribirlos como objetos cifrados en el mismo bucket. Un solo trabajo de la herramienta de operaciones por lotes puede realizar la operación especificada en miles de millones de objetos. Para obtener más información, consulte [Realización de operaciones de objetos de forma masiva con Operaciones por lotes](batch-ops.md) y [Cifrado de objetos con la herramienta de operaciones por lotes de Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

## Uso de la API de REST
<a name="bucket-key-object-rest"></a>

Si utiliza SSE-KMS, puede habilitar una clave de bucket de S3 para un objeto con las siguientes operaciones de la API: 
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) : al cargar un objeto, puede especificar el encabezado de solicitud `x-amz-server-side-encryption-bucket-key-enabled` para habilitar o deshabilitar una clave de bucket de S3 en el nivel de objeto. 
+ [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) : al copiar un objeto y configurar SSE-KMS, puede especificar el encabezado de solicitud `x-amz-server-side-encryption-bucket-key-enabled` para habilitar o deshabilitar una clave de bucket de S3 para el objeto. 
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html): al utilizar una operación `POST` para cargar un objeto y configurar SSE-KMS, puede utilizar el campo de formulario `x-amz-server-side-encryption-bucket-key-enabled` para habilitar o deshabilitar una clave de bucket de S3 para el objeto.
+ [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html): al cargar objetos grandes mediante la operación de la API `CreateMultipartUpload` y configurar SSE-KMS, puede usar el encabezado de solicitud `x-amz-server-side-encryption-bucket-key-enabled` para habilitar o deshabilitar una clave de bucket de S3 para el objeto.

Para habilitar una clave de bucket de S3 en el nivel de objeto, incluya el encabezado de solicitud `x-amz-server-side-encryption-bucket-key-enabled`. Para obtener más información sobre SSE-KMS y la API de REST, consulte [Uso de la API de REST](specifying-kms-encryption.md#KMSUsingRESTAPI).

## Uso de AWS SDK para Java (PutObject)
<a name="bucket-key-object-sdk"></a>

Puede utilizar el siguiente ejemplo para configurar una clave de bucket de S3 en el nivel de objeto mediante AWS SDK para Java.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();

String bucketName = "{{amzn-s3-demo-bucket1}}";
String keyName = "{{key name for object}}";
String contents = "{{file contents}}";

PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, contents)
    .withBucketKeyEnabled(true);
    
s3client.putObject(putObjectRequest);
```

------

## Uso de la AWS CLI (PutObject)
<a name="bucket-key-object-cli"></a>

Puede utilizar el siguiente ejemplo de la AWS CLI para configurar una clave de bucket de S3 en el nivel de objeto como parte de una solicitud `PutObject`.

```
aws s3api put-object --bucket {{amzn-s3-demo-bucket}} --key {{object key name}} --server-side-encryption aws:kms --bucket-key-enabled --body {{filepath}}
```