

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Migración del cliente de cifrado Amazon S3 (V2 a V3)
<a name="s3-encryption-migration-v2-v3"></a>

**nota**  
Si utiliza la V1 del cliente de cifrado S3, primero debe migrar a la V2 antes de migrar a la V3. Consulte [Migración del cliente de cifrado Amazon S3 (V1 a V2)](s3-encryption-migration-v1-v2.md) para obtener instrucciones sobre cómo migrar de la V1 a la V2.

En este tema se muestra cómo migrar las aplicaciones de la versión 2 (V2) del cliente de cifrado Amazon Simple Storage Service (Amazon S3) a la versión 3 (V3) y cómo garantizar la disponibilidad de las aplicaciones durante todo el proceso de migración. La versión 3 presenta el AES GCM con políticas clave de compromiso y compromiso para mejorar la seguridad y la protección contra la manipulación de las claves de datos.

## Información general sobre la migración
<a name="s3-encryption-migration-v2-v3-overview"></a>

La versión 3 del cliente de cifrado Amazon S3 presenta AES GCM con Key Commitment para mejorar la seguridad. Este nuevo algoritmo de cifrado proporciona protección contra la manipulación de las claves de datos y garantiza la integridad de los datos cifrados. La migración a la versión 3 requiere una planificación cuidadosa para mantener la disponibilidad de las aplicaciones y la accesibilidad de los datos durante todo el proceso.

Esta migración se produce en dos fases:

1. **Actualice los clientes existentes para leer nuevos formatos.** Primero, implementa una versión actualizada del AWS SDK for Ruby en tu aplicación. Esto permitirá a los clientes de cifrado V2 existentes descifrar los objetos escritos por los nuevos clientes V3. Si su aplicación usa varios AWS SDKs, debe actualizar cada SDK por separado.

2. **Migre los clientes de cifrado y descifrado a la versión 3.** Una vez que todos sus clientes de cifrado V2 puedan leer nuevos formatos, puede migrar los clientes de cifrado y descifrado existentes a sus respectivas versiones V3. Esto incluye configurar las políticas de compromiso y actualizar el código para utilizar las nuevas opciones de configuración del cliente.

Si aún no ha migrado de la V1 a la V2, primero debe completar la migración. Consulte [Migración del cliente de cifrado Amazon S3 (V1 a V2)](s3-encryption-migration-v1-v2.md) para obtener instrucciones detalladas sobre la migración de la V1 a la V2.

## Comprensión de las funciones de la V3
<a name="s3-encryption-migration-v2-v3-understanding"></a>

La versión 3 del cliente de cifrado Amazon S3 presenta dos características de seguridad clave: políticas de compromiso y AES GCM con compromiso clave. Comprender estas características es esencial para planificar su estrategia de migración y garantizar la seguridad de sus datos cifrados.

### Políticas de compromiso
<a name="s3-encryption-migration-v2-v3-commitment-policies"></a>

Las políticas de compromiso controlan la forma en que el cliente de cifrado gestiona el compromiso de claves durante las operaciones de cifrado y descifrado. El compromiso clave garantiza que los datos cifrados solo se puedan descifrar con la clave exacta que se utilizó para cifrarlos, lo que los protege contra ciertos tipos de ataques criptográficos.

El cliente de cifrado V3 admite tres opciones de política de compromiso:

 **`FORBID_ENCRYPT_ALLOW_DECRYPT`** 

Esta política cifra los objetos sin compromiso de clave y permite descifrar ambos objetos con o sin compromiso de clave.
+  **Comportamiento de cifrado:** los objetos se cifran sin compromiso de clave y utilizan el mismo conjunto de algoritmos que V2.
+  **Comportamiento de descifrado:** puede descifrar objetos cifrados con o sin compromiso de clave.
+  **Implicaciones de seguridad:** esta política no impone un compromiso clave y puede permitir la manipulación. Los objetos cifrados con esta política no se benefician de las protecciones de seguridad mejoradas que conlleva un compromiso clave. Utilice esta política solo durante la migración cuando necesite mantener la compatibilidad con el comportamiento de cifrado de la versión 2.
+  **Compatibilidad de versiones:** los objetos cifrados con esta política pueden leerse en todas las implementaciones V2 y V3 del cliente de cifrado S3.

 **`REQUIRE_ENCRYPT_ALLOW_DECRYPT`**

