import type * as comprehend from "@distilled.cloud/aws/comprehend"; import type * as Effect from "effect/Effect"; import * as Binding from "../../Binding.ts"; import type { Role } from "../IAM/Role.ts"; /** * `StartTargetedSentimentDetectionJob` request with `DataAccessRoleArn` defaulting to the role the * binding was constructed with. */ export interface StartTargetedSentimentDetectionJobRequest extends Omit< comprehend.StartTargetedSentimentDetectionJobRequest, "DataAccessRoleArn" > { /** * IAM role Amazon Comprehend assumes to read the input documents and write * the results. * @default the data-access role bound via `StartTargetedSentimentDetectionJob(role)` */ DataAccessRoleArn?: string; } /** * Runtime binding for `comprehend:StartTargetedSentimentDetectionJob` — start an asynchronous * targeted-sentiment detection job over a collection of documents in S3. * * The binding is constructed with the **data-access role** (the IAM role * Amazon Comprehend assumes to read the input documents and write results; * its trust policy must allow `comprehend.amazonaws.com`). The role's ARN is * injected as `DataAccessRoleArn` on every runtime request and the host is * granted `iam:PassRole` on it alongside the `comprehend:StartTargetedSentimentDetectionJob` * action (which has no resource-level IAM). Track the job with * {@link DescribeTargetedSentimentDetectionJob} and stop it with * {@link StopTargetedSentimentDetectionJob}. * * ### Starting Analysis Jobs * **Example:** Start an Asynchronous TargetedSentiment Detection Job * ```typescript * // deploy time — bind the Comprehend data-access role * const startTargetedSentimentDetectionJob = yield* AWS.Comprehend.StartTargetedSentimentDetectionJob(dataAccessRole); * * // runtime * const job = yield* startTargetedSentimentDetectionJob({ * InputDataConfig: { S3Uri: "s3://my-bucket/input/", InputFormat: "ONE_DOC_PER_LINE" }, * OutputDataConfig: { S3Uri: "s3://my-bucket/output/" }, * LanguageCode: "en", * }); * // job.JobId, job.JobStatus === "SUBMITTED" * ``` * * @binding */ export interface StartTargetedSentimentDetectionJob extends Binding.Service< StartTargetedSentimentDetectionJob, "AWS.Comprehend.StartTargetedSentimentDetectionJob", ( dataAccessRole: R, ) => Effect.Effect< ( request: StartTargetedSentimentDetectionJobRequest, ) => Effect.Effect< comprehend.StartTargetedSentimentDetectionJobResponse, comprehend.StartTargetedSentimentDetectionJobError > > > {} export const StartTargetedSentimentDetectionJob = Binding.Service( "AWS.Comprehend.StartTargetedSentimentDetectionJob", );