1import type * as rds from "@distilled.cloud/aws/rds";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for the `CopyDBSnapshot` operation (IAM actions
7 * `rds:CopyDBSnapshot` +
8 * `rds:AddTagsToResource`).
9 *
10 * Copies a DB instance snapshot (e.g. to archive it under a new
11 * identifier or re-encrypt with a different KMS key). Provide the implementation with
12 * `Effect.provide(AWS.RDS.CopyDBSnapshotHttp)`.
13 * ### Managing Instance Snapshots
14 * **Example:** Archive an Instance Snapshot
15 * ```typescript
16 * const copyDBSnapshot = yield* AWS.RDS.CopyDBSnapshot();
17 *
18 * yield* copyDBSnapshot({
19 * SourceDBSnapshotIdentifier: snapshotId,
20 * TargetDBSnapshotIdentifier: `archive-${snapshotId}`,
21 * });
22 * ```
23 *
24 * @binding
25 */
26export interface CopyDBSnapshot extends Binding.Service<
27 CopyDBSnapshot,
28 "AWS.RDS.CopyDBSnapshot",
29 () => Effect.Effect<
30 (
31 request: rds.CopyDBSnapshotMessage,
32 ) => Effect.Effect<rds.CopyDBSnapshotResult, rds.CopyDBSnapshotError>
33 >
34> {}
35export const CopyDBSnapshot = Binding.Service<CopyDBSnapshot>(
36 "AWS.RDS.CopyDBSnapshot",
37);