Esta política cifra los objetos con compromiso de clave y permite descifrar ambos objetos con o sin compromiso de clave.
+  **Comportamiento de cifrado:** los objetos se cifran con un compromiso de clave mediante el AES GCM con un compromiso de clave.
+  **Comportamiento de descifrado:** puede descifrar objetos cifrados con o sin compromiso de clave, lo que proporciona compatibilidad con versiones anteriores.
+  **Implicaciones de seguridad:** los objetos nuevos se benefician de la protección con compromiso clave, mientras que los objetos existentes sin compromiso clave aún se pueden leer. Esto proporciona un equilibrio entre la seguridad y la compatibilidad con versiones anteriores durante la migración.
+  **Compatibilidad de versiones:** los objetos cifrados con esta política solo los pueden leer las implementaciones V3 y V2 más recientes del cliente de cifrado S3.

 **`REQUIRE_ENCRYPT_REQUIRE_DECRYPT`** 

Esta política cifra los objetos con un compromiso de clave y solo permite descifrar los objetos que se cifraron con un compromiso de clave.
+  **Comportamiento de cifrado:** los objetos se cifran con un compromiso de clave mediante el AES GCM con un compromiso de clave.
+  **Comportamiento de descifrado:** solo se pueden descifrar los objetos que se cifraron con un compromiso de clave. Los intentos de descifrar objetos sin un compromiso de clave fallarán.
+  **Implicaciones de seguridad:** esta política proporciona el más alto nivel de seguridad al imponer un compromiso clave en todas las operaciones. Utilice esta política solo después de que todos los objetos se hayan vuelto a cifrar con la clave y de que todos los clientes se hayan actualizado a la versión 3.
+  **Compatibilidad de versiones:** los objetos cifrados con esta política solo pueden leerse en la versión 3 y las implementaciones más recientes del cliente de cifrado S3 en la versión 2. Esta política también impide leer los objetos cifrados por los clientes V2 o V1.

**nota**  
Cuando planifique la migración, comience por mantener la compatibilidad con versiones anteriores y, `REQUIRE_ENCRYPT_ALLOW_DECRYPT` al mismo tiempo, obtenga las ventajas de seguridad que supone un compromiso clave con los nuevos objetos. Solo muévase a una `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` vez que todos los objetos se hayan vuelto a cifrar y todos los clientes se hayan actualizado a la versión 3.

### AES GCM con un compromiso clave
<a name="s3-encryption-migration-v2-v3-aes-gcm-kc"></a>

El AES GCM con Key Commitment (`ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`) es un nuevo algoritmo de cifrado introducido en la versión 3 que proporciona una mayor seguridad al proteger contra la manipulación de las claves de datos. Entender cómo funciona este algoritmo y cuándo se aplica es importante para planificar la migración.

 **¿En qué `ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY` se diferencia de los algoritmos anteriores** 

Las versiones anteriores del cliente de cifrado S3 utilizaban AES CBC o AES GCM sin el compromiso de cifrar la clave de datos en los archivos de instrucciones. `ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`añade un compromiso criptográfico al proceso de cifrado, que vincula los datos cifrados a una clave específica. Esto evita que un atacante altere la clave de datos cifrada del archivo de instrucciones y provoque que el cliente descifre los datos con una clave incorrecta.

Sin un compromiso clave, es posible que un atacante modifique la clave de datos cifrados de un archivo de instrucciones para convertirla en una clave diferente, lo que podría provocar el acceso no autorizado o la corrupción de los datos. `ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`evita este ataque al garantizar que la clave de datos cifrados solo pueda descifrarse con la clave original que se utilizó durante el cifrado.

 **Compatibilidad de versiones** 

Los objetos cifrados solo se `ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY` pueden descifrar mediante las implementaciones de la versión 3 del cliente de cifrado S3 y determinadas versiones de transición de la versión 2, que incluyen soporte para leer los formatos de la versión 3. Los clientes de la versión 2 que no admiten esta transición no pueden descifrar los archivos de instrucciones cifrados con. `ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`

