1import type * as WAFV2 from "@distilled.cloud/aws/wafv2";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { WebACL } from "./WebACL.ts";
5
6export interface GetSampledRequestsRequest extends Omit<
7 WAFV2.GetSampledRequestsRequest,
8 "WebAclArn" | "Scope"
9> {}
10
11/**
12 * Runtime binding for `wafv2:GetSampledRequests` — read a sample of the web
13 * requests that the bound {@link WebACL} evaluated for a given rule and
14 * time window; the web ACL ARN and scope are injected automatically.
15 *
16 * Provide `WAFv2.GetSampledRequestsHttp` on the hosting Lambda Function to
17 * satisfy the requirement.
18 * ### Inspecting Traffic
19 * **Example:** Read Sampled Requests for a Rule
20 * ```typescript
21 * // init — grants wafv2:GetSampledRequests on the web ACL
22 * const getSampledRequests = yield* AWS.WAFv2.GetSampledRequests(acl);
23 *
24 * // runtime
25 * const now = yield* Effect.sync(() => new Date());
26 * const { SampledRequests } = yield* getSampledRequests({
27 * RuleMetricName: "rate-limit",
28 * TimeWindow: {
29 * StartTime: new Date(now.getTime() - 60 * 60 * 1000),
30 * EndTime: now,
31 * },
32 * MaxItems: 100,
33 * });
34 * ```
35 *
36 * @binding
37 */
38export interface GetSampledRequests extends Binding.Service<
39 GetSampledRequests,
40 "AWS.WAFv2.GetSampledRequests",
41 (
42 webAcl: WebACL,
43 ) => Effect.Effect<
44 (
45 request: GetSampledRequestsRequest,
46 ) => Effect.Effect<
47 WAFV2.GetSampledRequestsResponse,
48 WAFV2.GetSampledRequestsError
49 >
50 >
51> {}
52
53export const GetSampledRequests = Binding.Service<GetSampledRequests>(
54 "AWS.WAFv2.GetSampledRequests",
55);