1import type * as s3control from "@distilled.cloud/aws/s3-control";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { MultiRegionAccessPoint } from "./MultiRegionAccessPoint.ts";
5
6/**
7 * Runtime binding for `s3:SubmitMultiRegionAccessPointRoutes`.
8 *
9 * Shifts traffic between the bound {@link MultiRegionAccessPoint}'s regions
10 * by dialing each region's `TrafficDialPercentage` (0 = passive, 100 =
11 * active) — the act half of an automated failover controller, e.g. a
12 * health-check Lambda that dials a degraded region to 0. Requests are
13 * routed to the `us-west-2` MRAP control plane. Provide the implementation
14 * with `Effect.provide(AWS.S3Control.SubmitMultiRegionAccessPointRoutesHttp)`.
15 * ### Controlling Multi-Region Failover
16 * **Example:** Fail Traffic Away from a Region
17 * ```typescript
18 * // init — bind the operation to the Multi-Region Access Point
19 * const submitRoutes =
20 * yield* AWS.S3Control.SubmitMultiRegionAccessPointRoutes(mrap);
21 *
22 * // runtime
23 * yield* submitRoutes({
24 * RouteUpdates: [
25 * { Region: "us-west-2", TrafficDialPercentage: 0 },
26 * { Region: "eu-west-1", TrafficDialPercentage: 100 },
27 * ],
28 * });
29 * ```
30 *
31 * @binding
32 */
33export interface SubmitMultiRegionAccessPointRoutes extends Binding.Service<
34 SubmitMultiRegionAccessPointRoutes,
35 "AWS.S3Control.SubmitMultiRegionAccessPointRoutes",
36 (
37 mrap: MultiRegionAccessPoint,
38 ) => Effect.Effect<
39 (
40 request: Omit<
41 s3control.SubmitMultiRegionAccessPointRoutesRequest,
42 "AccountId" | "Mrap"
43 >,
44 ) => Effect.Effect<
45 s3control.SubmitMultiRegionAccessPointRoutesResult,
46 s3control.SubmitMultiRegionAccessPointRoutesError
47 >
48 >
49> {}
50export const SubmitMultiRegionAccessPointRoutes =
51 Binding.Service<SubmitMultiRegionAccessPointRoutes>(
52 "AWS.S3Control.SubmitMultiRegionAccessPointRoutes",
53 );