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 GetTemporaryDataLocationCredentials}.
7 */
8export interface GetTemporaryDataLocationCredentialsRequest
9 extends lf.GetTemporaryDataLocationCredentialsRequest {}
10
11/**
12 * Runtime binding for `lakeformation:GetDataAccess` (data-location scope).
13 *
14 * Vends temporary S3 credentials for registered data locations the caller
15 * holds `DATA_LOCATION_ACCESS` on. The returned credentials'
16 * `SecretAccessKey` and `SessionToken` are `Redacted`. Provide the
17 * implementation with
18 * `Effect.provide(AWS.LakeFormation.GetTemporaryDataLocationCredentialsHttp)`.
19 * ### Vending Data Access Credentials
20 * **Example:** Vend Location-Scoped S3 Credentials
21 * ```typescript
22 * // init — account-level binding takes no resource
23 * const getLocationCredentials =
24 * yield* AWS.LakeFormation.GetTemporaryDataLocationCredentials();
25 *
26 * // runtime
27 * const { Credentials } = yield* getLocationCredentials({
28 * DataLocations: [location.resourceArn],
29 * CredentialsScope: "READ",
30 * });
31 * ```
32 *
33 * @binding
34 */
35export interface GetTemporaryDataLocationCredentials extends Binding.Service<
36 GetTemporaryDataLocationCredentials,
37 "AWS.LakeFormation.GetTemporaryDataLocationCredentials",
38 () => Effect.Effect<
39 (
40 request: GetTemporaryDataLocationCredentialsRequest,
41 ) => Effect.Effect<
42 lf.GetTemporaryDataLocationCredentialsResponse,
43 lf.GetTemporaryDataLocationCredentialsError
44 >
45 >
46> {}
47
48export const GetTemporaryDataLocationCredentials =
49 Binding.Service<GetTemporaryDataLocationCredentials>(
50 "AWS.LakeFormation.GetTemporaryDataLocationCredentials",
51 );