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:AddInstanceGroups` — adds task instance groups to the bound cluster (instance-group clusters only). The cluster id is injected as `JobFlowId`.
8 * ### Scaling the Cluster
9 * **Example:** Add a Task Group
10 * ```typescript
11 * const addGroups = yield* AWS.EMR.AddInstanceGroups(cluster);
12 *
13 * const { InstanceGroupIds } = yield* addGroups({
14 * InstanceGroups: [{
15 * InstanceRole: "TASK",
16 * InstanceType: "m5.xlarge",
17 * InstanceCount: 2,
18 * }],
19 * });
20 * ```
21 *
22 * @binding
23 */
24export interface AddInstanceGroups extends Binding.Service<
25 AddInstanceGroups,
26 "AWS.EMR.AddInstanceGroups",
27 <C extends Cluster>(
28 cluster: C,
29 ) => Effect.Effect<
30 (
31 request: Omit<SVC.AddInstanceGroupsInput, "JobFlowId">,
32 ) => Effect.Effect<SVC.AddInstanceGroupsOutput, SVC.AddInstanceGroupsError>
33 >
34> {}
35export const AddInstanceGroups = Binding.Service<AddInstanceGroups>(
36 "AWS.EMR.AddInstanceGroups",
37);