**aviso**  
Antes de habilitar el cifrado `ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY` (mediante políticas de uso `REQUIRE_ENCRYPT_ALLOW_DECRYPT` o de `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` compromiso), asegúrese de que todos los clientes que necesiten leer los objetos cifrados se hayan actualizado a la versión 3 o a una versión de transición que admita los formatos de la versión 3. Si algún cliente de la versión 2 sin soporte de transición intenta leer los objetos cifrados con ellos`ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`, el descifrado fallará.

Durante la migración, puede utilizar la política de `FORBID_ENCRYPT_ALLOW_DECRYPT` compromiso para seguir cifrando sin embargo y, al `ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY` mismo tiempo, permitir que sus clientes de la versión 3 lean los objetos cifrados con el compromiso de clave. Esto proporciona una ruta de migración segura en la que primero se actualizan todos los lectores y, a continuación, se pasa al cifrado con el compromiso de clave.

## Actualizar los clientes existentes para leer nuevos formatos
<a name="s3-encryption-migration-v2-v3-update-clients"></a>

El cliente de cifrado V3 utiliza algoritmos de cifrado y funciones de compromiso clave que los clientes V2 no admiten de forma predeterminada. El primer paso de la migración consiste en actualizar los clientes de descifrado de la versión 2 a una versión del AWS SDK para Ruby que pueda leer los objetos cifrados de la versión 3. Tras completar este paso, los clientes V2 de tu aplicación podrán descifrar los objetos cifrados por los clientes de cifrado V3.

Para leer los objetos cifrados por los clientes de la versión 3 (aquellos que utilizan políticas `REQUIRE_ENCRYPT_ALLOW_DECRYPT` o se `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` comprometen a utilizarlas), debe utilizar la versión 1.93.0 o posterior de la gema. `aws-sdk-s3` Esta versión incluye soporte para descifrar objetos cifrados con AES GCM con Key Commitment.

 **Instalación desde la línea de comandos** 

Para los proyectos que instalan la `aws-sdk-s3` gema desde la línea de comandos, utilice la opción de versión para comprobar que está instalada la versión mínima de la 1.208.0.

```
gem install aws-sdk-s3 -v '>= 1.208.0'
```

 **Uso de archivos Gemfile** 

Para los proyectos que usan un Gemfile para administrar las dependencias, establece la versión mínima de la gema en 1.208.0. `aws-sdk-s3` Por ejemplo:

```
gem 'aws-sdk-s3', '>= 1.208.0'
```

1. Modifica tu Gemfile para especificar la versión mínima.

1. Ejecuta `bundle update aws-sdk-s3` para actualizar la gema.

1. Para comprobar su versión, ejecute `bundle info aws-sdk-s3`.

**nota**  
Tras actualizar a la última versión, sus clientes de cifrado V2 existentes podrán descifrar los objetos cifrados por los clientes V3. Sin embargo, seguirán cifrando los objetos nuevos mediante los algoritmos de la V2 hasta que los migre a la V3, tal y como se describe en la siguiente sección.

## Migre los clientes de cifrado y descifrado a la V3
<a name="s3-encryption-migration-v2-v3-migrate"></a>

Tras actualizar sus clientes para que lean los nuevos formatos de cifrado, puede actualizar sus aplicaciones a los clientes de cifrado y descifrado de la V3. Los siguientes pasos le muestran cómo migrar correctamente su código de la V2 a la V3.

Antes de actualizar el código para usar el cliente de cifrado V3, asegúrese de haber seguido los pasos anteriores y de utilizar la `aws-sdk-s3` gema en la versión 1.93.0 o posterior.

**nota**  
Al descifrar con AES-GCM, lea todo el objeto hasta el final antes de empezar a utilizar los datos descifrados. Esto se hace para verificar que el objeto no se ha modificado desde que se cifró.

### Configuración de los clientes V3
<a name="s3-encryption-migration-v2-v3-configure"></a>

El cliente de cifrado V3 presenta nuevas opciones de configuración que controlan el comportamiento del compromiso de claves y la compatibilidad con versiones anteriores. Comprender estas opciones es esencial para una migración exitosa.

 **política\_compromiso** 

