import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; import type { ScheduleKeyDeletionRequest, ScheduleKeyDeletionResponse } from "../models/models_0"; /** * @public */ export type { __MetadataBearer }; /** * @public * * The input for {@link ScheduleKeyDeletionCommand}. */ export interface ScheduleKeyDeletionCommandInput extends ScheduleKeyDeletionRequest { } /** * @public * * The output of {@link ScheduleKeyDeletionCommand}. */ export interface ScheduleKeyDeletionCommandOutput extends ScheduleKeyDeletionResponse, __MetadataBearer { } declare const ScheduleKeyDeletionCommand_base: { new (input: ScheduleKeyDeletionCommandInput): import("@smithy/core/client").CommandImpl; new (input: ScheduleKeyDeletionCommandInput): import("@smithy/core/client").CommandImpl; getEndpointParameterInstructions(): import("@smithy/types").EndpointParameterInstructions; }; /** *

Schedules the deletion of a KMS key. By default, KMS applies a waiting period of 30 * days, but you can specify a waiting period of 7-30 days. When this operation is successful, * the key state of the KMS key changes to PendingDeletion and the key can't be used * in any cryptographic operations. It remains in this state for the duration of the waiting * period. Before the waiting period ends, you can use CancelKeyDeletion to * cancel the deletion of the KMS key. After the waiting period ends, KMS deletes the KMS key, * its key material, and all KMS data associated with it, including all aliases that refer to * it.

* *

Deleting a KMS key is a destructive and potentially dangerous operation. When a KMS key * is deleted, all data that was encrypted under the KMS key is unrecoverable. (The only * exception is a multi-Region replica key, or an asymmetric or HMAC KMS key with * imported key material.) To prevent the use of a KMS key without deleting it, use * DisableKey.

*
*

You can schedule the deletion of a multi-Region primary key and its replica keys at any * time. However, KMS will not delete a multi-Region primary key with existing replica keys. If * you schedule the deletion of a primary key with replicas, its key state changes to * PendingReplicaDeletion and it cannot be replicated or used in cryptographic * operations. This status can continue indefinitely. When the last of its replicas keys is * deleted (not just scheduled), the key state of the primary key changes to * PendingDeletion and its waiting period (PendingWindowInDays) * begins. For details, see Deleting multi-Region keys in * the Key Management Service Developer Guide.

*

When KMS deletes a KMS key from an CloudHSM * key store, it makes a best effort to delete the associated key material from the * associated CloudHSM cluster. However, you might need to manually delete the orphaned key * material from the cluster and its backups. Deleting a KMS key from an external key * store has no effect on the associated external key. However, for both types of * custom key stores, deleting a KMS key is destructive and irreversible. You cannot decrypt * ciphertext encrypted under the KMS key by using only its associated external key or CloudHSM key. * Also, you cannot recreate a KMS key in an external key store by creating a new KMS key with * the same key material.

*

For more information about scheduling a KMS key for deletion, see Deleting KMS keys in the * Key Management Service Developer Guide.

*

The KMS key that you use for this operation must be in a compatible key state. For * details, see Key states of KMS keys in the Key Management Service Developer Guide.

*

* Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account.

*

* Required permissions: kms:ScheduleKeyDeletion (key * policy)

*

* Related operations *

* *

* Eventual consistency: The KMS API follows an eventual consistency model. * For more information, see KMS eventual consistency.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript * import { KMSClient, ScheduleKeyDeletionCommand } from "@aws-sdk/client-kms"; // ES Modules import * // const { KMSClient, ScheduleKeyDeletionCommand } = require("@aws-sdk/client-kms"); // CommonJS import * // import type { KMSClientConfig } from "@aws-sdk/client-kms"; * const config = {}; // type is KMSClientConfig * const client = new KMSClient(config); * const input = { // ScheduleKeyDeletionRequest * KeyId: "STRING_VALUE", // required * PendingWindowInDays: Number("int"), * }; * const command = new ScheduleKeyDeletionCommand(input); * const response = await client.send(command); * // { // ScheduleKeyDeletionResponse * // KeyId: "STRING_VALUE", * // DeletionDate: new Date("TIMESTAMP"), * // KeyState: "Creating" || "Enabled" || "Disabled" || "PendingDeletion" || "PendingImport" || "PendingReplicaDeletion" || "Unavailable" || "Updating", * // PendingWindowInDays: Number("int"), * // }; * * ``` * * @param ScheduleKeyDeletionCommandInput - {@link ScheduleKeyDeletionCommandInput} * @returns {@link ScheduleKeyDeletionCommandOutput} * @see {@link ScheduleKeyDeletionCommandInput} for command's `input` shape. * @see {@link ScheduleKeyDeletionCommandOutput} for command's `response` shape. * @see {@link KMSClientResolvedConfig | config} for KMSClient's `config` shape. * * @throws {@link DependencyTimeoutException} (server fault) *

The system timed out while trying to fulfill the request. You can retry the * request.

* * @throws {@link InvalidArnException} (client fault) *

The request was rejected because a specified ARN, or an ARN in a key policy, is not * valid.

* * @throws {@link KMSInternalException} (server fault) *

The request was rejected because an internal exception occurred. The request can be * retried.

* * @throws {@link KMSInvalidStateException} (client fault) *

The request was rejected because the state of the specified resource is not valid for this * request.

*

This exceptions means one of the following:

* * * @throws {@link NotFoundException} (client fault) *

The request was rejected because the specified entity or resource could not be * found.

* * @throws {@link KMSServiceException} *

Base exception class for all service exceptions from KMS service.

* * * @public */ export declare class ScheduleKeyDeletionCommand extends ScheduleKeyDeletionCommand_base { /** @internal type navigation helper, not in runtime. */ protected static __types: { api: { input: ScheduleKeyDeletionRequest; output: ScheduleKeyDeletionResponse; }; sdk: { input: ScheduleKeyDeletionCommandInput; output: ScheduleKeyDeletionCommandOutput; }; }; }