import type * as resourcegroups from "@distilled.cloud/aws/resource-groups"; import type * as Effect from "effect/Effect"; import * as Binding from "../../Binding.ts"; import type { Role } from "../IAM/Role.ts"; import type { Group } from "./Group.ts"; /** * Request for {@link StartTagSyncTask} — the group and (by default) the * bound role are injected from the binding; pass `RoleArn` to override. */ export type StartTagSyncTaskRequest = Omit & { RoleArn?: string; }; /** * Runtime binding for `resource-groups:StartTagSyncTask`. * * Starts a tag-sync task on the bound application {@link Group}: Resource * Groups continuously adds resources carrying the tag (or matching the * resource query) to the group and removes ones that stop matching, acting * as the bound IAM role. The binding grants the action on the group plus * `iam:PassRole` on the role (condition-scoped to * `resource-groups.amazonaws.com`); the role itself needs the tagging * permissions tag-sync uses and a trust policy for * `resource-groups.amazonaws.com`. Provide the implementation with * `Effect.provide(AWS.ResourceGroups.StartTagSyncTaskHttp)`. * ### Tag-Sync Tasks * **Example:** Keep A Group In Sync With A Tag * ```typescript * // init — bind the operation to the group and the sync role * const startTagSyncTask = yield* AWS.ResourceGroups.StartTagSyncTask(group, syncRole); * * // runtime * const { TaskArn } = yield* startTagSyncTask({ * TagKey: "team", * TagValue: "platform", * }); * ``` * * @binding */ export interface StartTagSyncTask extends Binding.Service(group: Group, syncRole: R) => Effect.Effect<(request: StartTagSyncTaskRequest) => Effect.Effect>> { } export declare const StartTagSyncTask: StartTagSyncTask; //# sourceMappingURL=StartTagSyncTask.d.ts.map