1import type * as fsx from "@distilled.cloud/aws/fsx";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for the `CopyBackup` operation (IAM actions
7 * `fsx:CopyBackup` + `fsx:TagResource` on `*` — both the source and the new
8 * backup's ARNs are unknowable at deploy time).
9 *
10 * Copies an FSx backup within a region or from another region — the
11 * cross-region disaster-recovery half of a runtime backup rotation built
12 * with {@link CreateBackup}. A missing source backup surfaces the typed
13 * `BackupNotFound`. Provide the implementation with
14 * `Effect.provide(AWS.FSx.CopyBackupHttp)`.
15 * ### Managing Backups at Runtime
16 * **Example:** Copy a backup from another region for DR
17 * ```typescript
18 * const copyBackup = yield* AWS.FSx.CopyBackup();
19 *
20 * const copy = yield* copyBackup({
21 * SourceBackupId: backup.BackupId!,
22 * SourceRegion: "us-east-1",
23 * });
24 * ```
25 *
26 * @binding
27 */
28export interface CopyBackup extends Binding.Service<
29 CopyBackup,
30 "AWS.FSx.CopyBackup",
31 () => Effect.Effect<
32 (
33 request: fsx.CopyBackupRequest,
34 ) => Effect.Effect<fsx.CopyBackupResponse, fsx.CopyBackupError>
35 >
36> {}
37export const CopyBackup = Binding.Service<CopyBackup>("AWS.FSx.CopyBackup");