

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Convertir les données du CSE-KMS tableau en SSE-KMS
<a name="convert-csekms-table-ssekms"></a>

Si vos flux de travail utilisent CSE-KMS actuellement le chiffrement des données des tables, SSE-KMS passez aux étapes suivantes.

## Prérequis
<a name="convert-csekms-table-ssekms-preq"></a>

Si vous continuez à écrire des données à l'aide d'un CSE-KMS groupe de travail ou de paramètres côté client, suivez les étapes décrites pour les mettre [Migrer de CSE-KMS vers SSE-KMS](migrating-csekms-ssekms.md) à jour en. SSE-KMS Cela empêche l'ajout de nouvelles données CSE-KMS chiffrées pendant le processus de migration à partir de tout autre flux de travail susceptible d'écrire dans les tables.

## Migrations des données
<a name="convert-csekms-table-ssekms-migrat"></a>

1. Vérifiez si la propriété `has_encrypted_data` de la table est définie sur `true`. Cette propriété indique que la table peut contenir des données CSE-KMS cryptées. Cependant, il est important de noter que cette propriété peut être présente même sur des tables dépourvues de données réellement CSE-KMS cryptées.

------
#### [ Console ]

   1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

   1. Choisissez **Lancer l’éditeur de requête**.

   1. Dans la partie gauche de l’éditeur, dans **Base de données**, choisissez la base de données à interroger.

   1. Dans l’éditeur de requête, exécutez la requête suivante pour afficher la valeur définie pour la propriété `has_encrypted_data table`.

      ```
      SHOW TBLPROPERTIES {{<table_name>}}('has_encrypted_data');
      ```

------
#### [ CLI ]

   Lancez la requête Athena qui affiche la valeur de la propriété `has_encrypted_data` de la table comme illustré dans l’exemple suivant.

   ```
   aws athena start-query-execution \
       --query-string "SHOW TBLPROPERTIES {{<table-name>}}('has_encrypted_data');" \
       --work-group "{{<my-workgroup>}}"
   ```

   Récupérez les résultats de la requête pour vérifier la valeur de la propriété `has_encrypted_data` de la table comme illustré dans l’exemple suivant.

   ```
   aws athena get-query-results --query-execution-id {{<query-execution-id-from-previous-step>}}
   ```

------

1. Pour chaque objet CSE-KMS chiffré du tableau.

   1. Téléchargez l’objet depuis S3 à l’aide du client de chiffrement S3 et déchiffrez-le. Voici un exemple avec le SDK AWS Java V2.

      **Importations**

      ```
      import software.amazon.awssdk.core.ResponseInputStream;
      import software.amazon.awssdk.services.s3.model.GetObjectRequest;
      import software.amazon.awssdk.services.s3.model.GetObjectResponse;
      import software.amazon.encryption.s3.S3EncryptionClient;
      import software.amazon.encryption.s3.materials.Keyring;
      import software.amazon.encryption.s3.materials.KmsDiscoveryKeyring;
      ```

      Code

      ```
      final Keyring kmsDiscoveryKeyRing = KmsDiscoveryKeyring.builder()
              .enableLegacyWrappingAlgorithms(true)
              .build();
      final S3EncryptionClient s3EncryptionClient = S3EncryptionClient.builder()
              .enableLegacyUnauthenticatedModes(true)
              .keyring(kmsDiscoveryKeyRing)
              .build();
      
      GetObjectRequest getObjectRequest = GetObjectRequest.builder()
              .bucket("{{amzn-s3-demo-bucket}}")
              .key("{{<my-key>}}")
              .build();
      
      ResponseInputStream<GetObjectResponse> s3Object = s3EncryptionClient.getObject(getObjectRequest);
      ```

   1. Téléchargez l'objet sur S3 avec le même nom et le même SSE-KMS cryptage. Voici un exemple avec le SDK AWS Java V2.

      **Importations**

      ```
      import software.amazon.awssdk.core.ResponseInputStream;
      import software.amazon.awssdk.core.sync.RequestBody;
      import software.amazon.awssdk.services.s3.S3Client;
      import software.amazon.awssdk.services.s3.model.PutObjectRequest;
      import software.amazon.awssdk.services.s3.model.ServerSideEncryption;
      ```

      **Code**

      ```
      final S3Client s3Client = S3Client.builder()
              .build();
                  
      PutObjectRequest putObjectRequest = PutObjectRequest.builder()
              .bucket("{{amzn-s3-demo-bucket}}")
              .key("{{<my-key>}}")
              .serverSideEncryption(ServerSideEncryption.AWS_KMS)
              .ssekmsKeyId("{{<my-kms-key>}}")
              .build();
      
      s3Client.putObject(putObjectRequest, RequestBody.fromBytes(s3Object.readAllBytes()));
      ```

## Opérations post-migration
<a name="convert-csekms-table-ssekms-post-migrat"></a>

Après avoir rechiffré avec succès tous les CSE-KMS fichiers de la table, effectuez les étapes suivantes. 

1. Supprimez la propriété `has_encrypted_data` du tableau.

------
#### [ Console ]

   1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

   1. Choisissez **Lancer l’éditeur de requête**.

   1. Dans la partie gauche de l’éditeur, dans **Base de données**, choisissez la base de données à interroger.

   1. Exécutez la requête suivante pour votre table dans l’éditeur de requête.

      ```
      ALTER TABLE {{<database-name>}}.{{<table-name>}} UNSET TBLPROPERTIES ('has_encrypted_data')
      ```

------
#### [ CLI ]

   Exécutez la commande suivante pour supprimer la propriété `has_encrypted_data` de votre table.

   ```
   aws athena start-query-execution \
       --query-string "ALTER TABLE {{<database-name>}}.{{<table-name>}} UNSET TBLPROPERTIES ('has_encrypted_data');" \
       --work-group "{{<my-workgroup>}}"
   ```

------

1. Mettez à jour vos flux de travail pour utiliser un client S3 de base au lieu d'un client de chiffrement S3, puis spécifiez le SSE-KMS chiffrement pour les écritures de données. 