El `commitment_policy` parámetro controla la forma en que el cliente de cifrado gestiona la asignación de claves durante las operaciones de cifrado y descifrado. Esta es la opción de configuración más importante para los clientes de la versión 3.
+  `:require_encrypt_allow_decrypt`- Cifra los objetos nuevos con un compromiso de clave y permite descifrar objetos con o sin compromiso de clave. Esta es la configuración recomendada para la migración, ya que proporciona una seguridad mejorada para los objetos nuevos y, al mismo tiempo, mantiene la compatibilidad con versiones anteriores de los objetos V2 existentes.
+  `:forbid_encrypt_allow_decrypt`- Cifra los objetos nuevos sin compromiso de clave (mediante algoritmos V2) y permite descifrar objetos con o sin compromiso de clave. Utilice esta configuración solo si necesita mantener el comportamiento de cifrado de la versión 2 durante la migración, por ejemplo, cuando algunos clientes aún no pueden leer los objetos cifrados de la versión 3.
+  `:require_encrypt_require_decrypt`- Cifra los objetos nuevos con un compromiso de clave y solo permite descifrar los objetos que se cifraron con un compromiso de clave. Utilice esta configuración solo después de que todos los objetos se hayan vuelto a cifrar con la clave de confirmación y de que todos los clientes se hayan actualizado a la versión 3.

 **perfil de seguridad** 

El `security_profile` parámetro determina la compatibilidad con la lectura de objetos escritos por versiones anteriores del cliente de cifrado. Este parámetro es esencial para mantener la compatibilidad con versiones anteriores durante la migración.
+  `:v3_and_legacy`- Permite al cliente V3 descifrar objetos cifrados por los clientes de cifrado V1 y V2. Utilice esta configuración durante la migración para asegurarse de que sus clientes V3 puedan leer todos los objetos cifrados existentes.
+  `:v3`- Permite al cliente V3 descifrar los objetos cifrados únicamente por los clientes de cifrado V2. Utilice esta configuración si ya ha migrado todos los objetos V1 al formato V2.
+ Si no se especifica, el cliente solo descifrará los objetos cifrados por los clientes V3. Úselo solo para el desarrollo de nuevas aplicaciones donde no existan objetos heredados.

 **envelope\_location** 

El `envelope_location` parámetro determina dónde se almacenan los metadatos de cifrado (incluida la clave de datos cifrados). Este parámetro afecta a los objetos que AES GCM protege con un compromiso clave.
+  `:metadata`(Predeterminado): almacena los metadatos de cifrado en los encabezados de metadatos del objeto S3. Este es el comportamiento predeterminado y se recomienda para la mayoría de los casos de uso. Cuando se utiliza el almacenamiento de metadatos, no se aplica el AES GCM con compromiso clave.
+  `:instruction_file`- Almacena los metadatos de cifrado en un objeto S3 independiente (archivo de instrucciones) con un sufijo configurable. Cuando se utilizan archivos de instrucciones, el AES GCM con Key Commitment protege la clave de datos cifrados contra la manipulación. Utilice esta configuración si necesita la seguridad adicional que proporciona el compromiso de clave para la propia clave de datos.

Si lo utiliza`:instruction_file`, puede especificar opcionalmente el `instruction_file_suffix` parámetro para personalizar el sufijo utilizado en los objetos del archivo de instrucciones. El sufijo predeterminado es. `.instruction`

 **Cuándo utilizar cada opción de configuración** 

Durante la migración, siga esta estrategia de configuración recomendada:

1.  **Migración inicial:** defina `commitment_policy: :require_encrypt_allow_decrypt` y`security_profile: :v3_and_legacy`. Esto permite a sus clientes de V3 cifrar nuevos objetos con un compromiso de clave y, al mismo tiempo, poder descifrar todos los objetos V1 y V2 existentes.

1.  **Una vez que se hayan actualizado todos los clientes:** continúe utilizando `commitment_policy: :require_encrypt_allow_decrypt` y `security_profile: :v3_and_legacy` hasta que haya vuelto a cifrar todos los objetos que necesiten protección mediante compromiso de clave.

1.  **Aplicación completa de la versión 3:** solo después de que todos los objetos se hayan vuelto a cifrar con la clave de confirmación y ya no sea necesario leer los objetos de las versiones 1/V2, puede cambiar al `security_profile` parámetro `commitment_policy: :require_encrypt_require_decrypt` y eliminarlo (o configurarlo `:v2` si aún existen objetos con la versión V2).

