1import type * as config from "@distilled.cloud/aws/config-service";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for `config:PutEvaluations` — report evaluation results
7 * to AWS Config from inside a custom Config rule's Lambda function, using
8 * the `resultToken` the rule invocation delivered.
9 *
10 * Provide `Config.PutEvaluationsHttp` on the hosting Lambda Function to
11 * satisfy the requirement.
12 * ### Reporting Evaluations (Custom Rules)
13 * **Example:** Report Evaluations from a Custom Rule
14 * ```typescript
15 * // init — grants config:PutEvaluations
16 * const putEvaluations = yield* AWS.Config.PutEvaluations();
17 *
18 * // runtime
19 * const result = yield* putEvaluations({
20 * ResultToken: event.resultToken,
21 * Evaluations: [
22 * {
23 * ComplianceResourceType: "AWS::S3::Bucket",
24 * ComplianceResourceId: "my-bucket",
25 * ComplianceType: "COMPLIANT",
26 * OrderingTimestamp: new Date(),
27 * },
28 * ],
29 * });
30 * console.log(result.FailedEvaluations);
31 * ```
32 *
33 * @binding
34 */
35export interface PutEvaluations extends Binding.Service<
36 PutEvaluations,
37 "AWS.Config.PutEvaluations",
38 () => Effect.Effect<
39 (
40 request: config.PutEvaluationsRequest,
41 ) => Effect.Effect<
42 config.PutEvaluationsResponse,
43 config.PutEvaluationsError
44 >
45 >
46> {}
47
48export const PutEvaluations = Binding.Service<PutEvaluations>(
49 "AWS.Config.PutEvaluations",
50);