1import type * as SVC from "@distilled.cloud/aws/emr";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Cluster } from "./Cluster.ts";
5
6/**
7 * Runtime binding for `elasticmapreduce:ModifyInstanceGroups` — resizes or reconfigures the bound cluster's instance groups (target counts, EC2 configurations, shrink policies).
8 * ### Scaling the Cluster
9 * **Example:** Resize the Core Group
10 * ```typescript
11 * const modifyGroups = yield* AWS.EMR.ModifyInstanceGroups(cluster);
12 *
13 * yield* modifyGroups({
14 * InstanceGroups: [{ InstanceGroupId: coreGroupId, InstanceCount: 3 }],
15 * });
16 * ```
17 *
18 * @binding
19 */
20export interface ModifyInstanceGroups extends Binding.Service<
21 ModifyInstanceGroups,
22 "AWS.EMR.ModifyInstanceGroups",
23 <C extends Cluster>(
24 cluster: C,
25 ) => Effect.Effect<
26 (
27 request: Omit<SVC.ModifyInstanceGroupsInput, "ClusterId">,
28 ) => Effect.Effect<
29 SVC.ModifyInstanceGroupsResponse,
30 SVC.ModifyInstanceGroupsError
31 >
32 >
33> {}
34export const ModifyInstanceGroups = Binding.Service<ModifyInstanceGroups>(
35 "AWS.EMR.ModifyInstanceGroups",
36);