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:PutResourceConfig` — record the
7 * configuration item of a custom (third-party) resource type with AWS
8 * Config, e.g. `MyCompany::Service::Widget`.
9 *
10 * Provide `Config.PutResourceConfigHttp` on the hosting Lambda Function to
11 * satisfy the requirement.
12 * ### Recording Custom Resources
13 * **Example:** Record a Custom Resource
14 * ```typescript
15 * // init — grants config:PutResourceConfig
16 * const putResourceConfig = yield* AWS.Config.PutResourceConfig();
17 *
18 * // runtime
19 * yield* putResourceConfig({
20 * ResourceType: "MyCompany::Service::Widget",
21 * SchemaVersionId: "1.0",
22 * ResourceId: "widget-1",
23 * Configuration: JSON.stringify({ color: "teal" }),
24 * });
25 * ```
26 *
27 * @binding
28 */
29export interface PutResourceConfig extends Binding.Service<
30 PutResourceConfig,
31 "AWS.Config.PutResourceConfig",
32 () => Effect.Effect<
33 (
34 request: config.PutResourceConfigRequest,
35 ) => Effect.Effect<
36 config.PutResourceConfigResponse,
37 config.PutResourceConfigError
38 >
39 >
40> {}
41
42export const PutResourceConfig = Binding.Service<PutResourceConfig>(
43 "AWS.Config.PutResourceConfig",
44);