

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 更新别名
<a name="alias-update"></a>

由于别名是独立的资源，因此您可以更改与别名关联的 KMS 密钥。例如，如果`test-key`别名与一个 KMS 密钥关联，则可以使用该[UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html)操作将其与其他 KMS 密钥关联。这是[手动轮换 KMS 密钥](rotate-keys.md)而不更改其密钥材料的几种方法之一。您还可以更新 KMS 密钥，以使将一个 KMS 密钥用于新资源的应用程序现在使用不同的 KMS 密钥。

您无法在 AWS KMS 控制台中更新别名。另外，您不能使用 `UpdateAlias`（或任何其他操作）更改别名名称。要更改别名名称，请删除当前别名，然后为 KMS 密钥创建新的别名。

更新别名时，当前 KMS 密钥和新 KMS 密钥必须为相同类型（均为对称、非对称或 HMAC）。它们还必须拥有相同的密钥用法（`ENCRYPT_DECRYPT`、`SIGN_VERIFY` 或 GENERATE\$1VERIFY\$1MAC）。此限制可防止使用别名的代码中出现加密错误。

以下示例首先使用[ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)操作来显示`test-key`别名当前与 KMS 密钥相关联`1234abcd-12ab-34cd-56ef-1234567890ab`。

```
$ aws kms list-aliases --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
{
    "Aliases": [
        {
            "AliasName": "alias/test-key",
            "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key",
            "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1593622000.191,
            "LastUpdatedDate": 1593622000.191
        }
    ]
}
```

接下来，它使用 `UpdateAlias` 操作将与 `test-key` 别名关联的 KMS 密钥更改为 KMS 密钥 `0987dcba-09fe-87dc-65ba-ab0987654321`。您不需要指定当前关联的 KMS 密钥，只需指定新的（“目标”）KMS 密钥。别名名称区分大小写。

```
$ aws kms update-alias --alias-name 'alias/test-key' --target-key-id 0987dcba-09fe-87dc-65ba-ab0987654321
```

要验证别名现在是否已与目标 KMS 密钥关联，请再次使用 `ListAliases` 操作。此 AWS CLI 命令使用`--query`参数仅获取`test-key`别名。`TargetKeyId` 和 `LastUpdatedDate` 字段将更新。

```
$ aws kms list-aliases --query 'Aliases[?AliasName==`alias/test-key`]'
[
    {
        "AliasName": "alias/test-key",
        "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key",
        "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321",
        "CreationDate": 1593622000.191,
        "LastUpdatedDate": 1604958290.154
    }
]
```