1import type * as bdar from "@distilled.cloud/aws/bedrock-data-automation-runtime";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { DataAutomationProject } from "./DataAutomationProject.ts";
5
6/**
7 * `InvokeDataAutomationAsync` request with `dataAutomationConfiguration`
8 * (project ARN + stage) injected from the bound
9 * {@link DataAutomationProject}.
10 */
11export interface InvokeDataAutomationAsyncRequest extends Omit<
12 bdar.InvokeDataAutomationAsyncRequest,
13 "dataAutomationConfiguration"
14> {}
15
16/**
17 * Runtime binding for the `InvokeDataAutomationAsync` operation (IAM action
18 * `bedrock:InvokeDataAutomationAsync` on the project ARN + the account's
19 * data automation profiles) — start an asynchronous Bedrock Data Automation
20 * job against the bound project from a deployed Function.
21 *
22 * The binding is constructed with the target {@link DataAutomationProject};
23 * its ARN and stage are injected into every runtime request as
24 * `dataAutomationConfiguration`. The caller supplies the S3 input/output
25 * locations and the cross-region data automation profile ARN (e.g.
26 * `arn:aws:bedrock:us-west-2:{account}:data-automation-profile/us.data-automation-v1`).
27 * The calling role also needs `s3:GetObject` on the input and `s3:PutObject`
28 * on the output location — Bedrock Data Automation accesses S3 with the
29 * caller's permissions. Provide the implementation with
30 * `Effect.provide(AWS.BedrockDataAutomation.InvokeDataAutomationAsyncHttp)`.
31 * ### Invoking Data Automation
32 * **Example:** Start An Async Job For An Uploaded Document
33 * ```typescript
34 * // deploy time — bind the project
35 * const invokeAsync = yield* AWS.BedrockDataAutomation.InvokeDataAutomationAsync(project);
36 *
37 * // runtime — process a document already in S3
38 * const { invocationArn } = yield* invokeAsync({
39 * inputConfiguration: { s3Uri: `s3://${bucket}/uploads/invoice.pdf` },
40 * outputConfiguration: { s3Uri: `s3://${bucket}/results/` },
41 * dataAutomationProfileArn: profileArn,
42 * });
43 * ```
44 *
45 * **Example:** Get Notified Via EventBridge When The Job Settles
46 * ```typescript
47 * yield* invokeAsync({
48 * inputConfiguration: { s3Uri: input },
49 * outputConfiguration: { s3Uri: output },
50 * dataAutomationProfileArn: profileArn,
51 * notificationConfiguration: {
52 * eventBridgeConfiguration: { eventBridgeEnabled: true },
53 * },
54 * });
55 * // pair with AWS.BedrockDataAutomation.consumeDataAutomationJobEvents
56 * ```
57 *
58 * @binding
59 */
60export interface InvokeDataAutomationAsync extends Binding.Service<
61 InvokeDataAutomationAsync,
62 "AWS.BedrockDataAutomation.InvokeDataAutomationAsync",
63 (
64 project: DataAutomationProject,
65 ) => Effect.Effect<
66 (
67 request: InvokeDataAutomationAsyncRequest,
68 ) => Effect.Effect<
69 bdar.InvokeDataAutomationAsyncResponse,
70 bdar.InvokeDataAutomationAsyncError
71 >
72 >
73> {}
74export const InvokeDataAutomationAsync =
75 Binding.Service<InvokeDataAutomationAsync>(
76 "AWS.BedrockDataAutomation.InvokeDataAutomationAsync",
77 );