1import type * as iam from "@distilled.cloud/aws/iam";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for `iam:ListPoliciesGrantingServiceAccess` — list which
7 * attached/inline policies grant an IAM user, group, or role access to given
8 * service namespaces. The companion to access advisor for answering "*why*
9 * can this entity reach that service?".
10 *
11 * The entity (`Arn`) is chosen per request, so the binding takes no arguments
12 * and grants `iam:ListPoliciesGrantingServiceAccess` on `*`. Provide the
13 * implementation with
14 * `Effect.provide(AWS.IAM.ListPoliciesGrantingServiceAccessHttp)`.
15 *
16 * ### Access Advisor
17 * **Example:** Explain a Role's S3 Access
18 * ```typescript
19 * // init
20 * const listPoliciesGrantingServiceAccess =
21 * yield* IAM.ListPoliciesGrantingServiceAccess();
22 *
23 * // runtime
24 * const { PoliciesGrantingServiceAccess } =
25 * yield* listPoliciesGrantingServiceAccess({
26 * Arn: roleArn,
27 * ServiceNamespaces: ["s3"],
28 * });
29 * ```
30 *
31 * @binding
32 */
33export interface ListPoliciesGrantingServiceAccess extends Binding.Service<
34 ListPoliciesGrantingServiceAccess,
35 "AWS.IAM.ListPoliciesGrantingServiceAccess",
36 () => Effect.Effect<
37 (
38 request: iam.ListPoliciesGrantingServiceAccessRequest,
39 ) => Effect.Effect<
40 iam.ListPoliciesGrantingServiceAccessResponse,
41 iam.ListPoliciesGrantingServiceAccessError
42 >
43 >
44> {}
45export const ListPoliciesGrantingServiceAccess =
46 Binding.Service<ListPoliciesGrantingServiceAccess>(
47 "AWS.IAM.ListPoliciesGrantingServiceAccess",
48 );