`envelope_location`Pues sigue usando tu método de almacenamiento actual (`:metadata`o`:instruction_file`) a menos que tengas un motivo específico para cambiarlo. Si actualmente utiliza el almacenamiento de metadatos y desea la seguridad adicional de AES GCM con un compromiso clave para la clave de datos, puede cambiarse a uno`:instruction_file`, pero tenga en cuenta que para ello será necesario actualizar todos los clientes que lean estos objetos.

### Migre los clientes de cifrado y descifrado a la versión 3
<a name="s3-encryption-migration-v2-v3-migrate"></a>

Tras actualizar sus clientes para que lean los nuevos formatos de cifrado, puede actualizar sus aplicaciones a los clientes de cifrado y descifrado de la V3. Los siguientes ejemplos muestran cómo migrar correctamente el código de la V2 a la V3.

#### Uso de clientes de cifrado V3
<a name="s3-encryption-migration-v2-v3-using-v3-clients"></a>

 **Antes de la migración (V2)** 

```
require 'aws-sdk-s3'

# Create V2 encryption client with KMS
client = Aws::S3::EncryptionV2::Client.new(
  kms_key_id: kms_key_id,
  key_wrap_schema: :kms_context,
  content_encryption_schema: :aes_gcm_no_padding,
  security_profile: :v2_and_legacy,
  commitment_policy: :forbid_encrypt_allow_decrypt
)

# Encrypt and upload object
client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data')

# Download and decrypt object
resp = client.get_object(bucket: 'my-bucket', key: 'my-object')
decrypted_data = resp.body.read
```

 **Durante la migración (versión 3 con compatibilidad con versiones anteriores)** 

```
require 'aws-sdk-s3'

# Create V3 encryption client with KMS
client = Aws::S3::EncryptionV3::Client.new(
  kms_key_id: kms_key_id,
  key_wrap_schema: :kms_context,
  content_encryption_schema: :aes_gcm_no_padding,
  security_profile: :v3_and_legacy,
  commitment_policy: :require_encrypt_allow_decrypt
)

# Encrypt and upload object
client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data')

# Download and decrypt object
resp = client.get_object(bucket: 'my-bucket', key: 'my-object')
decrypted_data = resp.body.read
```

 **Después de la migración (V3)** 

```
require 'aws-sdk-s3'

# Create V3 encryption client with KMS
client = Aws::S3::EncryptionV3::Client.new(
  kms_key_id: kms_key_id,
  key_wrap_schema: :kms_context,
  content_encryption_schema: :aes_gcm_no_padding,
  security_profile: :v3,
  # Use the commitment policy (REQUIRE_ENCRYPT_REQUIRE_DECRYPT)
  # This encrypts with key commitment and does not decrypt V2 objects
  commitment_policy: :require_encrypt_require_decrypt
)

# Encrypt and upload object
client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data')

# Download and decrypt object
resp = client.get_object(bucket: 'my-bucket', key: 'my-object')
decrypted_data = resp.body.read
```

La diferencia clave en la V3 es la adición del parámetro. `commitment_policy` Al configurarlo, se `:require_encrypt_require_decrypt` garantiza que los objetos nuevos se cifren con un compromiso de clave y que el cliente solo descifre los objetos cifrados con ese compromiso, lo que proporciona una mayor seguridad contra la manipulación de las claves de datos.

La `put_object` llamada en sí misma permanece inalterada. Todas las mejoras de seguridad se configuran a nivel de cliente.

### Ejemplos adicionales
<a name="s3-encryption-migration-v2-v3-additional-examples"></a>

En esta sección se proporcionan ejemplos adicionales de escenarios de migración específicos y opciones de configuración que pueden resultar útiles durante la migración de la versión 2 a la versión 3.

#### Archivo de instrucciones versus almacenamiento de metadatos
<a name="s3-encryption-migration-v2-v3-example-storage"></a>

