1import type * as lf from "@distilled.cloud/aws/lakeformation";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Request for {@link GetDataLakePrincipal}.
7 */
8export interface GetDataLakePrincipalRequest
9 extends lf.GetDataLakePrincipalRequest {}
10
11/**
12 * Runtime binding for `lakeformation:GetDataLakePrincipal`.
13 *
14 * Returns the identity of the calling principal as Lake Formation sees it —
15 * useful for logging/auditing which data-lake principal a function acts as.
16 * Provide the implementation with
17 * `Effect.provide(AWS.LakeFormation.GetDataLakePrincipalHttp)`.
18 * ### Identifying the Caller
19 * **Example:** Read the Calling Data Lake Principal
20 * ```typescript
21 * // init — account-level binding takes no resource
22 * const getDataLakePrincipal = yield* AWS.LakeFormation.GetDataLakePrincipal();
23 *
24 * // runtime
25 * const { Identity } = yield* getDataLakePrincipal();
26 * ```
27 *
28 * @binding
29 */
30export interface GetDataLakePrincipal extends Binding.Service<
31 GetDataLakePrincipal,
32 "AWS.LakeFormation.GetDataLakePrincipal",
33 () => Effect.Effect<
34 (
35 request?: GetDataLakePrincipalRequest,
36 ) => Effect.Effect<
37 lf.GetDataLakePrincipalResponse,
38 lf.GetDataLakePrincipalError
39 >
40 >
41> {}
42
43export const GetDataLakePrincipal = Binding.Service<GetDataLakePrincipal>(
44 "AWS.LakeFormation.GetDataLakePrincipal",
45);