

# 从 CSE-KMS 迁移到 SSE-KMS
<a name="migrating-csekms-ssekms"></a>

您可以通过以下两种方式指定 CSE-KMS 加密：在工作组查询结果加密配置过程中以及在客户端设置中。有关更多信息，请参阅 [加密在 Amazon S3 中存储的 Athena 查询结果](encrypting-query-results-stored-in-s3.md)。在迁移过程中，务必要审计读写 CSE-KMS 数据的现有工作流，确定配置了 CSE-KMS 的工作组，并找到通过客户端参数设置了 CSE-KMS 的实例。

## 更新工作组查询结果加密设置
<a name="migrating-updating-workgroup-query-results-encryption"></a>

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

**在 Athena 控制台中更新加密设置**

1. 从 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/) 打开 Athena 控制台。

1. 在 Athena 控制台导航窗格中，选择 **Workgroups**（工作组）。

1. 在 **Workgroups**（工作组）页面上，选择要编辑的工作组的按钮。

1. 选择 **Actions**（操作）和 **Edit**（编辑）。

1. 打开**查询结果配置**，然后选择**加密查询结果**。

1. 对于**加密类型**部分，选择 **SSE\_KMS** 加密选项。

1. 在**选择其他 AWS KMS 密钥（高级）**下，输入您的 KMS 密钥。

1. 选择**保存更改**。已更新的工作组显示在 **Workgroups **（工作组）页面上的列表中。

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

运行以下命令，将查询结果加密配置更新为工作组中的 SSE-KMS。

```
aws athena update-work-group \
    --work-group "{{my-workgroup}}" \
    --configuration-updates '{
        "ResultConfigurationUpdates": {
            "EncryptionConfiguration": {
                "EncryptionOption": "SSE_KMS",
                "KmsKey": "{{<my-kms-key>}}"
            }
        }
    }'
```

------

## 更新客户端查询结果加密设置
<a name="migrating-updating-clientside-query-results-encryption"></a>

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

要将客户端查询结果加密设置从 CSE-KMS 更新为 SSE-KMS，请参阅[加密在 Amazon S3 中存储的 Athena 查询结果](encrypting-query-results-stored-in-s3.md)。

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

您只能使用 `start-query-execution` 命令在客户端设置中指定查询结果加密配置。如果您运行此 CLI 命令并覆盖您在工作组中使用 CSE-KMS 指定的查询结果加密配置，请按如下所示，更改命令以使用 `SSE_KMS` 加密查询结果。

```
aws athena start-query-execution \
    --query-string "SELECT * FROM {{<my-table>}};" \
    --query-execution-context "Database={{<my-database>}},Catalog={{<my-catalog>}}" \
    --result-configuration '{
        "EncryptionConfiguration": {
            "EncryptionOption": "SSE_KMS",
            "KmsKey": "{{<my-kms-key>}}"
        }
    }' \
    --work-group "{{<my-workgroup>}}"
```

------

**注意**  
更新工作组或客户端设置后，通过写查询插入的任何新数据都将使用 SSE-KMS 加密，而不是 CSE-KMS 加密。这是因为查询结果加密配置也会应用到新插入的表数据。Athena 查询结果、元数据和清单文件也使用 SSE-KMS 进行加密。
即使混合了 CSE-KMS 加密对象和 SSE-S3/SSE-KMS 对象，Athena 仍然可以读取具有 `has_encrypted_data` 表属性的表。