El cliente de cifrado de S3 puede almacenar los metadatos de cifrado (incluida la clave de datos cifrados) en dos ubicaciones diferentes: en los encabezados de metadatos del objeto S3 o en un archivo de instrucciones independiente. La elección del método de almacenamiento afecta a los objetos que se benefician del AES GCM con la protección Key Commitment.

 **Almacenamiento de metadatos (predeterminado)** 

De forma predeterminada, el cliente de cifrado almacena los metadatos de cifrado en los encabezados de metadatos del objeto S3. Este es el enfoque recomendado para la mayoría de los casos de uso, ya que conserva los metadatos de cifrado con el objeto y no requiere la administración de objetos separados del archivo de instrucciones.

```
require 'aws-sdk-s3'

# Create V3 encryption client with metadata storage (default)
client = Aws::S3::EncryptionV3::Client.new(
  kms_key_id: kms_key_id,
  key_wrap_schema: :kms_context,
  content_encryption_schema: :aes_gcm_no_padding,
  security_profile: :v3_and_legacy,
  commitment_policy: :require_encrypt_allow_decrypt,
  envelope_location: :metadata # Explicitly set to metadata (this is the default)
)

# Encrypt and upload object
# Encryption metadata is stored in the object's metadata headers
client.put_object(bucket: 'my-bucket', key: 'my-object',body: 'secret data')
```

Cuando se utiliza el almacenamiento de metadatos, el AES GCM con clave de compromiso no se aplica a la clave de datos cifrados. Sin embargo, el cifrado del contenido sigue beneficiándose del compromiso de clave cuando se utiliza `commitment_policy: :require_encrypt_allow_decrypt` o`:require_encrypt_require_decrypt`.

 **Almacenamiento de archivos de instrucciones** 

Como alternativa, puede configurar el cliente de cifrado para almacenar los metadatos de cifrado en un objeto S3 independiente denominado archivo de instrucciones. Al utilizar los archivos de instrucciones con la versión V3, la clave de datos cifrada está protegida por AES GCM con el compromiso de clave, lo que proporciona una seguridad adicional contra la manipulación de las claves de datos.

```
require 'aws-sdk-s3'

# Create V3 encryption client with instruction file storage
client = Aws::S3::EncryptionV3::Client.new(
  kms_key_id: kms_key_id,
  key_wrap_schema: :kms_context,
  content_encryption_schema: :aes_gcm_no_padding,
  security_profile: :v3_and_legacy,
  commitment_policy: :require_encrypt_allow_decrypt,
  envelope_location: :instruction_file, # Store metadata in separate instruction file
  instruction_file_suffix: '.instruction' # Optional: customize the suffix (default is '.instruction')
)

# Encrypt and upload object
# Encryption metadata is stored in a separate object: 'my-object.instruction'
client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data')

# When retrieving the object, the client automatically reads the instruction file
resp = client.get_object(bucket: 'my-bucket', key: 'my-object')
decrypted_data = resp.body.read
```

Cuando se utiliza`envelope_location: :instruction_file`, el cliente de cifrado crea dos objetos S3:

1. El objeto de datos cifrado (por ejemplo,`my-object`)

1. El archivo de instrucciones que contiene los metadatos de cifrado (por ejemplo,`my-object.instruction`)

El `instruction_file_suffix` parámetro permite personalizar el sufijo utilizado en los archivos de instrucciones. El valor predeterminado es `.instruction`.

 **Cuándo usar cada método de almacenamiento** 
+  **Utilice el almacenamiento de metadatos** en la mayoría de los escenarios. Simplifica la administración de objetos, ya que los metadatos de cifrado viajan con el objeto.
+  **Utilice el almacenamiento de archivos de instrucciones** cuando el tamaño de los metadatos del objeto sea un problema o cuando necesite separar los metadatos de cifrado del objeto cifrado. Tenga en cuenta que el uso de los archivos de instrucciones requiere administrar dos objetos S3 (el objeto cifrado y su archivo de instrucciones) en lugar de uno.

**aviso**  
Si cambia del almacenamiento de metadatos al almacenamiento de archivos de instrucciones (o viceversa), los clientes configurados con el nuevo método de almacenamiento no podrán leer los objetos existentes cifrados con el método de almacenamiento anterior. Planifique cuidadosamente el método de almacenamiento y mantenga la coherencia en toda la aplicación.