import type * as autoscaling from "@distilled.cloud/aws/auto-scaling"; import type * as Effect from "effect/Effect"; import * as Binding from "../../Binding.ts"; import type { AutoScalingGroup } from "./AutoScalingGroup.ts"; /** * `ExecutePolicy` request with `AutoScalingGroupName` injected from the bound * {@link AutoScalingGroup}. `PolicyName` accepts either the policy name or its * ARN (e.g. `policy.policyArn` from a {@link ScalingPolicy}). */ export interface ExecutePolicyRequest extends Omit { } /** * Runtime binding for the `ExecutePolicy` operation (IAM action * `autoscaling:ExecutePolicy` scoped to the group ARN). * * Executes a step or simple scaling policy on the bound group — useful for * testing a policy's design or driving scaling from application logic. * Target-tracking policies cannot be executed manually. Provide the * implementation with `Effect.provide(AWS.AutoScaling.ExecutePolicyHttp)`. * ### Manual Scaling * **Example:** Execute a step scaling policy * ```typescript * // init — bind the operation to the group * const executePolicy = yield* AWS.AutoScaling.ExecutePolicy(group); * * // runtime — trigger the policy with a synthetic metric breach * yield* executePolicy({ * PolicyName: "scale-out-on-cpu", * MetricValue: 85, * BreachThreshold: 80, * }); * ``` * * @binding */ export interface ExecutePolicy extends Binding.Service Effect.Effect<(request: ExecutePolicyRequest) => Effect.Effect>> { } export declare const ExecutePolicy: ExecutePolicy; //# sourceMappingURL=ExecutePolicy.d.ts.map