1import type * as config from "@distilled.cloud/aws/config-service";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { ConfigRule } from "./ConfigRule.ts";
5
6/** Request for {@link GetComplianceDetailsByConfigRule} — the rule name is injected from the bound rule. */
7export interface GetComplianceDetailsByConfigRuleRequest extends Omit<
8 config.GetComplianceDetailsByConfigRuleRequest,
9 "ConfigRuleName"
10> {}
11
12/**
13 * Runtime binding for `config:GetComplianceDetailsByConfigRule` — read the
14 * per-resource evaluation results (who was evaluated, when, and the
15 * verdict) of the bound {@link ConfigRule}; the rule name is injected
16 * automatically.
17 *
18 * Provide `Config.GetComplianceDetailsByConfigRuleHttp` on the hosting
19 * Lambda Function to satisfy the requirement.
20 * ### Reading Compliance
21 * **Example:** Read a Rule's Evaluation Results
22 * ```typescript
23 * // init — grants config:GetComplianceDetailsByConfigRule
24 * const getComplianceDetails =
25 * yield* AWS.Config.GetComplianceDetailsByConfigRule(rule);
26 *
27 * // runtime
28 * const result = yield* getComplianceDetails({
29 * ComplianceTypes: ["NON_COMPLIANT"],
30 * });
31 * console.log(result.EvaluationResults);
32 * ```
33 *
34 * @binding
35 */
36export interface GetComplianceDetailsByConfigRule extends Binding.Service<
37 GetComplianceDetailsByConfigRule,
38 "AWS.Config.GetComplianceDetailsByConfigRule",
39 (
40 rule: ConfigRule,
41 ) => Effect.Effect<
42 (
43 request?: GetComplianceDetailsByConfigRuleRequest,
44 ) => Effect.Effect<
45 config.GetComplianceDetailsByConfigRuleResponse,
46 config.GetComplianceDetailsByConfigRuleError
47 >
48 >
49> {}
50
51export const GetComplianceDetailsByConfigRule =
52 Binding.Service<GetComplianceDetailsByConfigRule>(
53 "AWS.Config.GetComplianceDetailsByConfigRule",
54 );