1import type * as docdbelastic from "@distilled.cloud/aws/docdb-elastic";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for the `CopyClusterSnapshot` operation (IAM actions
7 * `docdb-elastic:CopyClusterSnapshot` + `docdb-elastic:TagResource`).
8 *
9 * Copies an elastic-cluster snapshot — e.g. re-encrypting under a different
10 * KMS key or fanning a nightly backup out under a retention-tagged name.
11 * Provide the implementation with
12 * `Effect.provide(AWS.DocDBElastic.CopyClusterSnapshotHttp)`.
13 * ### Managing Snapshots
14 * **Example:** Copy a Snapshot Under a New Name
15 * ```typescript
16 * const copySnapshot = yield* DocDBElastic.CopyClusterSnapshot();
17 *
18 * const result = yield* copySnapshot({
19 * snapshotArn,
20 * targetSnapshotName: "weekly-archive",
21 * copyTags: true,
22 * });
23 * // result.snapshot.snapshotName → "weekly-archive"
24 * ```
25 *
26 * @binding
27 */
28export interface CopyClusterSnapshot extends Binding.Service<
29 CopyClusterSnapshot,
30 "AWS.DocDBElastic.CopyClusterSnapshot",
31 () => Effect.Effect<
32 (
33 request: docdbelastic.CopyClusterSnapshotInput,
34 ) => Effect.Effect<
35 docdbelastic.CopyClusterSnapshotOutput,
36 docdbelastic.CopyClusterSnapshotError
37 >
38 >
39> {}
40export const CopyClusterSnapshot = Binding.Service<CopyClusterSnapshot>(
41 "AWS.DocDBElastic.CopyClusterSnapshot",
42);