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 GetTemporaryGlueTableCredentials}.
7 */
8export interface GetTemporaryGlueTableCredentialsRequest
9 extends lf.GetTemporaryGlueTableCredentialsRequest {}
10
11/**
12 * Runtime binding for `lakeformation:GetDataAccess` (table scope).
13 *
14 * Vends temporary S3 credentials scoped down to the storage of one Glue
15 * table, enforcing the caller's Lake Formation grants — the credential
16 * vending API used by query engines. The returned `SecretAccessKey` and
17 * `SessionToken` are `Redacted`. Provide the implementation with
18 * `Effect.provide(AWS.LakeFormation.GetTemporaryGlueTableCredentialsHttp)`.
19 * ### Vending Data Access Credentials
20 * **Example:** Vend Table-Scoped S3 Credentials
21 * ```typescript
22 * // init — account-level binding takes no resource
23 * const getTableCredentials =
24 * yield* AWS.LakeFormation.GetTemporaryGlueTableCredentials();
25 *
26 * // runtime
27 * const credentials = yield* getTableCredentials({
28 * TableArn: table.tableArn,
29 * Permissions: ["SELECT"],
30 * SupportedPermissionTypes: ["COLUMN_PERMISSION"],
31 * });
32 * const secret = Redacted.value(credentials.SecretAccessKey!);
33 * ```
34 *
35 * @binding
36 */
37export interface GetTemporaryGlueTableCredentials extends Binding.Service<
38 GetTemporaryGlueTableCredentials,
39 "AWS.LakeFormation.GetTemporaryGlueTableCredentials",
40 () => Effect.Effect<
41 (
42 request: GetTemporaryGlueTableCredentialsRequest,
43 ) => Effect.Effect<
44 lf.GetTemporaryGlueTableCredentialsResponse,
45 lf.GetTemporaryGlueTableCredentialsError
46 >
47 >
48> {}
49
50export const GetTemporaryGlueTableCredentials =
51 Binding.Service<GetTemporaryGlueTableCredentials>(
52 "AWS.LakeFormation.GetTemporaryGlueTableCredentials",
53 );