1import type * as redshift from "@distilled.cloud/aws/redshift";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for the `CopyClusterSnapshot` operation (IAM action
7 * `redshift:CopyClusterSnapshot`).
8 *
9 * Copies an automated cluster snapshot to a manual one so it survives the
10 * automated retention window — e.g. an archival job that preserves the
11 * nightly snapshot before a risky migration. Provide the implementation with
12 * `Effect.provide(AWS.Redshift.CopyClusterSnapshotHttp)`.
13 * ### Managing Snapshots
14 * **Example:** Preserve an Automated Snapshot
15 * ```typescript
16 * const copyClusterSnapshot = yield* AWS.Redshift.CopyClusterSnapshot();
17 *
18 * yield* copyClusterSnapshot({
19 * SourceSnapshotIdentifier: nightly.SnapshotIdentifier!,
20 * TargetSnapshotIdentifier: `archive-${runId}`,
21 * });
22 * ```
23 *
24 * @binding
25 */
26export interface CopyClusterSnapshot extends Binding.Service<
27 CopyClusterSnapshot,
28 "AWS.Redshift.CopyClusterSnapshot",
29 () => Effect.Effect<
30 (
31 request: redshift.CopyClusterSnapshotMessage,
32 ) => Effect.Effect<
33 redshift.CopyClusterSnapshotResult,
34 redshift.CopyClusterSnapshotError
35 >
36 >
37> {}
38export const CopyClusterSnapshot = Binding.Service<CopyClusterSnapshot>(
39 "AWS.Redshift.CopyClusterSnapshot",
40);