Class IamFunctions


  • public final class IamFunctions
    extends java.lang.Object
    • Constructor Detail

      • IamFunctions

        public IamFunctions()
    • Method Detail

      • getAccessKeys

        public static com.pulumi.core.Output<GetAccessKeysResult> getAccessKeys​(GetAccessKeysArgs args)
        This data source can be used to fetch information about IAM access keys of a specific IAM user. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetAccessKeysArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getAccessKeys(GetAccessKeysArgs.builder()
                     .user("an_example_user_name")
                     .build());
         
             }
         }
         
         
      • getAccessKeysPlain

        public static java.util.concurrent.CompletableFuture<GetAccessKeysResult> getAccessKeysPlain​(GetAccessKeysPlainArgs args)
        This data source can be used to fetch information about IAM access keys of a specific IAM user. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetAccessKeysArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getAccessKeys(GetAccessKeysArgs.builder()
                     .user("an_example_user_name")
                     .build());
         
             }
         }
         
         
      • getAccessKeys

        public static com.pulumi.core.Output<GetAccessKeysResult> getAccessKeys​(GetAccessKeysArgs args,
                                                                                com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about IAM access keys of a specific IAM user. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetAccessKeysArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getAccessKeys(GetAccessKeysArgs.builder()
                     .user("an_example_user_name")
                     .build());
         
             }
         }
         
         
      • getAccessKeys

        public static com.pulumi.core.Output<GetAccessKeysResult> getAccessKeys​(GetAccessKeysArgs args,
                                                                                com.pulumi.deployment.InvokeOutputOptions options)
        This data source can be used to fetch information about IAM access keys of a specific IAM user. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetAccessKeysArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getAccessKeys(GetAccessKeysArgs.builder()
                     .user("an_example_user_name")
                     .build());
         
             }
         }
         
         
      • getAccessKeysPlain

        public static java.util.concurrent.CompletableFuture<GetAccessKeysResult> getAccessKeysPlain​(GetAccessKeysPlainArgs args,
                                                                                                     com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about IAM access keys of a specific IAM user. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetAccessKeysArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getAccessKeys(GetAccessKeysArgs.builder()
                     .user("an_example_user_name")
                     .build());
         
             }
         }
         
         
      • getAccountAlias

        public static com.pulumi.core.Output<GetAccountAliasResult> getAccountAlias()
        The IAM Account Alias data source allows access to the account alias for the effective account in which this provider is working. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = IamFunctions.getAccountAlias(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
                 ctx.export("accountAlias", current.accountAlias());
             }
         }
         
         
      • getAccountAliasPlain

        public static java.util.concurrent.CompletableFuture<GetAccountAliasResult> getAccountAliasPlain()
        The IAM Account Alias data source allows access to the account alias for the effective account in which this provider is working. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = IamFunctions.getAccountAlias(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
                 ctx.export("accountAlias", current.accountAlias());
             }
         }
         
         
      • getAccountAlias

        public static com.pulumi.core.Output<GetAccountAliasResult> getAccountAlias​(com.pulumi.resources.InvokeArgs args)
        The IAM Account Alias data source allows access to the account alias for the effective account in which this provider is working. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = IamFunctions.getAccountAlias(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
                 ctx.export("accountAlias", current.accountAlias());
             }
         }
         
         
      • getAccountAliasPlain

        public static java.util.concurrent.CompletableFuture<GetAccountAliasResult> getAccountAliasPlain​(com.pulumi.resources.InvokeArgs args)
        The IAM Account Alias data source allows access to the account alias for the effective account in which this provider is working. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = IamFunctions.getAccountAlias(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
                 ctx.export("accountAlias", current.accountAlias());
             }
         }
         
         
      • getAccountAlias

        public static com.pulumi.core.Output<GetAccountAliasResult> getAccountAlias​(com.pulumi.resources.InvokeArgs args,
                                                                                    com.pulumi.deployment.InvokeOptions options)
        The IAM Account Alias data source allows access to the account alias for the effective account in which this provider is working. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = IamFunctions.getAccountAlias(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
                 ctx.export("accountAlias", current.accountAlias());
             }
         }
         
         
      • getAccountAlias

        public static com.pulumi.core.Output<GetAccountAliasResult> getAccountAlias​(com.pulumi.resources.InvokeArgs args,
                                                                                    com.pulumi.deployment.InvokeOutputOptions options)
        The IAM Account Alias data source allows access to the account alias for the effective account in which this provider is working. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = IamFunctions.getAccountAlias(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
                 ctx.export("accountAlias", current.accountAlias());
             }
         }
         
         
      • getAccountAliasPlain

        public static java.util.concurrent.CompletableFuture<GetAccountAliasResult> getAccountAliasPlain​(com.pulumi.resources.InvokeArgs args,
                                                                                                         com.pulumi.deployment.InvokeOptions options)
        The IAM Account Alias data source allows access to the account alias for the effective account in which this provider is working. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = IamFunctions.getAccountAlias(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
                 ctx.export("accountAlias", current.accountAlias());
             }
         }
         
         
      • getGroup

        public static com.pulumi.core.Output<GetGroupResult> getGroup​(GetGroupArgs args)
        This data source can be used to fetch information about a specific IAM group. By using this data source, you can reference IAM group properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetGroupArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getGroup(GetGroupArgs.builder()
                     .groupName("an_example_group_name")
                     .build());
         
             }
         }
         
         
      • getGroupPlain

        public static java.util.concurrent.CompletableFuture<GetGroupResult> getGroupPlain​(GetGroupPlainArgs args)
        This data source can be used to fetch information about a specific IAM group. By using this data source, you can reference IAM group properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetGroupArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getGroup(GetGroupArgs.builder()
                     .groupName("an_example_group_name")
                     .build());
         
             }
         }
         
         
      • getGroup

        public static com.pulumi.core.Output<GetGroupResult> getGroup​(GetGroupArgs args,
                                                                      com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM group. By using this data source, you can reference IAM group properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetGroupArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getGroup(GetGroupArgs.builder()
                     .groupName("an_example_group_name")
                     .build());
         
             }
         }
         
         
      • getGroup

        public static com.pulumi.core.Output<GetGroupResult> getGroup​(GetGroupArgs args,
                                                                      com.pulumi.deployment.InvokeOutputOptions options)
        This data source can be used to fetch information about a specific IAM group. By using this data source, you can reference IAM group properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetGroupArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getGroup(GetGroupArgs.builder()
                     .groupName("an_example_group_name")
                     .build());
         
             }
         }
         
         
      • getGroupPlain

        public static java.util.concurrent.CompletableFuture<GetGroupResult> getGroupPlain​(GetGroupPlainArgs args,
                                                                                           com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM group. By using this data source, you can reference IAM group properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetGroupArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getGroup(GetGroupArgs.builder()
                     .groupName("an_example_group_name")
                     .build());
         
             }
         }
         
         
      • getInstanceProfile

        public static com.pulumi.core.Output<GetInstanceProfileResult> getInstanceProfile​(GetInstanceProfileArgs args)
        This data source can be used to fetch information about a specific IAM instance profile. By using this data source, you can reference IAM instance profile properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetInstanceProfileArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getInstanceProfile(GetInstanceProfileArgs.builder()
                     .name("an_example_instance_profile_name")
                     .build());
         
             }
         }
         
         
      • getInstanceProfilePlain

        public static java.util.concurrent.CompletableFuture<GetInstanceProfileResult> getInstanceProfilePlain​(GetInstanceProfilePlainArgs args)
        This data source can be used to fetch information about a specific IAM instance profile. By using this data source, you can reference IAM instance profile properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetInstanceProfileArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getInstanceProfile(GetInstanceProfileArgs.builder()
                     .name("an_example_instance_profile_name")
                     .build());
         
             }
         }
         
         
      • getInstanceProfile

        public static com.pulumi.core.Output<GetInstanceProfileResult> getInstanceProfile​(GetInstanceProfileArgs args,
                                                                                          com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM instance profile. By using this data source, you can reference IAM instance profile properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetInstanceProfileArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getInstanceProfile(GetInstanceProfileArgs.builder()
                     .name("an_example_instance_profile_name")
                     .build());
         
             }
         }
         
         
      • getInstanceProfile

        public static com.pulumi.core.Output<GetInstanceProfileResult> getInstanceProfile​(GetInstanceProfileArgs args,
                                                                                          com.pulumi.deployment.InvokeOutputOptions options)
        This data source can be used to fetch information about a specific IAM instance profile. By using this data source, you can reference IAM instance profile properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetInstanceProfileArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getInstanceProfile(GetInstanceProfileArgs.builder()
                     .name("an_example_instance_profile_name")
                     .build());
         
             }
         }
         
         
      • getInstanceProfilePlain

        public static java.util.concurrent.CompletableFuture<GetInstanceProfileResult> getInstanceProfilePlain​(GetInstanceProfilePlainArgs args,
                                                                                                               com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM instance profile. By using this data source, you can reference IAM instance profile properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetInstanceProfileArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getInstanceProfile(GetInstanceProfileArgs.builder()
                     .name("an_example_instance_profile_name")
                     .build());
         
             }
         }
         
         
      • getInstanceProfiles

        public static com.pulumi.core.Output<GetInstanceProfilesResult> getInstanceProfiles​(GetInstanceProfilesArgs args)
        This data source can be used to fetch information about all IAM instance profiles under a role. By using this data source, you can reference IAM instance profile properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetInstanceProfilesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getInstanceProfiles(GetInstanceProfilesArgs.builder()
                     .roleName("an_example_iam_role_name")
                     .build());
         
             }
         }
         
         
      • getInstanceProfilesPlain

        public static java.util.concurrent.CompletableFuture<GetInstanceProfilesResult> getInstanceProfilesPlain​(GetInstanceProfilesPlainArgs args)
        This data source can be used to fetch information about all IAM instance profiles under a role. By using this data source, you can reference IAM instance profile properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetInstanceProfilesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getInstanceProfiles(GetInstanceProfilesArgs.builder()
                     .roleName("an_example_iam_role_name")
                     .build());
         
             }
         }
         
         
      • getInstanceProfiles

        public static com.pulumi.core.Output<GetInstanceProfilesResult> getInstanceProfiles​(GetInstanceProfilesArgs args,
                                                                                            com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about all IAM instance profiles under a role. By using this data source, you can reference IAM instance profile properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetInstanceProfilesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getInstanceProfiles(GetInstanceProfilesArgs.builder()
                     .roleName("an_example_iam_role_name")
                     .build());
         
             }
         }
         
         
      • getInstanceProfiles

        public static com.pulumi.core.Output<GetInstanceProfilesResult> getInstanceProfiles​(GetInstanceProfilesArgs args,
                                                                                            com.pulumi.deployment.InvokeOutputOptions options)
        This data source can be used to fetch information about all IAM instance profiles under a role. By using this data source, you can reference IAM instance profile properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetInstanceProfilesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getInstanceProfiles(GetInstanceProfilesArgs.builder()
                     .roleName("an_example_iam_role_name")
                     .build());
         
             }
         }
         
         
      • getInstanceProfilesPlain

        public static java.util.concurrent.CompletableFuture<GetInstanceProfilesResult> getInstanceProfilesPlain​(GetInstanceProfilesPlainArgs args,
                                                                                                                 com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about all IAM instance profiles under a role. By using this data source, you can reference IAM instance profile properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetInstanceProfilesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getInstanceProfiles(GetInstanceProfilesArgs.builder()
                     .roleName("an_example_iam_role_name")
                     .build());
         
             }
         }
         
         
      • getOpenIdConnectProvider

        public static com.pulumi.core.Output<GetOpenIdConnectProviderResult> getOpenIdConnectProvider()
        This data source can be used to fetch information about a specific IAM OpenID Connect provider. By using this data source, you can retrieve the the resource information by either its `arn` or `url`. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .arn("arn:aws:iam::123456789012:oidc-provider/accounts.google.com")
                     .build());
         
             }
         }
         
         
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .url("https://accounts.google.com")
                     .build());
         
             }
         }
         
         
      • getOpenIdConnectProviderPlain

        public static java.util.concurrent.CompletableFuture<GetOpenIdConnectProviderResult> getOpenIdConnectProviderPlain()
        This data source can be used to fetch information about a specific IAM OpenID Connect provider. By using this data source, you can retrieve the the resource information by either its `arn` or `url`. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .arn("arn:aws:iam::123456789012:oidc-provider/accounts.google.com")
                     .build());
         
             }
         }
         
         
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .url("https://accounts.google.com")
                     .build());
         
             }
         }
         
         
      • getOpenIdConnectProvider

        public static com.pulumi.core.Output<GetOpenIdConnectProviderResult> getOpenIdConnectProvider​(GetOpenIdConnectProviderArgs args)
        This data source can be used to fetch information about a specific IAM OpenID Connect provider. By using this data source, you can retrieve the the resource information by either its `arn` or `url`. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .arn("arn:aws:iam::123456789012:oidc-provider/accounts.google.com")
                     .build());
         
             }
         }
         
         
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .url("https://accounts.google.com")
                     .build());
         
             }
         }
         
         
      • getOpenIdConnectProviderPlain

        public static java.util.concurrent.CompletableFuture<GetOpenIdConnectProviderResult> getOpenIdConnectProviderPlain​(GetOpenIdConnectProviderPlainArgs args)
        This data source can be used to fetch information about a specific IAM OpenID Connect provider. By using this data source, you can retrieve the the resource information by either its `arn` or `url`. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .arn("arn:aws:iam::123456789012:oidc-provider/accounts.google.com")
                     .build());
         
             }
         }
         
         
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .url("https://accounts.google.com")
                     .build());
         
             }
         }
         
         
      • getOpenIdConnectProvider

        public static com.pulumi.core.Output<GetOpenIdConnectProviderResult> getOpenIdConnectProvider​(GetOpenIdConnectProviderArgs args,
                                                                                                      com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM OpenID Connect provider. By using this data source, you can retrieve the the resource information by either its `arn` or `url`. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .arn("arn:aws:iam::123456789012:oidc-provider/accounts.google.com")
                     .build());
         
             }
         }
         
         
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .url("https://accounts.google.com")
                     .build());
         
             }
         }
         
         
      • getOpenIdConnectProvider

        public static com.pulumi.core.Output<GetOpenIdConnectProviderResult> getOpenIdConnectProvider​(GetOpenIdConnectProviderArgs args,
                                                                                                      com.pulumi.deployment.InvokeOutputOptions options)
        This data source can be used to fetch information about a specific IAM OpenID Connect provider. By using this data source, you can retrieve the the resource information by either its `arn` or `url`. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .arn("arn:aws:iam::123456789012:oidc-provider/accounts.google.com")
                     .build());
         
             }
         }
         
         
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .url("https://accounts.google.com")
                     .build());
         
             }
         }
         
         
      • getOpenIdConnectProviderPlain

        public static java.util.concurrent.CompletableFuture<GetOpenIdConnectProviderResult> getOpenIdConnectProviderPlain​(GetOpenIdConnectProviderPlainArgs args,
                                                                                                                           com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM OpenID Connect provider. By using this data source, you can retrieve the the resource information by either its `arn` or `url`. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .arn("arn:aws:iam::123456789012:oidc-provider/accounts.google.com")
                     .build());
         
             }
         }
         
         
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetOpenIdConnectProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOpenIdConnectProvider(GetOpenIdConnectProviderArgs.builder()
                     .url("https://accounts.google.com")
                     .build());
         
             }
         }
         
         
      • getOutboundWebIdentityFederation

        public static com.pulumi.core.Output<GetOutboundWebIdentityFederationResult> getOutboundWebIdentityFederation()
        Use this data source to retrieve information about an AWS IAM (Identity & Access Management) Outbound Web Identity Federation. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOutboundWebIdentityFederation(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
             }
         }
         
         
      • getOutboundWebIdentityFederationPlain

        public static java.util.concurrent.CompletableFuture<GetOutboundWebIdentityFederationResult> getOutboundWebIdentityFederationPlain()
        Use this data source to retrieve information about an AWS IAM (Identity & Access Management) Outbound Web Identity Federation. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOutboundWebIdentityFederation(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
             }
         }
         
         
      • getOutboundWebIdentityFederation

        public static com.pulumi.core.Output<GetOutboundWebIdentityFederationResult> getOutboundWebIdentityFederation​(com.pulumi.resources.InvokeArgs args)
        Use this data source to retrieve information about an AWS IAM (Identity & Access Management) Outbound Web Identity Federation. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOutboundWebIdentityFederation(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
             }
         }
         
         
      • getOutboundWebIdentityFederationPlain

        public static java.util.concurrent.CompletableFuture<GetOutboundWebIdentityFederationResult> getOutboundWebIdentityFederationPlain​(com.pulumi.resources.InvokeArgs args)
        Use this data source to retrieve information about an AWS IAM (Identity & Access Management) Outbound Web Identity Federation. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOutboundWebIdentityFederation(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
             }
         }
         
         
      • getOutboundWebIdentityFederation

        public static com.pulumi.core.Output<GetOutboundWebIdentityFederationResult> getOutboundWebIdentityFederation​(com.pulumi.resources.InvokeArgs args,
                                                                                                                      com.pulumi.deployment.InvokeOptions options)
        Use this data source to retrieve information about an AWS IAM (Identity & Access Management) Outbound Web Identity Federation. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOutboundWebIdentityFederation(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
             }
         }
         
         
      • getOutboundWebIdentityFederation

        public static com.pulumi.core.Output<GetOutboundWebIdentityFederationResult> getOutboundWebIdentityFederation​(com.pulumi.resources.InvokeArgs args,
                                                                                                                      com.pulumi.deployment.InvokeOutputOptions options)
        Use this data source to retrieve information about an AWS IAM (Identity & Access Management) Outbound Web Identity Federation. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOutboundWebIdentityFederation(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
             }
         }
         
         
      • getOutboundWebIdentityFederationPlain

        public static java.util.concurrent.CompletableFuture<GetOutboundWebIdentityFederationResult> getOutboundWebIdentityFederationPlain​(com.pulumi.resources.InvokeArgs args,
                                                                                                                                           com.pulumi.deployment.InvokeOptions options)
        Use this data source to retrieve information about an AWS IAM (Identity & Access Management) Outbound Web Identity Federation. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getOutboundWebIdentityFederation(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);
         
             }
         }
         
         
      • getPolicy

        public static com.pulumi.core.Output<GetPolicyResult> getPolicy()
        This data source can be used to fetch information about a specific IAM policy. ## Example Usage ### By ARN
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .arn("arn:aws:iam::123456789012:policy/UsersManageOwnCredentials")
                     .build());
         
             }
         }
         
         
        ### By Name
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .name("test_policy")
                     .build());
         
             }
         }
         
         
      • getPolicyPlain

        public static java.util.concurrent.CompletableFuture<GetPolicyResult> getPolicyPlain()
        This data source can be used to fetch information about a specific IAM policy. ## Example Usage ### By ARN
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .arn("arn:aws:iam::123456789012:policy/UsersManageOwnCredentials")
                     .build());
         
             }
         }
         
         
        ### By Name
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .name("test_policy")
                     .build());
         
             }
         }
         
         
      • getPolicy

        public static com.pulumi.core.Output<GetPolicyResult> getPolicy​(GetPolicyArgs args)
        This data source can be used to fetch information about a specific IAM policy. ## Example Usage ### By ARN
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .arn("arn:aws:iam::123456789012:policy/UsersManageOwnCredentials")
                     .build());
         
             }
         }
         
         
        ### By Name
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .name("test_policy")
                     .build());
         
             }
         }
         
         
      • getPolicyPlain

        public static java.util.concurrent.CompletableFuture<GetPolicyResult> getPolicyPlain​(GetPolicyPlainArgs args)
        This data source can be used to fetch information about a specific IAM policy. ## Example Usage ### By ARN
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .arn("arn:aws:iam::123456789012:policy/UsersManageOwnCredentials")
                     .build());
         
             }
         }
         
         
        ### By Name
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .name("test_policy")
                     .build());
         
             }
         }
         
         
      • getPolicy

        public static com.pulumi.core.Output<GetPolicyResult> getPolicy​(GetPolicyArgs args,
                                                                        com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM policy. ## Example Usage ### By ARN
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .arn("arn:aws:iam::123456789012:policy/UsersManageOwnCredentials")
                     .build());
         
             }
         }
         
         
        ### By Name
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .name("test_policy")
                     .build());
         
             }
         }
         
         
      • getPolicy

        public static com.pulumi.core.Output<GetPolicyResult> getPolicy​(GetPolicyArgs args,
                                                                        com.pulumi.deployment.InvokeOutputOptions options)
        This data source can be used to fetch information about a specific IAM policy. ## Example Usage ### By ARN
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .arn("arn:aws:iam::123456789012:policy/UsersManageOwnCredentials")
                     .build());
         
             }
         }
         
         
        ### By Name
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .name("test_policy")
                     .build());
         
             }
         }
         
         
      • getPolicyPlain

        public static java.util.concurrent.CompletableFuture<GetPolicyResult> getPolicyPlain​(GetPolicyPlainArgs args,
                                                                                             com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM policy. ## Example Usage ### By ARN
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .arn("arn:aws:iam::123456789012:policy/UsersManageOwnCredentials")
                     .build());
         
             }
         }
         
         
        ### By Name
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicy(GetPolicyArgs.builder()
                     .name("test_policy")
                     .build());
         
             }
         }
         
         
      • getPolicyDocument

        public static com.pulumi.core.Output<GetPolicyDocumentResult> getPolicyDocument()
        Generates an IAM policy document in JSON format for use with resources that expect policy documents such as `aws.iam.Policy`. Using this data source to generate policy documents is *optional*. It is also valid to use literal JSON strings in your configuration or to use the `file` interpolation function to read a raw JSON policy document from a file. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import com.pulumi.aws.iam.Policy;
         import com.pulumi.aws.iam.PolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("1")
                             .actions(                    
                                 "s3:ListAllMyBuckets",
                                 "s3:GetBucketLocation")
                             .resources("arn:aws:s3:::*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("StringLike")
                                 .variable("s3:prefix")
                                 .values(                        
                                     "",
                                     "home/",
                                     "home/&{aws:username}/")
                                 .build())
                             .actions("s3:ListBucket")
                             .resources(String.format("arn:aws:s3:::%s", s3BucketName))
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("s3:*")
                             .resources(                    
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}", s3BucketName),
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}/*", s3BucketName))
                             .build())
                     .build());
         
                 var examplePolicy = new Policy("examplePolicy", PolicyArgs.builder()
                     .name("example_policy")
                     .path("/")
                     .policy(example.json())
                     .build());
         
             }
         }
         
         
        ### Example Multiple Condition Keys and Values You can specify a [condition with multiple keys and values](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) by supplying multiple `condition` blocks with the same `test` value, but differing `variable` and `values` values.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var exampleMultipleConditionKeysAndValues = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .conditions(                
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:service")
                                 .values("pi")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:pi:service")
                                 .values("rds")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:rds:db-id")
                                 .values(                        
                                     "db-AAAAABBBBBCCCCCDDDDDEEEEE",
                                     "db-EEEEEDDDDDCCCCCBBBBBAAAAA")
                                 .build())
                         .actions(                
                             "kms:Decrypt",
                             "kms:GenerateDataKey")
                         .resources("*")
                         .build())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.example_multiple_condition_keys_and_values.json` will evaluate to: ### Example Assume-Role Policy with Multiple Principals You can specify multiple principal blocks with different types. You can also use this data source to generate an assume-role policy.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var eventStreamBucketRoleAssumeRolePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .principals(                
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Service")
                                 .identifiers("firehose.amazonaws.com")
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("AWS")
                                 .identifiers(trustedRoleArn)
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Federated")
                                 .identifiers(                        
                                     String.format("arn:aws:iam::%s:saml-provider/%s", accountId,providerName),
                                     "cognito-identity.amazonaws.com")
                                 .build())
                         .actions("sts:AssumeRole")
                         .build())
                     .build());
         
             }
         }
         
         
        ### Example Using A Source Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources(                
                             "arn:aws:s3:::somebucket",
                             "arn:aws:s3:::somebucket/*")
                         .build())
                     .sourcePolicyDocuments(source.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.source_document_example.json` will evaluate to: ### Example Using An Override Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var overridePolicyDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources(                    
                                 "arn:aws:s3:::somebucket",
                                 "arn:aws:s3:::somebucket/*")
                             .build())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.override_policy_document_example.json` will evaluate to: ### Example with Both Source and Override Documents You can also combine `sourcePolicyDocuments` and `overridePolicyDocuments` in the same document.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("ec2:DescribeAccountAttributes")
                         .resources("*")
                         .build())
                     .build());
         
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("s3:GetObject")
                         .resources("*")
                         .build())
                     .build());
         
                 final var politik = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(source.json())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.politik.json` will evaluate to: ### Example of Merging Source Documents Multiple documents can be combined using the `sourcePolicyDocuments` or `overridePolicyDocuments` attributes. `sourcePolicyDocuments` requires that all documents have unique Sids, while `overridePolicyDocuments` will iteratively override matching Sids.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var sourceOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidOne")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidTwo")
                             .actions("iam:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("lambda:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(            
                         sourceOne.json(),
                         sourceTwo.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to: ### Example of Merging Override Documents
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var policyOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Allow")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var policyTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .effect("Allow")
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("OverridePlaceHolderTwo")
                             .effect("Allow")
                             .actions("iam:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var policyThree = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Deny")
                         .actions("logs:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderTwo")
                         .effect("Deny")
                         .actions("*")
                         .resources("*")
                         .build())
                     .overridePolicyDocuments(            
                         policyOne.json(),
                         policyTwo.json(),
                         policyThree.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to:
      • getPolicyDocumentPlain

        public static java.util.concurrent.CompletableFuture<GetPolicyDocumentResult> getPolicyDocumentPlain()
        Generates an IAM policy document in JSON format for use with resources that expect policy documents such as `aws.iam.Policy`. Using this data source to generate policy documents is *optional*. It is also valid to use literal JSON strings in your configuration or to use the `file` interpolation function to read a raw JSON policy document from a file. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import com.pulumi.aws.iam.Policy;
         import com.pulumi.aws.iam.PolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("1")
                             .actions(                    
                                 "s3:ListAllMyBuckets",
                                 "s3:GetBucketLocation")
                             .resources("arn:aws:s3:::*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("StringLike")
                                 .variable("s3:prefix")
                                 .values(                        
                                     "",
                                     "home/",
                                     "home/&{aws:username}/")
                                 .build())
                             .actions("s3:ListBucket")
                             .resources(String.format("arn:aws:s3:::%s", s3BucketName))
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("s3:*")
                             .resources(                    
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}", s3BucketName),
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}/*", s3BucketName))
                             .build())
                     .build());
         
                 var examplePolicy = new Policy("examplePolicy", PolicyArgs.builder()
                     .name("example_policy")
                     .path("/")
                     .policy(example.json())
                     .build());
         
             }
         }
         
         
        ### Example Multiple Condition Keys and Values You can specify a [condition with multiple keys and values](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) by supplying multiple `condition` blocks with the same `test` value, but differing `variable` and `values` values.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var exampleMultipleConditionKeysAndValues = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .conditions(                
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:service")
                                 .values("pi")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:pi:service")
                                 .values("rds")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:rds:db-id")
                                 .values(                        
                                     "db-AAAAABBBBBCCCCCDDDDDEEEEE",
                                     "db-EEEEEDDDDDCCCCCBBBBBAAAAA")
                                 .build())
                         .actions(                
                             "kms:Decrypt",
                             "kms:GenerateDataKey")
                         .resources("*")
                         .build())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.example_multiple_condition_keys_and_values.json` will evaluate to: ### Example Assume-Role Policy with Multiple Principals You can specify multiple principal blocks with different types. You can also use this data source to generate an assume-role policy.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var eventStreamBucketRoleAssumeRolePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .principals(                
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Service")
                                 .identifiers("firehose.amazonaws.com")
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("AWS")
                                 .identifiers(trustedRoleArn)
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Federated")
                                 .identifiers(                        
                                     String.format("arn:aws:iam::%s:saml-provider/%s", accountId,providerName),
                                     "cognito-identity.amazonaws.com")
                                 .build())
                         .actions("sts:AssumeRole")
                         .build())
                     .build());
         
             }
         }
         
         
        ### Example Using A Source Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources(                
                             "arn:aws:s3:::somebucket",
                             "arn:aws:s3:::somebucket/*")
                         .build())
                     .sourcePolicyDocuments(source.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.source_document_example.json` will evaluate to: ### Example Using An Override Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var overridePolicyDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources(                    
                                 "arn:aws:s3:::somebucket",
                                 "arn:aws:s3:::somebucket/*")
                             .build())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.override_policy_document_example.json` will evaluate to: ### Example with Both Source and Override Documents You can also combine `sourcePolicyDocuments` and `overridePolicyDocuments` in the same document.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("ec2:DescribeAccountAttributes")
                         .resources("*")
                         .build())
                     .build());
         
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("s3:GetObject")
                         .resources("*")
                         .build())
                     .build());
         
                 final var politik = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(source.json())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.politik.json` will evaluate to: ### Example of Merging Source Documents Multiple documents can be combined using the `sourcePolicyDocuments` or `overridePolicyDocuments` attributes. `sourcePolicyDocuments` requires that all documents have unique Sids, while `overridePolicyDocuments` will iteratively override matching Sids.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var sourceOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidOne")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidTwo")
                             .actions("iam:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("lambda:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(            
                         sourceOne.json(),
                         sourceTwo.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to: ### Example of Merging Override Documents
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var policyOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Allow")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var policyTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .effect("Allow")
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("OverridePlaceHolderTwo")
                             .effect("Allow")
                             .actions("iam:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var policyThree = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Deny")
                         .actions("logs:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderTwo")
                         .effect("Deny")
                         .actions("*")
                         .resources("*")
                         .build())
                     .overridePolicyDocuments(            
                         policyOne.json(),
                         policyTwo.json(),
                         policyThree.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to:
      • getPolicyDocument

        public static com.pulumi.core.Output<GetPolicyDocumentResult> getPolicyDocument​(GetPolicyDocumentArgs args)
        Generates an IAM policy document in JSON format for use with resources that expect policy documents such as `aws.iam.Policy`. Using this data source to generate policy documents is *optional*. It is also valid to use literal JSON strings in your configuration or to use the `file` interpolation function to read a raw JSON policy document from a file. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import com.pulumi.aws.iam.Policy;
         import com.pulumi.aws.iam.PolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("1")
                             .actions(                    
                                 "s3:ListAllMyBuckets",
                                 "s3:GetBucketLocation")
                             .resources("arn:aws:s3:::*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("StringLike")
                                 .variable("s3:prefix")
                                 .values(                        
                                     "",
                                     "home/",
                                     "home/&{aws:username}/")
                                 .build())
                             .actions("s3:ListBucket")
                             .resources(String.format("arn:aws:s3:::%s", s3BucketName))
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("s3:*")
                             .resources(                    
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}", s3BucketName),
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}/*", s3BucketName))
                             .build())
                     .build());
         
                 var examplePolicy = new Policy("examplePolicy", PolicyArgs.builder()
                     .name("example_policy")
                     .path("/")
                     .policy(example.json())
                     .build());
         
             }
         }
         
         
        ### Example Multiple Condition Keys and Values You can specify a [condition with multiple keys and values](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) by supplying multiple `condition` blocks with the same `test` value, but differing `variable` and `values` values.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var exampleMultipleConditionKeysAndValues = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .conditions(                
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:service")
                                 .values("pi")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:pi:service")
                                 .values("rds")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:rds:db-id")
                                 .values(                        
                                     "db-AAAAABBBBBCCCCCDDDDDEEEEE",
                                     "db-EEEEEDDDDDCCCCCBBBBBAAAAA")
                                 .build())
                         .actions(                
                             "kms:Decrypt",
                             "kms:GenerateDataKey")
                         .resources("*")
                         .build())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.example_multiple_condition_keys_and_values.json` will evaluate to: ### Example Assume-Role Policy with Multiple Principals You can specify multiple principal blocks with different types. You can also use this data source to generate an assume-role policy.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var eventStreamBucketRoleAssumeRolePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .principals(                
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Service")
                                 .identifiers("firehose.amazonaws.com")
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("AWS")
                                 .identifiers(trustedRoleArn)
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Federated")
                                 .identifiers(                        
                                     String.format("arn:aws:iam::%s:saml-provider/%s", accountId,providerName),
                                     "cognito-identity.amazonaws.com")
                                 .build())
                         .actions("sts:AssumeRole")
                         .build())
                     .build());
         
             }
         }
         
         
        ### Example Using A Source Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources(                
                             "arn:aws:s3:::somebucket",
                             "arn:aws:s3:::somebucket/*")
                         .build())
                     .sourcePolicyDocuments(source.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.source_document_example.json` will evaluate to: ### Example Using An Override Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var overridePolicyDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources(                    
                                 "arn:aws:s3:::somebucket",
                                 "arn:aws:s3:::somebucket/*")
                             .build())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.override_policy_document_example.json` will evaluate to: ### Example with Both Source and Override Documents You can also combine `sourcePolicyDocuments` and `overridePolicyDocuments` in the same document.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("ec2:DescribeAccountAttributes")
                         .resources("*")
                         .build())
                     .build());
         
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("s3:GetObject")
                         .resources("*")
                         .build())
                     .build());
         
                 final var politik = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(source.json())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.politik.json` will evaluate to: ### Example of Merging Source Documents Multiple documents can be combined using the `sourcePolicyDocuments` or `overridePolicyDocuments` attributes. `sourcePolicyDocuments` requires that all documents have unique Sids, while `overridePolicyDocuments` will iteratively override matching Sids.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var sourceOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidOne")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidTwo")
                             .actions("iam:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("lambda:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(            
                         sourceOne.json(),
                         sourceTwo.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to: ### Example of Merging Override Documents
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var policyOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Allow")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var policyTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .effect("Allow")
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("OverridePlaceHolderTwo")
                             .effect("Allow")
                             .actions("iam:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var policyThree = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Deny")
                         .actions("logs:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderTwo")
                         .effect("Deny")
                         .actions("*")
                         .resources("*")
                         .build())
                     .overridePolicyDocuments(            
                         policyOne.json(),
                         policyTwo.json(),
                         policyThree.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to:
      • getPolicyDocumentPlain

        public static java.util.concurrent.CompletableFuture<GetPolicyDocumentResult> getPolicyDocumentPlain​(GetPolicyDocumentPlainArgs args)
        Generates an IAM policy document in JSON format for use with resources that expect policy documents such as `aws.iam.Policy`. Using this data source to generate policy documents is *optional*. It is also valid to use literal JSON strings in your configuration or to use the `file` interpolation function to read a raw JSON policy document from a file. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import com.pulumi.aws.iam.Policy;
         import com.pulumi.aws.iam.PolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("1")
                             .actions(                    
                                 "s3:ListAllMyBuckets",
                                 "s3:GetBucketLocation")
                             .resources("arn:aws:s3:::*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("StringLike")
                                 .variable("s3:prefix")
                                 .values(                        
                                     "",
                                     "home/",
                                     "home/&{aws:username}/")
                                 .build())
                             .actions("s3:ListBucket")
                             .resources(String.format("arn:aws:s3:::%s", s3BucketName))
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("s3:*")
                             .resources(                    
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}", s3BucketName),
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}/*", s3BucketName))
                             .build())
                     .build());
         
                 var examplePolicy = new Policy("examplePolicy", PolicyArgs.builder()
                     .name("example_policy")
                     .path("/")
                     .policy(example.json())
                     .build());
         
             }
         }
         
         
        ### Example Multiple Condition Keys and Values You can specify a [condition with multiple keys and values](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) by supplying multiple `condition` blocks with the same `test` value, but differing `variable` and `values` values.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var exampleMultipleConditionKeysAndValues = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .conditions(                
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:service")
                                 .values("pi")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:pi:service")
                                 .values("rds")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:rds:db-id")
                                 .values(                        
                                     "db-AAAAABBBBBCCCCCDDDDDEEEEE",
                                     "db-EEEEEDDDDDCCCCCBBBBBAAAAA")
                                 .build())
                         .actions(                
                             "kms:Decrypt",
                             "kms:GenerateDataKey")
                         .resources("*")
                         .build())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.example_multiple_condition_keys_and_values.json` will evaluate to: ### Example Assume-Role Policy with Multiple Principals You can specify multiple principal blocks with different types. You can also use this data source to generate an assume-role policy.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var eventStreamBucketRoleAssumeRolePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .principals(                
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Service")
                                 .identifiers("firehose.amazonaws.com")
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("AWS")
                                 .identifiers(trustedRoleArn)
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Federated")
                                 .identifiers(                        
                                     String.format("arn:aws:iam::%s:saml-provider/%s", accountId,providerName),
                                     "cognito-identity.amazonaws.com")
                                 .build())
                         .actions("sts:AssumeRole")
                         .build())
                     .build());
         
             }
         }
         
         
        ### Example Using A Source Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources(                
                             "arn:aws:s3:::somebucket",
                             "arn:aws:s3:::somebucket/*")
                         .build())
                     .sourcePolicyDocuments(source.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.source_document_example.json` will evaluate to: ### Example Using An Override Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var overridePolicyDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources(                    
                                 "arn:aws:s3:::somebucket",
                                 "arn:aws:s3:::somebucket/*")
                             .build())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.override_policy_document_example.json` will evaluate to: ### Example with Both Source and Override Documents You can also combine `sourcePolicyDocuments` and `overridePolicyDocuments` in the same document.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("ec2:DescribeAccountAttributes")
                         .resources("*")
                         .build())
                     .build());
         
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("s3:GetObject")
                         .resources("*")
                         .build())
                     .build());
         
                 final var politik = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(source.json())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.politik.json` will evaluate to: ### Example of Merging Source Documents Multiple documents can be combined using the `sourcePolicyDocuments` or `overridePolicyDocuments` attributes. `sourcePolicyDocuments` requires that all documents have unique Sids, while `overridePolicyDocuments` will iteratively override matching Sids.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var sourceOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidOne")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidTwo")
                             .actions("iam:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("lambda:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(            
                         sourceOne.json(),
                         sourceTwo.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to: ### Example of Merging Override Documents
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var policyOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Allow")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var policyTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .effect("Allow")
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("OverridePlaceHolderTwo")
                             .effect("Allow")
                             .actions("iam:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var policyThree = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Deny")
                         .actions("logs:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderTwo")
                         .effect("Deny")
                         .actions("*")
                         .resources("*")
                         .build())
                     .overridePolicyDocuments(            
                         policyOne.json(),
                         policyTwo.json(),
                         policyThree.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to:
      • getPolicyDocument

        public static com.pulumi.core.Output<GetPolicyDocumentResult> getPolicyDocument​(GetPolicyDocumentArgs args,
                                                                                        com.pulumi.deployment.InvokeOptions options)
        Generates an IAM policy document in JSON format for use with resources that expect policy documents such as `aws.iam.Policy`. Using this data source to generate policy documents is *optional*. It is also valid to use literal JSON strings in your configuration or to use the `file` interpolation function to read a raw JSON policy document from a file. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import com.pulumi.aws.iam.Policy;
         import com.pulumi.aws.iam.PolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("1")
                             .actions(                    
                                 "s3:ListAllMyBuckets",
                                 "s3:GetBucketLocation")
                             .resources("arn:aws:s3:::*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("StringLike")
                                 .variable("s3:prefix")
                                 .values(                        
                                     "",
                                     "home/",
                                     "home/&{aws:username}/")
                                 .build())
                             .actions("s3:ListBucket")
                             .resources(String.format("arn:aws:s3:::%s", s3BucketName))
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("s3:*")
                             .resources(                    
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}", s3BucketName),
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}/*", s3BucketName))
                             .build())
                     .build());
         
                 var examplePolicy = new Policy("examplePolicy", PolicyArgs.builder()
                     .name("example_policy")
                     .path("/")
                     .policy(example.json())
                     .build());
         
             }
         }
         
         
        ### Example Multiple Condition Keys and Values You can specify a [condition with multiple keys and values](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) by supplying multiple `condition` blocks with the same `test` value, but differing `variable` and `values` values.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var exampleMultipleConditionKeysAndValues = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .conditions(                
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:service")
                                 .values("pi")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:pi:service")
                                 .values("rds")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:rds:db-id")
                                 .values(                        
                                     "db-AAAAABBBBBCCCCCDDDDDEEEEE",
                                     "db-EEEEEDDDDDCCCCCBBBBBAAAAA")
                                 .build())
                         .actions(                
                             "kms:Decrypt",
                             "kms:GenerateDataKey")
                         .resources("*")
                         .build())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.example_multiple_condition_keys_and_values.json` will evaluate to: ### Example Assume-Role Policy with Multiple Principals You can specify multiple principal blocks with different types. You can also use this data source to generate an assume-role policy.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var eventStreamBucketRoleAssumeRolePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .principals(                
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Service")
                                 .identifiers("firehose.amazonaws.com")
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("AWS")
                                 .identifiers(trustedRoleArn)
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Federated")
                                 .identifiers(                        
                                     String.format("arn:aws:iam::%s:saml-provider/%s", accountId,providerName),
                                     "cognito-identity.amazonaws.com")
                                 .build())
                         .actions("sts:AssumeRole")
                         .build())
                     .build());
         
             }
         }
         
         
        ### Example Using A Source Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources(                
                             "arn:aws:s3:::somebucket",
                             "arn:aws:s3:::somebucket/*")
                         .build())
                     .sourcePolicyDocuments(source.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.source_document_example.json` will evaluate to: ### Example Using An Override Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var overridePolicyDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources(                    
                                 "arn:aws:s3:::somebucket",
                                 "arn:aws:s3:::somebucket/*")
                             .build())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.override_policy_document_example.json` will evaluate to: ### Example with Both Source and Override Documents You can also combine `sourcePolicyDocuments` and `overridePolicyDocuments` in the same document.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("ec2:DescribeAccountAttributes")
                         .resources("*")
                         .build())
                     .build());
         
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("s3:GetObject")
                         .resources("*")
                         .build())
                     .build());
         
                 final var politik = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(source.json())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.politik.json` will evaluate to: ### Example of Merging Source Documents Multiple documents can be combined using the `sourcePolicyDocuments` or `overridePolicyDocuments` attributes. `sourcePolicyDocuments` requires that all documents have unique Sids, while `overridePolicyDocuments` will iteratively override matching Sids.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var sourceOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidOne")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidTwo")
                             .actions("iam:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("lambda:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(            
                         sourceOne.json(),
                         sourceTwo.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to: ### Example of Merging Override Documents
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var policyOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Allow")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var policyTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .effect("Allow")
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("OverridePlaceHolderTwo")
                             .effect("Allow")
                             .actions("iam:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var policyThree = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Deny")
                         .actions("logs:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderTwo")
                         .effect("Deny")
                         .actions("*")
                         .resources("*")
                         .build())
                     .overridePolicyDocuments(            
                         policyOne.json(),
                         policyTwo.json(),
                         policyThree.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to:
      • getPolicyDocument

        public static com.pulumi.core.Output<GetPolicyDocumentResult> getPolicyDocument​(GetPolicyDocumentArgs args,
                                                                                        com.pulumi.deployment.InvokeOutputOptions options)
        Generates an IAM policy document in JSON format for use with resources that expect policy documents such as `aws.iam.Policy`. Using this data source to generate policy documents is *optional*. It is also valid to use literal JSON strings in your configuration or to use the `file` interpolation function to read a raw JSON policy document from a file. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import com.pulumi.aws.iam.Policy;
         import com.pulumi.aws.iam.PolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("1")
                             .actions(                    
                                 "s3:ListAllMyBuckets",
                                 "s3:GetBucketLocation")
                             .resources("arn:aws:s3:::*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("StringLike")
                                 .variable("s3:prefix")
                                 .values(                        
                                     "",
                                     "home/",
                                     "home/&{aws:username}/")
                                 .build())
                             .actions("s3:ListBucket")
                             .resources(String.format("arn:aws:s3:::%s", s3BucketName))
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("s3:*")
                             .resources(                    
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}", s3BucketName),
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}/*", s3BucketName))
                             .build())
                     .build());
         
                 var examplePolicy = new Policy("examplePolicy", PolicyArgs.builder()
                     .name("example_policy")
                     .path("/")
                     .policy(example.json())
                     .build());
         
             }
         }
         
         
        ### Example Multiple Condition Keys and Values You can specify a [condition with multiple keys and values](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) by supplying multiple `condition` blocks with the same `test` value, but differing `variable` and `values` values.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var exampleMultipleConditionKeysAndValues = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .conditions(                
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:service")
                                 .values("pi")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:pi:service")
                                 .values("rds")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:rds:db-id")
                                 .values(                        
                                     "db-AAAAABBBBBCCCCCDDDDDEEEEE",
                                     "db-EEEEEDDDDDCCCCCBBBBBAAAAA")
                                 .build())
                         .actions(                
                             "kms:Decrypt",
                             "kms:GenerateDataKey")
                         .resources("*")
                         .build())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.example_multiple_condition_keys_and_values.json` will evaluate to: ### Example Assume-Role Policy with Multiple Principals You can specify multiple principal blocks with different types. You can also use this data source to generate an assume-role policy.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var eventStreamBucketRoleAssumeRolePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .principals(                
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Service")
                                 .identifiers("firehose.amazonaws.com")
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("AWS")
                                 .identifiers(trustedRoleArn)
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Federated")
                                 .identifiers(                        
                                     String.format("arn:aws:iam::%s:saml-provider/%s", accountId,providerName),
                                     "cognito-identity.amazonaws.com")
                                 .build())
                         .actions("sts:AssumeRole")
                         .build())
                     .build());
         
             }
         }
         
         
        ### Example Using A Source Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources(                
                             "arn:aws:s3:::somebucket",
                             "arn:aws:s3:::somebucket/*")
                         .build())
                     .sourcePolicyDocuments(source.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.source_document_example.json` will evaluate to: ### Example Using An Override Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var overridePolicyDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources(                    
                                 "arn:aws:s3:::somebucket",
                                 "arn:aws:s3:::somebucket/*")
                             .build())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.override_policy_document_example.json` will evaluate to: ### Example with Both Source and Override Documents You can also combine `sourcePolicyDocuments` and `overridePolicyDocuments` in the same document.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("ec2:DescribeAccountAttributes")
                         .resources("*")
                         .build())
                     .build());
         
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("s3:GetObject")
                         .resources("*")
                         .build())
                     .build());
         
                 final var politik = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(source.json())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.politik.json` will evaluate to: ### Example of Merging Source Documents Multiple documents can be combined using the `sourcePolicyDocuments` or `overridePolicyDocuments` attributes. `sourcePolicyDocuments` requires that all documents have unique Sids, while `overridePolicyDocuments` will iteratively override matching Sids.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var sourceOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidOne")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidTwo")
                             .actions("iam:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("lambda:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(            
                         sourceOne.json(),
                         sourceTwo.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to: ### Example of Merging Override Documents
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var policyOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Allow")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var policyTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .effect("Allow")
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("OverridePlaceHolderTwo")
                             .effect("Allow")
                             .actions("iam:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var policyThree = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Deny")
                         .actions("logs:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderTwo")
                         .effect("Deny")
                         .actions("*")
                         .resources("*")
                         .build())
                     .overridePolicyDocuments(            
                         policyOne.json(),
                         policyTwo.json(),
                         policyThree.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to:
      • getPolicyDocumentPlain

        public static java.util.concurrent.CompletableFuture<GetPolicyDocumentResult> getPolicyDocumentPlain​(GetPolicyDocumentPlainArgs args,
                                                                                                             com.pulumi.deployment.InvokeOptions options)
        Generates an IAM policy document in JSON format for use with resources that expect policy documents such as `aws.iam.Policy`. Using this data source to generate policy documents is *optional*. It is also valid to use literal JSON strings in your configuration or to use the `file` interpolation function to read a raw JSON policy document from a file. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import com.pulumi.aws.iam.Policy;
         import com.pulumi.aws.iam.PolicyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("1")
                             .actions(                    
                                 "s3:ListAllMyBuckets",
                                 "s3:GetBucketLocation")
                             .resources("arn:aws:s3:::*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("StringLike")
                                 .variable("s3:prefix")
                                 .values(                        
                                     "",
                                     "home/",
                                     "home/&{aws:username}/")
                                 .build())
                             .actions("s3:ListBucket")
                             .resources(String.format("arn:aws:s3:::%s", s3BucketName))
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("s3:*")
                             .resources(                    
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}", s3BucketName),
                                 String.format("arn:aws:s3:::%s/home/&{{aws:username}}/*", s3BucketName))
                             .build())
                     .build());
         
                 var examplePolicy = new Policy("examplePolicy", PolicyArgs.builder()
                     .name("example_policy")
                     .path("/")
                     .policy(example.json())
                     .build());
         
             }
         }
         
         
        ### Example Multiple Condition Keys and Values You can specify a [condition with multiple keys and values](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) by supplying multiple `condition` blocks with the same `test` value, but differing `variable` and `values` values.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var exampleMultipleConditionKeysAndValues = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .conditions(                
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:service")
                                 .values("pi")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:pi:service")
                                 .values("rds")
                                 .build(),
                             GetPolicyDocumentStatementConditionArgs.builder()
                                 .test("ForAnyValue:StringEquals")
                                 .variable("kms:EncryptionContext:aws:rds:db-id")
                                 .values(                        
                                     "db-AAAAABBBBBCCCCCDDDDDEEEEE",
                                     "db-EEEEEDDDDDCCCCCBBBBBAAAAA")
                                 .build())
                         .actions(                
                             "kms:Decrypt",
                             "kms:GenerateDataKey")
                         .resources("*")
                         .build())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.example_multiple_condition_keys_and_values.json` will evaluate to: ### Example Assume-Role Policy with Multiple Principals You can specify multiple principal blocks with different types. You can also use this data source to generate an assume-role policy.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var eventStreamBucketRoleAssumeRolePolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .principals(                
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Service")
                                 .identifiers("firehose.amazonaws.com")
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("AWS")
                                 .identifiers(trustedRoleArn)
                                 .build(),
                             GetPolicyDocumentStatementPrincipalArgs.builder()
                                 .type("Federated")
                                 .identifiers(                        
                                     String.format("arn:aws:iam::%s:saml-provider/%s", accountId,providerName),
                                     "cognito-identity.amazonaws.com")
                                 .build())
                         .actions("sts:AssumeRole")
                         .build())
                     .build());
         
             }
         }
         
         
        ### Example Using A Source Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources(                
                             "arn:aws:s3:::somebucket",
                             "arn:aws:s3:::somebucket/*")
                         .build())
                     .sourcePolicyDocuments(source.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.source_document_example.json` will evaluate to: ### Example Using An Override Document
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("SidToOverride")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var overridePolicyDocumentExample = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("SidToOverride")
                             .actions("s3:*")
                             .resources(                    
                                 "arn:aws:s3:::somebucket",
                                 "arn:aws:s3:::somebucket/*")
                             .build())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.override_policy_document_example.json` will evaluate to: ### Example with Both Source and Override Documents You can also combine `sourcePolicyDocuments` and `overridePolicyDocuments` in the same document.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var source = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("ec2:DescribeAccountAttributes")
                         .resources("*")
                         .build())
                     .build());
         
                 final var override = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceholder")
                         .actions("s3:GetObject")
                         .resources("*")
                         .build())
                     .build());
         
                 final var politik = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(source.json())
                     .overridePolicyDocuments(override.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.politik.json` will evaluate to: ### Example of Merging Source Documents Multiple documents can be combined using the `sourcePolicyDocuments` or `overridePolicyDocuments` attributes. `sourcePolicyDocuments` requires that all documents have unique Sids, while `overridePolicyDocuments` will iteratively override matching Sids.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var sourceOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidOne")
                             .actions("s3:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var sourceTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("UniqueSidTwo")
                             .actions("iam:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .actions("lambda:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .sourcePolicyDocuments(            
                         sourceOne.json(),
                         sourceTwo.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to: ### Example of Merging Override Documents
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
         import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var policyOne = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Allow")
                         .actions("s3:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var policyTwo = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(            
                         GetPolicyDocumentStatementArgs.builder()
                             .effect("Allow")
                             .actions("ec2:*")
                             .resources("*")
                             .build(),
                         GetPolicyDocumentStatementArgs.builder()
                             .sid("OverridePlaceHolderTwo")
                             .effect("Allow")
                             .actions("iam:*")
                             .resources("*")
                             .build())
                     .build());
         
                 final var policyThree = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderOne")
                         .effect("Deny")
                         .actions("logs:*")
                         .resources("*")
                         .build())
                     .build());
         
                 final var combined = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                     .statements(GetPolicyDocumentStatementArgs.builder()
                         .sid("OverridePlaceHolderTwo")
                         .effect("Deny")
                         .actions("*")
                         .resources("*")
                         .build())
                     .overridePolicyDocuments(            
                         policyOne.json(),
                         policyTwo.json(),
                         policyThree.json())
                     .build());
         
             }
         }
         
         
        `data.aws_iam_policy_document.combined.json` will evaluate to:
      • getPrincipalPolicySimulation

        public static com.pulumi.core.Output<GetPrincipalPolicySimulationInvokeResult> getPrincipalPolicySimulation​(GetPrincipalPolicySimulationArgs args)
        Runs a simulation of the IAM policies of a particular principal against a given hypothetical request. You can use this data source in conjunction with Preconditions and Postconditions so that your configuration can test either whether it should have sufficient access to do its own work, or whether policies your configuration declares itself are sufficient for their intended use elsewhere. > **Note:** Correctly using this data source requires familiarity with various details of AWS Identity and Access Management, and how various AWS services integrate with it. For general information on the AWS IAM policy simulator, see [Testing IAM policies with the IAM policy simulator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html). This data source wraps the `iam:SimulatePrincipalPolicy` API action described on that page. ## Example Usage ### Self Access-checking Example The following example raises an error if the credentials passed to the AWS provider do not have access to perform the three actions `s3:GetObject`, `s3:PutObject`, and `s3:DeleteObject` on the S3 bucket with the given ARN.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPrincipalPolicySimulationArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 final var s3ObjectAccess = IamFunctions.getPrincipalPolicySimulation(GetPrincipalPolicySimulationArgs.builder()
                     .actionNames(            
                         "s3:GetObject",
                         "s3:PutObject",
                         "s3:DeleteObject")
                     .policySourceArn(current.arn())
                     .resourceArns("arn:aws:s3:::my-test-bucket")
                     .build());
         
             }
         }
         
         
        If you intend to use this data source to quickly raise an error when the given credentials are insufficient then you must use `dependsOn` inside any resource which would require those credentials, to ensure that the policy check will run first:
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.s3.BucketObjectv2;
         import com.pulumi.aws.s3.BucketObjectv2Args;
         import com.pulumi.resources.CustomResourceOptions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 var example = new BucketObjectv2("example", BucketObjectv2Args.builder()
                     .bucket("my-test-bucket")
                     .build(), CustomResourceOptions.builder()
                         .dependsOn(s3ObjectAccess)
                         .build());
         
             }
         }
         
         
        ### Testing the Effect of a Declared Policy The following example declares an S3 bucket and a user that should have access to the bucket, and then uses `aws.iam.getPrincipalPolicySimulation` to verify that the user does indeed have access to perform needed operations against the bucket.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.User;
         import com.pulumi.aws.iam.UserArgs;
         import com.pulumi.aws.s3.Bucket;
         import com.pulumi.aws.s3.BucketArgs;
         import com.pulumi.aws.iam.UserPolicy;
         import com.pulumi.aws.iam.UserPolicyArgs;
         import com.pulumi.aws.s3.BucketPolicy;
         import com.pulumi.aws.s3.BucketPolicyArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPrincipalPolicySimulationArgs;
         import static com.pulumi.codegen.internal.Serialization.*;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 var example = new User("example", UserArgs.builder()
                     .name("example")
                     .build());
         
                 var exampleBucket = new Bucket("exampleBucket", BucketArgs.builder()
                     .bucket("my-test-bucket")
                     .build());
         
                 var s3Access = new UserPolicy("s3Access", UserPolicyArgs.builder()
                     .name("example_s3_access")
                     .user(example.name())
                     .policy(exampleBucket.arn().applyValue(_arn -> serializeJson(
                         jsonObject(
                             jsonProperty("Version", "2012-10-17"),
                             jsonProperty("Statement", jsonArray(jsonObject(
                                 jsonProperty("Action", "s3:GetObject"),
                                 jsonProperty("Effect", "Allow"),
                                 jsonProperty("Resource", _arn)
                             )))
                         ))))
                     .build());
         
                 var accountAccess = new BucketPolicy("accountAccess", BucketPolicyArgs.builder()
                     .bucket(exampleBucket.bucket())
                     .policy(exampleBucket.arn().applyValue(_arn -> serializeJson(
                         jsonObject(
                             jsonProperty("Version", "2012-10-17"),
                             jsonProperty("Statement", jsonArray(jsonObject(
                                 jsonProperty("Action", "s3:*"),
                                 jsonProperty("Effect", "Allow"),
                                 jsonProperty("Principal", jsonObject(
                                     jsonProperty("AWS", current.accountId())
                                 )),
                                 jsonProperty("Resource", jsonArray(
                                     _arn, 
                                     String.format("%s/*", _arn)
                                 ))
                             )))
                         ))))
                     .build());
         
                 final var s3ObjectAccess = IamFunctions.getPrincipalPolicySimulation(GetPrincipalPolicySimulationArgs.builder()
                     .actionNames("s3:GetObject")
                     .policySourceArn(example.arn())
                     .resourceArns(exampleBucket.arn())
                     .resourcePolicyJson(accountAccess.policy())
                     .build());
         
             }
         }
         
         
        When using `aws.iam.getPrincipalPolicySimulation` to test the effect of a policy declared elsewhere in the same configuration, it's important to use `dependsOn` to make sure that the needed policy has been fully created or updated before running the simulation.
      • getPrincipalPolicySimulationPlain

        public static java.util.concurrent.CompletableFuture<GetPrincipalPolicySimulationInvokeResult> getPrincipalPolicySimulationPlain​(GetPrincipalPolicySimulationPlainArgs args)
        Runs a simulation of the IAM policies of a particular principal against a given hypothetical request. You can use this data source in conjunction with Preconditions and Postconditions so that your configuration can test either whether it should have sufficient access to do its own work, or whether policies your configuration declares itself are sufficient for their intended use elsewhere. > **Note:** Correctly using this data source requires familiarity with various details of AWS Identity and Access Management, and how various AWS services integrate with it. For general information on the AWS IAM policy simulator, see [Testing IAM policies with the IAM policy simulator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html). This data source wraps the `iam:SimulatePrincipalPolicy` API action described on that page. ## Example Usage ### Self Access-checking Example The following example raises an error if the credentials passed to the AWS provider do not have access to perform the three actions `s3:GetObject`, `s3:PutObject`, and `s3:DeleteObject` on the S3 bucket with the given ARN.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPrincipalPolicySimulationArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 final var s3ObjectAccess = IamFunctions.getPrincipalPolicySimulation(GetPrincipalPolicySimulationArgs.builder()
                     .actionNames(            
                         "s3:GetObject",
                         "s3:PutObject",
                         "s3:DeleteObject")
                     .policySourceArn(current.arn())
                     .resourceArns("arn:aws:s3:::my-test-bucket")
                     .build());
         
             }
         }
         
         
        If you intend to use this data source to quickly raise an error when the given credentials are insufficient then you must use `dependsOn` inside any resource which would require those credentials, to ensure that the policy check will run first:
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.s3.BucketObjectv2;
         import com.pulumi.aws.s3.BucketObjectv2Args;
         import com.pulumi.resources.CustomResourceOptions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 var example = new BucketObjectv2("example", BucketObjectv2Args.builder()
                     .bucket("my-test-bucket")
                     .build(), CustomResourceOptions.builder()
                         .dependsOn(s3ObjectAccess)
                         .build());
         
             }
         }
         
         
        ### Testing the Effect of a Declared Policy The following example declares an S3 bucket and a user that should have access to the bucket, and then uses `aws.iam.getPrincipalPolicySimulation` to verify that the user does indeed have access to perform needed operations against the bucket.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.User;
         import com.pulumi.aws.iam.UserArgs;
         import com.pulumi.aws.s3.Bucket;
         import com.pulumi.aws.s3.BucketArgs;
         import com.pulumi.aws.iam.UserPolicy;
         import com.pulumi.aws.iam.UserPolicyArgs;
         import com.pulumi.aws.s3.BucketPolicy;
         import com.pulumi.aws.s3.BucketPolicyArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPrincipalPolicySimulationArgs;
         import static com.pulumi.codegen.internal.Serialization.*;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 var example = new User("example", UserArgs.builder()
                     .name("example")
                     .build());
         
                 var exampleBucket = new Bucket("exampleBucket", BucketArgs.builder()
                     .bucket("my-test-bucket")
                     .build());
         
                 var s3Access = new UserPolicy("s3Access", UserPolicyArgs.builder()
                     .name("example_s3_access")
                     .user(example.name())
                     .policy(exampleBucket.arn().applyValue(_arn -> serializeJson(
                         jsonObject(
                             jsonProperty("Version", "2012-10-17"),
                             jsonProperty("Statement", jsonArray(jsonObject(
                                 jsonProperty("Action", "s3:GetObject"),
                                 jsonProperty("Effect", "Allow"),
                                 jsonProperty("Resource", _arn)
                             )))
                         ))))
                     .build());
         
                 var accountAccess = new BucketPolicy("accountAccess", BucketPolicyArgs.builder()
                     .bucket(exampleBucket.bucket())
                     .policy(exampleBucket.arn().applyValue(_arn -> serializeJson(
                         jsonObject(
                             jsonProperty("Version", "2012-10-17"),
                             jsonProperty("Statement", jsonArray(jsonObject(
                                 jsonProperty("Action", "s3:*"),
                                 jsonProperty("Effect", "Allow"),
                                 jsonProperty("Principal", jsonObject(
                                     jsonProperty("AWS", current.accountId())
                                 )),
                                 jsonProperty("Resource", jsonArray(
                                     _arn, 
                                     String.format("%s/*", _arn)
                                 ))
                             )))
                         ))))
                     .build());
         
                 final var s3ObjectAccess = IamFunctions.getPrincipalPolicySimulation(GetPrincipalPolicySimulationArgs.builder()
                     .actionNames("s3:GetObject")
                     .policySourceArn(example.arn())
                     .resourceArns(exampleBucket.arn())
                     .resourcePolicyJson(accountAccess.policy())
                     .build());
         
             }
         }
         
         
        When using `aws.iam.getPrincipalPolicySimulation` to test the effect of a policy declared elsewhere in the same configuration, it's important to use `dependsOn` to make sure that the needed policy has been fully created or updated before running the simulation.
      • getPrincipalPolicySimulation

        public static com.pulumi.core.Output<GetPrincipalPolicySimulationInvokeResult> getPrincipalPolicySimulation​(GetPrincipalPolicySimulationArgs args,
                                                                                                                    com.pulumi.deployment.InvokeOptions options)
        Runs a simulation of the IAM policies of a particular principal against a given hypothetical request. You can use this data source in conjunction with Preconditions and Postconditions so that your configuration can test either whether it should have sufficient access to do its own work, or whether policies your configuration declares itself are sufficient for their intended use elsewhere. > **Note:** Correctly using this data source requires familiarity with various details of AWS Identity and Access Management, and how various AWS services integrate with it. For general information on the AWS IAM policy simulator, see [Testing IAM policies with the IAM policy simulator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html). This data source wraps the `iam:SimulatePrincipalPolicy` API action described on that page. ## Example Usage ### Self Access-checking Example The following example raises an error if the credentials passed to the AWS provider do not have access to perform the three actions `s3:GetObject`, `s3:PutObject`, and `s3:DeleteObject` on the S3 bucket with the given ARN.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPrincipalPolicySimulationArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 final var s3ObjectAccess = IamFunctions.getPrincipalPolicySimulation(GetPrincipalPolicySimulationArgs.builder()
                     .actionNames(            
                         "s3:GetObject",
                         "s3:PutObject",
                         "s3:DeleteObject")
                     .policySourceArn(current.arn())
                     .resourceArns("arn:aws:s3:::my-test-bucket")
                     .build());
         
             }
         }
         
         
        If you intend to use this data source to quickly raise an error when the given credentials are insufficient then you must use `dependsOn` inside any resource which would require those credentials, to ensure that the policy check will run first:
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.s3.BucketObjectv2;
         import com.pulumi.aws.s3.BucketObjectv2Args;
         import com.pulumi.resources.CustomResourceOptions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 var example = new BucketObjectv2("example", BucketObjectv2Args.builder()
                     .bucket("my-test-bucket")
                     .build(), CustomResourceOptions.builder()
                         .dependsOn(s3ObjectAccess)
                         .build());
         
             }
         }
         
         
        ### Testing the Effect of a Declared Policy The following example declares an S3 bucket and a user that should have access to the bucket, and then uses `aws.iam.getPrincipalPolicySimulation` to verify that the user does indeed have access to perform needed operations against the bucket.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.User;
         import com.pulumi.aws.iam.UserArgs;
         import com.pulumi.aws.s3.Bucket;
         import com.pulumi.aws.s3.BucketArgs;
         import com.pulumi.aws.iam.UserPolicy;
         import com.pulumi.aws.iam.UserPolicyArgs;
         import com.pulumi.aws.s3.BucketPolicy;
         import com.pulumi.aws.s3.BucketPolicyArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPrincipalPolicySimulationArgs;
         import static com.pulumi.codegen.internal.Serialization.*;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 var example = new User("example", UserArgs.builder()
                     .name("example")
                     .build());
         
                 var exampleBucket = new Bucket("exampleBucket", BucketArgs.builder()
                     .bucket("my-test-bucket")
                     .build());
         
                 var s3Access = new UserPolicy("s3Access", UserPolicyArgs.builder()
                     .name("example_s3_access")
                     .user(example.name())
                     .policy(exampleBucket.arn().applyValue(_arn -> serializeJson(
                         jsonObject(
                             jsonProperty("Version", "2012-10-17"),
                             jsonProperty("Statement", jsonArray(jsonObject(
                                 jsonProperty("Action", "s3:GetObject"),
                                 jsonProperty("Effect", "Allow"),
                                 jsonProperty("Resource", _arn)
                             )))
                         ))))
                     .build());
         
                 var accountAccess = new BucketPolicy("accountAccess", BucketPolicyArgs.builder()
                     .bucket(exampleBucket.bucket())
                     .policy(exampleBucket.arn().applyValue(_arn -> serializeJson(
                         jsonObject(
                             jsonProperty("Version", "2012-10-17"),
                             jsonProperty("Statement", jsonArray(jsonObject(
                                 jsonProperty("Action", "s3:*"),
                                 jsonProperty("Effect", "Allow"),
                                 jsonProperty("Principal", jsonObject(
                                     jsonProperty("AWS", current.accountId())
                                 )),
                                 jsonProperty("Resource", jsonArray(
                                     _arn, 
                                     String.format("%s/*", _arn)
                                 ))
                             )))
                         ))))
                     .build());
         
                 final var s3ObjectAccess = IamFunctions.getPrincipalPolicySimulation(GetPrincipalPolicySimulationArgs.builder()
                     .actionNames("s3:GetObject")
                     .policySourceArn(example.arn())
                     .resourceArns(exampleBucket.arn())
                     .resourcePolicyJson(accountAccess.policy())
                     .build());
         
             }
         }
         
         
        When using `aws.iam.getPrincipalPolicySimulation` to test the effect of a policy declared elsewhere in the same configuration, it's important to use `dependsOn` to make sure that the needed policy has been fully created or updated before running the simulation.
      • getPrincipalPolicySimulation

        public static com.pulumi.core.Output<GetPrincipalPolicySimulationInvokeResult> getPrincipalPolicySimulation​(GetPrincipalPolicySimulationArgs args,
                                                                                                                    com.pulumi.deployment.InvokeOutputOptions options)
        Runs a simulation of the IAM policies of a particular principal against a given hypothetical request. You can use this data source in conjunction with Preconditions and Postconditions so that your configuration can test either whether it should have sufficient access to do its own work, or whether policies your configuration declares itself are sufficient for their intended use elsewhere. > **Note:** Correctly using this data source requires familiarity with various details of AWS Identity and Access Management, and how various AWS services integrate with it. For general information on the AWS IAM policy simulator, see [Testing IAM policies with the IAM policy simulator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html). This data source wraps the `iam:SimulatePrincipalPolicy` API action described on that page. ## Example Usage ### Self Access-checking Example The following example raises an error if the credentials passed to the AWS provider do not have access to perform the three actions `s3:GetObject`, `s3:PutObject`, and `s3:DeleteObject` on the S3 bucket with the given ARN.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPrincipalPolicySimulationArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 final var s3ObjectAccess = IamFunctions.getPrincipalPolicySimulation(GetPrincipalPolicySimulationArgs.builder()
                     .actionNames(            
                         "s3:GetObject",
                         "s3:PutObject",
                         "s3:DeleteObject")
                     .policySourceArn(current.arn())
                     .resourceArns("arn:aws:s3:::my-test-bucket")
                     .build());
         
             }
         }
         
         
        If you intend to use this data source to quickly raise an error when the given credentials are insufficient then you must use `dependsOn` inside any resource which would require those credentials, to ensure that the policy check will run first:
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.s3.BucketObjectv2;
         import com.pulumi.aws.s3.BucketObjectv2Args;
         import com.pulumi.resources.CustomResourceOptions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 var example = new BucketObjectv2("example", BucketObjectv2Args.builder()
                     .bucket("my-test-bucket")
                     .build(), CustomResourceOptions.builder()
                         .dependsOn(s3ObjectAccess)
                         .build());
         
             }
         }
         
         
        ### Testing the Effect of a Declared Policy The following example declares an S3 bucket and a user that should have access to the bucket, and then uses `aws.iam.getPrincipalPolicySimulation` to verify that the user does indeed have access to perform needed operations against the bucket.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.User;
         import com.pulumi.aws.iam.UserArgs;
         import com.pulumi.aws.s3.Bucket;
         import com.pulumi.aws.s3.BucketArgs;
         import com.pulumi.aws.iam.UserPolicy;
         import com.pulumi.aws.iam.UserPolicyArgs;
         import com.pulumi.aws.s3.BucketPolicy;
         import com.pulumi.aws.s3.BucketPolicyArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPrincipalPolicySimulationArgs;
         import static com.pulumi.codegen.internal.Serialization.*;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 var example = new User("example", UserArgs.builder()
                     .name("example")
                     .build());
         
                 var exampleBucket = new Bucket("exampleBucket", BucketArgs.builder()
                     .bucket("my-test-bucket")
                     .build());
         
                 var s3Access = new UserPolicy("s3Access", UserPolicyArgs.builder()
                     .name("example_s3_access")
                     .user(example.name())
                     .policy(exampleBucket.arn().applyValue(_arn -> serializeJson(
                         jsonObject(
                             jsonProperty("Version", "2012-10-17"),
                             jsonProperty("Statement", jsonArray(jsonObject(
                                 jsonProperty("Action", "s3:GetObject"),
                                 jsonProperty("Effect", "Allow"),
                                 jsonProperty("Resource", _arn)
                             )))
                         ))))
                     .build());
         
                 var accountAccess = new BucketPolicy("accountAccess", BucketPolicyArgs.builder()
                     .bucket(exampleBucket.bucket())
                     .policy(exampleBucket.arn().applyValue(_arn -> serializeJson(
                         jsonObject(
                             jsonProperty("Version", "2012-10-17"),
                             jsonProperty("Statement", jsonArray(jsonObject(
                                 jsonProperty("Action", "s3:*"),
                                 jsonProperty("Effect", "Allow"),
                                 jsonProperty("Principal", jsonObject(
                                     jsonProperty("AWS", current.accountId())
                                 )),
                                 jsonProperty("Resource", jsonArray(
                                     _arn, 
                                     String.format("%s/*", _arn)
                                 ))
                             )))
                         ))))
                     .build());
         
                 final var s3ObjectAccess = IamFunctions.getPrincipalPolicySimulation(GetPrincipalPolicySimulationArgs.builder()
                     .actionNames("s3:GetObject")
                     .policySourceArn(example.arn())
                     .resourceArns(exampleBucket.arn())
                     .resourcePolicyJson(accountAccess.policy())
                     .build());
         
             }
         }
         
         
        When using `aws.iam.getPrincipalPolicySimulation` to test the effect of a policy declared elsewhere in the same configuration, it's important to use `dependsOn` to make sure that the needed policy has been fully created or updated before running the simulation.
      • getPrincipalPolicySimulationPlain

        public static java.util.concurrent.CompletableFuture<GetPrincipalPolicySimulationInvokeResult> getPrincipalPolicySimulationPlain​(GetPrincipalPolicySimulationPlainArgs args,
                                                                                                                                         com.pulumi.deployment.InvokeOptions options)
        Runs a simulation of the IAM policies of a particular principal against a given hypothetical request. You can use this data source in conjunction with Preconditions and Postconditions so that your configuration can test either whether it should have sufficient access to do its own work, or whether policies your configuration declares itself are sufficient for their intended use elsewhere. > **Note:** Correctly using this data source requires familiarity with various details of AWS Identity and Access Management, and how various AWS services integrate with it. For general information on the AWS IAM policy simulator, see [Testing IAM policies with the IAM policy simulator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html). This data source wraps the `iam:SimulatePrincipalPolicy` API action described on that page. ## Example Usage ### Self Access-checking Example The following example raises an error if the credentials passed to the AWS provider do not have access to perform the three actions `s3:GetObject`, `s3:PutObject`, and `s3:DeleteObject` on the S3 bucket with the given ARN.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPrincipalPolicySimulationArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 final var s3ObjectAccess = IamFunctions.getPrincipalPolicySimulation(GetPrincipalPolicySimulationArgs.builder()
                     .actionNames(            
                         "s3:GetObject",
                         "s3:PutObject",
                         "s3:DeleteObject")
                     .policySourceArn(current.arn())
                     .resourceArns("arn:aws:s3:::my-test-bucket")
                     .build());
         
             }
         }
         
         
        If you intend to use this data source to quickly raise an error when the given credentials are insufficient then you must use `dependsOn` inside any resource which would require those credentials, to ensure that the policy check will run first:
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.s3.BucketObjectv2;
         import com.pulumi.aws.s3.BucketObjectv2Args;
         import com.pulumi.resources.CustomResourceOptions;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 var example = new BucketObjectv2("example", BucketObjectv2Args.builder()
                     .bucket("my-test-bucket")
                     .build(), CustomResourceOptions.builder()
                         .dependsOn(s3ObjectAccess)
                         .build());
         
             }
         }
         
         
        ### Testing the Effect of a Declared Policy The following example declares an S3 bucket and a user that should have access to the bucket, and then uses `aws.iam.getPrincipalPolicySimulation` to verify that the user does indeed have access to perform needed operations against the bucket.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.User;
         import com.pulumi.aws.iam.UserArgs;
         import com.pulumi.aws.s3.Bucket;
         import com.pulumi.aws.s3.BucketArgs;
         import com.pulumi.aws.iam.UserPolicy;
         import com.pulumi.aws.iam.UserPolicyArgs;
         import com.pulumi.aws.s3.BucketPolicy;
         import com.pulumi.aws.s3.BucketPolicyArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetPrincipalPolicySimulationArgs;
         import static com.pulumi.codegen.internal.Serialization.*;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 var example = new User("example", UserArgs.builder()
                     .name("example")
                     .build());
         
                 var exampleBucket = new Bucket("exampleBucket", BucketArgs.builder()
                     .bucket("my-test-bucket")
                     .build());
         
                 var s3Access = new UserPolicy("s3Access", UserPolicyArgs.builder()
                     .name("example_s3_access")
                     .user(example.name())
                     .policy(exampleBucket.arn().applyValue(_arn -> serializeJson(
                         jsonObject(
                             jsonProperty("Version", "2012-10-17"),
                             jsonProperty("Statement", jsonArray(jsonObject(
                                 jsonProperty("Action", "s3:GetObject"),
                                 jsonProperty("Effect", "Allow"),
                                 jsonProperty("Resource", _arn)
                             )))
                         ))))
                     .build());
         
                 var accountAccess = new BucketPolicy("accountAccess", BucketPolicyArgs.builder()
                     .bucket(exampleBucket.bucket())
                     .policy(exampleBucket.arn().applyValue(_arn -> serializeJson(
                         jsonObject(
                             jsonProperty("Version", "2012-10-17"),
                             jsonProperty("Statement", jsonArray(jsonObject(
                                 jsonProperty("Action", "s3:*"),
                                 jsonProperty("Effect", "Allow"),
                                 jsonProperty("Principal", jsonObject(
                                     jsonProperty("AWS", current.accountId())
                                 )),
                                 jsonProperty("Resource", jsonArray(
                                     _arn, 
                                     String.format("%s/*", _arn)
                                 ))
                             )))
                         ))))
                     .build());
         
                 final var s3ObjectAccess = IamFunctions.getPrincipalPolicySimulation(GetPrincipalPolicySimulationArgs.builder()
                     .actionNames("s3:GetObject")
                     .policySourceArn(example.arn())
                     .resourceArns(exampleBucket.arn())
                     .resourcePolicyJson(accountAccess.policy())
                     .build());
         
             }
         }
         
         
        When using `aws.iam.getPrincipalPolicySimulation` to test the effect of a policy declared elsewhere in the same configuration, it's important to use `dependsOn` to make sure that the needed policy has been fully created or updated before running the simulation.
      • getRole

        public static com.pulumi.core.Output<GetRoleResult> getRole​(GetRoleArgs args)
        This data source can be used to fetch information about a specific IAM role. By using this data source, you can reference IAM role properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRoleArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRole(GetRoleArgs.builder()
                     .name("an_example_role_name")
                     .build());
         
             }
         }
         
         
      • getRolePlain

        public static java.util.concurrent.CompletableFuture<GetRoleResult> getRolePlain​(GetRolePlainArgs args)
        This data source can be used to fetch information about a specific IAM role. By using this data source, you can reference IAM role properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRoleArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRole(GetRoleArgs.builder()
                     .name("an_example_role_name")
                     .build());
         
             }
         }
         
         
      • getRole

        public static com.pulumi.core.Output<GetRoleResult> getRole​(GetRoleArgs args,
                                                                    com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM role. By using this data source, you can reference IAM role properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRoleArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRole(GetRoleArgs.builder()
                     .name("an_example_role_name")
                     .build());
         
             }
         }
         
         
      • getRole

        public static com.pulumi.core.Output<GetRoleResult> getRole​(GetRoleArgs args,
                                                                    com.pulumi.deployment.InvokeOutputOptions options)
        This data source can be used to fetch information about a specific IAM role. By using this data source, you can reference IAM role properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRoleArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRole(GetRoleArgs.builder()
                     .name("an_example_role_name")
                     .build());
         
             }
         }
         
         
      • getRolePlain

        public static java.util.concurrent.CompletableFuture<GetRoleResult> getRolePlain​(GetRolePlainArgs args,
                                                                                         com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM role. By using this data source, you can reference IAM role properties without having to hard code ARNs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRoleArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRole(GetRoleArgs.builder()
                     .name("an_example_role_name")
                     .build());
         
             }
         }
         
         
      • getRolePolicies

        public static com.pulumi.core.Output<GetRolePoliciesResult> getRolePolicies​(GetRolePoliciesArgs args)
        Use this data source to get the names of inline policies associated with an IAM role. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolePoliciesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRolePolicies(GetRolePoliciesArgs.builder()
                     .roleName("my-role-name")
                     .build());
         
             }
         }
         
         
      • getRolePoliciesPlain

        public static java.util.concurrent.CompletableFuture<GetRolePoliciesResult> getRolePoliciesPlain​(GetRolePoliciesPlainArgs args)
        Use this data source to get the names of inline policies associated with an IAM role. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolePoliciesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRolePolicies(GetRolePoliciesArgs.builder()
                     .roleName("my-role-name")
                     .build());
         
             }
         }
         
         
      • getRolePolicies

        public static com.pulumi.core.Output<GetRolePoliciesResult> getRolePolicies​(GetRolePoliciesArgs args,
                                                                                    com.pulumi.deployment.InvokeOptions options)
        Use this data source to get the names of inline policies associated with an IAM role. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolePoliciesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRolePolicies(GetRolePoliciesArgs.builder()
                     .roleName("my-role-name")
                     .build());
         
             }
         }
         
         
      • getRolePolicies

        public static com.pulumi.core.Output<GetRolePoliciesResult> getRolePolicies​(GetRolePoliciesArgs args,
                                                                                    com.pulumi.deployment.InvokeOutputOptions options)
        Use this data source to get the names of inline policies associated with an IAM role. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolePoliciesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRolePolicies(GetRolePoliciesArgs.builder()
                     .roleName("my-role-name")
                     .build());
         
             }
         }
         
         
      • getRolePoliciesPlain

        public static java.util.concurrent.CompletableFuture<GetRolePoliciesResult> getRolePoliciesPlain​(GetRolePoliciesPlainArgs args,
                                                                                                         com.pulumi.deployment.InvokeOptions options)
        Use this data source to get the names of inline policies associated with an IAM role. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolePoliciesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRolePolicies(GetRolePoliciesArgs.builder()
                     .roleName("my-role-name")
                     .build());
         
             }
         }
         
         
      • getRolePolicyAttachments

        public static com.pulumi.core.Output<GetRolePolicyAttachmentsResult> getRolePolicyAttachments​(GetRolePolicyAttachmentsArgs args)
        Provides details about the managed policies attached to an AWS IAM Role. ## Example Usage ### Basic Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolePolicyAttachmentsArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRolePolicyAttachments(GetRolePolicyAttachmentsArgs.builder()
                     .roleName("example-role")
                     .build());
         
             }
         }
         
         
      • getRolePolicyAttachmentsPlain

        public static java.util.concurrent.CompletableFuture<GetRolePolicyAttachmentsResult> getRolePolicyAttachmentsPlain​(GetRolePolicyAttachmentsPlainArgs args)
        Provides details about the managed policies attached to an AWS IAM Role. ## Example Usage ### Basic Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolePolicyAttachmentsArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRolePolicyAttachments(GetRolePolicyAttachmentsArgs.builder()
                     .roleName("example-role")
                     .build());
         
             }
         }
         
         
      • getRolePolicyAttachments

        public static com.pulumi.core.Output<GetRolePolicyAttachmentsResult> getRolePolicyAttachments​(GetRolePolicyAttachmentsArgs args,
                                                                                                      com.pulumi.deployment.InvokeOptions options)
        Provides details about the managed policies attached to an AWS IAM Role. ## Example Usage ### Basic Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolePolicyAttachmentsArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRolePolicyAttachments(GetRolePolicyAttachmentsArgs.builder()
                     .roleName("example-role")
                     .build());
         
             }
         }
         
         
      • getRolePolicyAttachments

        public static com.pulumi.core.Output<GetRolePolicyAttachmentsResult> getRolePolicyAttachments​(GetRolePolicyAttachmentsArgs args,
                                                                                                      com.pulumi.deployment.InvokeOutputOptions options)
        Provides details about the managed policies attached to an AWS IAM Role. ## Example Usage ### Basic Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolePolicyAttachmentsArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRolePolicyAttachments(GetRolePolicyAttachmentsArgs.builder()
                     .roleName("example-role")
                     .build());
         
             }
         }
         
         
      • getRolePolicyAttachmentsPlain

        public static java.util.concurrent.CompletableFuture<GetRolePolicyAttachmentsResult> getRolePolicyAttachmentsPlain​(GetRolePolicyAttachmentsPlainArgs args,
                                                                                                                           com.pulumi.deployment.InvokeOptions options)
        Provides details about the managed policies attached to an AWS IAM Role. ## Example Usage ### Basic Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolePolicyAttachmentsArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getRolePolicyAttachments(GetRolePolicyAttachmentsArgs.builder()
                     .roleName("example-role")
                     .build());
         
             }
         }
         
         
      • getRoles

        public static com.pulumi.core.Output<GetRolesResult> getRoles()
        Use this data source to get the ARNs and Names of IAM Roles. ## Example Usage ### All roles in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Roles filtered by name regex Roles whose role-name contains `project`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex(".*project.*")
                     .build());
         
             }
         }
         
         
        ### Roles filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
        ### Roles provisioned by AWS SSO Roles in the account filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
        Specific role in the account filtered by name regex and path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex("AWSReservedSSO_permission_set_name_.*")
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
      • getRolesPlain

        public static java.util.concurrent.CompletableFuture<GetRolesResult> getRolesPlain()
        Use this data source to get the ARNs and Names of IAM Roles. ## Example Usage ### All roles in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Roles filtered by name regex Roles whose role-name contains `project`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex(".*project.*")
                     .build());
         
             }
         }
         
         
        ### Roles filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
        ### Roles provisioned by AWS SSO Roles in the account filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
        Specific role in the account filtered by name regex and path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex("AWSReservedSSO_permission_set_name_.*")
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
      • getRoles

        public static com.pulumi.core.Output<GetRolesResult> getRoles​(GetRolesArgs args)
        Use this data source to get the ARNs and Names of IAM Roles. ## Example Usage ### All roles in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Roles filtered by name regex Roles whose role-name contains `project`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex(".*project.*")
                     .build());
         
             }
         }
         
         
        ### Roles filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
        ### Roles provisioned by AWS SSO Roles in the account filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
        Specific role in the account filtered by name regex and path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex("AWSReservedSSO_permission_set_name_.*")
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
      • getRolesPlain

        public static java.util.concurrent.CompletableFuture<GetRolesResult> getRolesPlain​(GetRolesPlainArgs args)
        Use this data source to get the ARNs and Names of IAM Roles. ## Example Usage ### All roles in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Roles filtered by name regex Roles whose role-name contains `project`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex(".*project.*")
                     .build());
         
             }
         }
         
         
        ### Roles filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
        ### Roles provisioned by AWS SSO Roles in the account filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
        Specific role in the account filtered by name regex and path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex("AWSReservedSSO_permission_set_name_.*")
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
      • getRoles

        public static com.pulumi.core.Output<GetRolesResult> getRoles​(GetRolesArgs args,
                                                                      com.pulumi.deployment.InvokeOptions options)
        Use this data source to get the ARNs and Names of IAM Roles. ## Example Usage ### All roles in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Roles filtered by name regex Roles whose role-name contains `project`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex(".*project.*")
                     .build());
         
             }
         }
         
         
        ### Roles filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
        ### Roles provisioned by AWS SSO Roles in the account filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
        Specific role in the account filtered by name regex and path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex("AWSReservedSSO_permission_set_name_.*")
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
      • getRoles

        public static com.pulumi.core.Output<GetRolesResult> getRoles​(GetRolesArgs args,
                                                                      com.pulumi.deployment.InvokeOutputOptions options)
        Use this data source to get the ARNs and Names of IAM Roles. ## Example Usage ### All roles in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Roles filtered by name regex Roles whose role-name contains `project`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex(".*project.*")
                     .build());
         
             }
         }
         
         
        ### Roles filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
        ### Roles provisioned by AWS SSO Roles in the account filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
        Specific role in the account filtered by name regex and path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex("AWSReservedSSO_permission_set_name_.*")
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
      • getRolesPlain

        public static java.util.concurrent.CompletableFuture<GetRolesResult> getRolesPlain​(GetRolesPlainArgs args,
                                                                                           com.pulumi.deployment.InvokeOptions options)
        Use this data source to get the ARNs and Names of IAM Roles. ## Example Usage ### All roles in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Roles filtered by name regex Roles whose role-name contains `project`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex(".*project.*")
                     .build());
         
             }
         }
         
         
        ### Roles filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
        ### Roles provisioned by AWS SSO Roles in the account filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
        Specific role in the account filtered by name regex and path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetRolesArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var roles = IamFunctions.getRoles(GetRolesArgs.builder()
                     .nameRegex("AWSReservedSSO_permission_set_name_.*")
                     .pathPrefix("/aws-reserved/sso.amazonaws.com/")
                     .build());
         
             }
         }
         
         
      • getSamlProvider

        public static com.pulumi.core.Output<GetSamlProviderResult> getSamlProvider​(GetSamlProviderArgs args)
        This data source can be used to fetch information about a specific IAM SAML provider. This will allow you to easily retrieve the metadata document of an existing SAML provider. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSamlProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getSamlProvider(GetSamlProviderArgs.builder()
                     .arn("arn:aws:iam::123456789:saml-provider/myprovider")
                     .build());
         
             }
         }
         
         
      • getSamlProviderPlain

        public static java.util.concurrent.CompletableFuture<GetSamlProviderResult> getSamlProviderPlain​(GetSamlProviderPlainArgs args)
        This data source can be used to fetch information about a specific IAM SAML provider. This will allow you to easily retrieve the metadata document of an existing SAML provider. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSamlProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getSamlProvider(GetSamlProviderArgs.builder()
                     .arn("arn:aws:iam::123456789:saml-provider/myprovider")
                     .build());
         
             }
         }
         
         
      • getSamlProvider

        public static com.pulumi.core.Output<GetSamlProviderResult> getSamlProvider​(GetSamlProviderArgs args,
                                                                                    com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM SAML provider. This will allow you to easily retrieve the metadata document of an existing SAML provider. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSamlProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getSamlProvider(GetSamlProviderArgs.builder()
                     .arn("arn:aws:iam::123456789:saml-provider/myprovider")
                     .build());
         
             }
         }
         
         
      • getSamlProvider

        public static com.pulumi.core.Output<GetSamlProviderResult> getSamlProvider​(GetSamlProviderArgs args,
                                                                                    com.pulumi.deployment.InvokeOutputOptions options)
        This data source can be used to fetch information about a specific IAM SAML provider. This will allow you to easily retrieve the metadata document of an existing SAML provider. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSamlProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getSamlProvider(GetSamlProviderArgs.builder()
                     .arn("arn:aws:iam::123456789:saml-provider/myprovider")
                     .build());
         
             }
         }
         
         
      • getSamlProviderPlain

        public static java.util.concurrent.CompletableFuture<GetSamlProviderResult> getSamlProviderPlain​(GetSamlProviderPlainArgs args,
                                                                                                         com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM SAML provider. This will allow you to easily retrieve the metadata document of an existing SAML provider. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSamlProviderArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getSamlProvider(GetSamlProviderArgs.builder()
                     .arn("arn:aws:iam::123456789:saml-provider/myprovider")
                     .build());
         
             }
         }
         
         
      • getServerCertificate

        public static com.pulumi.core.Output<GetServerCertificateResult> getServerCertificate()
        Use this data source to lookup information about IAM Server Certificates. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetServerCertificateArgs;
         import com.pulumi.aws.elb.LoadBalancer;
         import com.pulumi.aws.elb.LoadBalancerArgs;
         import com.pulumi.aws.elb.inputs.LoadBalancerListenerArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var my-domain = IamFunctions.getServerCertificate(GetServerCertificateArgs.builder()
                     .namePrefix("my-domain.org")
                     .latest(true)
                     .build());
         
                 var elb = new LoadBalancer("elb", LoadBalancerArgs.builder()
                     .listeners(LoadBalancerListenerArgs.builder()
                         .instancePort(8000)
                         .instanceProtocol("https")
                         .lbPort(443)
                         .lbProtocol("https")
                         .sslCertificateId(my_domain.arn())
                         .build())
                     .name("my-domain-elb")
                     .build());
         
             }
         }
         
         
      • getServerCertificatePlain

        public static java.util.concurrent.CompletableFuture<GetServerCertificateResult> getServerCertificatePlain()
        Use this data source to lookup information about IAM Server Certificates. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetServerCertificateArgs;
         import com.pulumi.aws.elb.LoadBalancer;
         import com.pulumi.aws.elb.LoadBalancerArgs;
         import com.pulumi.aws.elb.inputs.LoadBalancerListenerArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var my-domain = IamFunctions.getServerCertificate(GetServerCertificateArgs.builder()
                     .namePrefix("my-domain.org")
                     .latest(true)
                     .build());
         
                 var elb = new LoadBalancer("elb", LoadBalancerArgs.builder()
                     .listeners(LoadBalancerListenerArgs.builder()
                         .instancePort(8000)
                         .instanceProtocol("https")
                         .lbPort(443)
                         .lbProtocol("https")
                         .sslCertificateId(my_domain.arn())
                         .build())
                     .name("my-domain-elb")
                     .build());
         
             }
         }
         
         
      • getServerCertificate

        public static com.pulumi.core.Output<GetServerCertificateResult> getServerCertificate​(GetServerCertificateArgs args)
        Use this data source to lookup information about IAM Server Certificates. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetServerCertificateArgs;
         import com.pulumi.aws.elb.LoadBalancer;
         import com.pulumi.aws.elb.LoadBalancerArgs;
         import com.pulumi.aws.elb.inputs.LoadBalancerListenerArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var my-domain = IamFunctions.getServerCertificate(GetServerCertificateArgs.builder()
                     .namePrefix("my-domain.org")
                     .latest(true)
                     .build());
         
                 var elb = new LoadBalancer("elb", LoadBalancerArgs.builder()
                     .listeners(LoadBalancerListenerArgs.builder()
                         .instancePort(8000)
                         .instanceProtocol("https")
                         .lbPort(443)
                         .lbProtocol("https")
                         .sslCertificateId(my_domain.arn())
                         .build())
                     .name("my-domain-elb")
                     .build());
         
             }
         }
         
         
      • getServerCertificatePlain

        public static java.util.concurrent.CompletableFuture<GetServerCertificateResult> getServerCertificatePlain​(GetServerCertificatePlainArgs args)
        Use this data source to lookup information about IAM Server Certificates. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetServerCertificateArgs;
         import com.pulumi.aws.elb.LoadBalancer;
         import com.pulumi.aws.elb.LoadBalancerArgs;
         import com.pulumi.aws.elb.inputs.LoadBalancerListenerArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var my-domain = IamFunctions.getServerCertificate(GetServerCertificateArgs.builder()
                     .namePrefix("my-domain.org")
                     .latest(true)
                     .build());
         
                 var elb = new LoadBalancer("elb", LoadBalancerArgs.builder()
                     .listeners(LoadBalancerListenerArgs.builder()
                         .instancePort(8000)
                         .instanceProtocol("https")
                         .lbPort(443)
                         .lbProtocol("https")
                         .sslCertificateId(my_domain.arn())
                         .build())
                     .name("my-domain-elb")
                     .build());
         
             }
         }
         
         
      • getServerCertificate

        public static com.pulumi.core.Output<GetServerCertificateResult> getServerCertificate​(GetServerCertificateArgs args,
                                                                                              com.pulumi.deployment.InvokeOptions options)
        Use this data source to lookup information about IAM Server Certificates. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetServerCertificateArgs;
         import com.pulumi.aws.elb.LoadBalancer;
         import com.pulumi.aws.elb.LoadBalancerArgs;
         import com.pulumi.aws.elb.inputs.LoadBalancerListenerArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var my-domain = IamFunctions.getServerCertificate(GetServerCertificateArgs.builder()
                     .namePrefix("my-domain.org")
                     .latest(true)
                     .build());
         
                 var elb = new LoadBalancer("elb", LoadBalancerArgs.builder()
                     .listeners(LoadBalancerListenerArgs.builder()
                         .instancePort(8000)
                         .instanceProtocol("https")
                         .lbPort(443)
                         .lbProtocol("https")
                         .sslCertificateId(my_domain.arn())
                         .build())
                     .name("my-domain-elb")
                     .build());
         
             }
         }
         
         
      • getServerCertificate

        public static com.pulumi.core.Output<GetServerCertificateResult> getServerCertificate​(GetServerCertificateArgs args,
                                                                                              com.pulumi.deployment.InvokeOutputOptions options)
        Use this data source to lookup information about IAM Server Certificates. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetServerCertificateArgs;
         import com.pulumi.aws.elb.LoadBalancer;
         import com.pulumi.aws.elb.LoadBalancerArgs;
         import com.pulumi.aws.elb.inputs.LoadBalancerListenerArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var my-domain = IamFunctions.getServerCertificate(GetServerCertificateArgs.builder()
                     .namePrefix("my-domain.org")
                     .latest(true)
                     .build());
         
                 var elb = new LoadBalancer("elb", LoadBalancerArgs.builder()
                     .listeners(LoadBalancerListenerArgs.builder()
                         .instancePort(8000)
                         .instanceProtocol("https")
                         .lbPort(443)
                         .lbProtocol("https")
                         .sslCertificateId(my_domain.arn())
                         .build())
                     .name("my-domain-elb")
                     .build());
         
             }
         }
         
         
      • getServerCertificatePlain

        public static java.util.concurrent.CompletableFuture<GetServerCertificateResult> getServerCertificatePlain​(GetServerCertificatePlainArgs args,
                                                                                                                   com.pulumi.deployment.InvokeOptions options)
        Use this data source to lookup information about IAM Server Certificates. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetServerCertificateArgs;
         import com.pulumi.aws.elb.LoadBalancer;
         import com.pulumi.aws.elb.LoadBalancerArgs;
         import com.pulumi.aws.elb.inputs.LoadBalancerListenerArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var my-domain = IamFunctions.getServerCertificate(GetServerCertificateArgs.builder()
                     .namePrefix("my-domain.org")
                     .latest(true)
                     .build());
         
                 var elb = new LoadBalancer("elb", LoadBalancerArgs.builder()
                     .listeners(LoadBalancerListenerArgs.builder()
                         .instancePort(8000)
                         .instanceProtocol("https")
                         .lbPort(443)
                         .lbProtocol("https")
                         .sslCertificateId(my_domain.arn())
                         .build())
                     .name("my-domain-elb")
                     .build());
         
             }
         }
         
         
      • getSessionContext

        public static com.pulumi.core.Output<GetSessionContextResult> getSessionContext​(GetSessionContextArgs args)
        This data source provides information on the IAM source role of an STS assumed role. For non-role ARNs, this data source simply passes the ARN through in `issuerArn`. For some AWS resources, multiple types of principals are allowed in the same argument (e.g., IAM users and IAM roles). However, these arguments often do not allow assumed-role (i.e., STS, temporary credential) principals. Given an STS ARN, this data source provides the ARN for the source IAM role. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSessionContextArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getSessionContext(GetSessionContextArgs.builder()
                     .arn("arn:aws:sts::123456789012:assumed-role/Audien-Heaven/MatyNoyes")
                     .build());
         
             }
         }
         
         
        ### Find the Runner's Source Role Combined with `aws.getCallerIdentity`, you can get the current user's source IAM role ARN (`issuerArn`) if you're using an assumed role. If you're not using an assumed role, the caller's (e.g., an IAM user's) ARN will simply be passed through. In environments where both IAM users and individuals using assumed roles need to apply the same configurations, this data source enables seamless use.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSessionContextArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 final var example = IamFunctions.getSessionContext(GetSessionContextArgs.builder()
                     .arn(current.arn())
                     .build());
         
             }
         }
         
         
      • getSessionContextPlain

        public static java.util.concurrent.CompletableFuture<GetSessionContextResult> getSessionContextPlain​(GetSessionContextPlainArgs args)
        This data source provides information on the IAM source role of an STS assumed role. For non-role ARNs, this data source simply passes the ARN through in `issuerArn`. For some AWS resources, multiple types of principals are allowed in the same argument (e.g., IAM users and IAM roles). However, these arguments often do not allow assumed-role (i.e., STS, temporary credential) principals. Given an STS ARN, this data source provides the ARN for the source IAM role. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSessionContextArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getSessionContext(GetSessionContextArgs.builder()
                     .arn("arn:aws:sts::123456789012:assumed-role/Audien-Heaven/MatyNoyes")
                     .build());
         
             }
         }
         
         
        ### Find the Runner's Source Role Combined with `aws.getCallerIdentity`, you can get the current user's source IAM role ARN (`issuerArn`) if you're using an assumed role. If you're not using an assumed role, the caller's (e.g., an IAM user's) ARN will simply be passed through. In environments where both IAM users and individuals using assumed roles need to apply the same configurations, this data source enables seamless use.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSessionContextArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 final var example = IamFunctions.getSessionContext(GetSessionContextArgs.builder()
                     .arn(current.arn())
                     .build());
         
             }
         }
         
         
      • getSessionContext

        public static com.pulumi.core.Output<GetSessionContextResult> getSessionContext​(GetSessionContextArgs args,
                                                                                        com.pulumi.deployment.InvokeOptions options)
        This data source provides information on the IAM source role of an STS assumed role. For non-role ARNs, this data source simply passes the ARN through in `issuerArn`. For some AWS resources, multiple types of principals are allowed in the same argument (e.g., IAM users and IAM roles). However, these arguments often do not allow assumed-role (i.e., STS, temporary credential) principals. Given an STS ARN, this data source provides the ARN for the source IAM role. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSessionContextArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getSessionContext(GetSessionContextArgs.builder()
                     .arn("arn:aws:sts::123456789012:assumed-role/Audien-Heaven/MatyNoyes")
                     .build());
         
             }
         }
         
         
        ### Find the Runner's Source Role Combined with `aws.getCallerIdentity`, you can get the current user's source IAM role ARN (`issuerArn`) if you're using an assumed role. If you're not using an assumed role, the caller's (e.g., an IAM user's) ARN will simply be passed through. In environments where both IAM users and individuals using assumed roles need to apply the same configurations, this data source enables seamless use.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSessionContextArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 final var example = IamFunctions.getSessionContext(GetSessionContextArgs.builder()
                     .arn(current.arn())
                     .build());
         
             }
         }
         
         
      • getSessionContext

        public static com.pulumi.core.Output<GetSessionContextResult> getSessionContext​(GetSessionContextArgs args,
                                                                                        com.pulumi.deployment.InvokeOutputOptions options)
        This data source provides information on the IAM source role of an STS assumed role. For non-role ARNs, this data source simply passes the ARN through in `issuerArn`. For some AWS resources, multiple types of principals are allowed in the same argument (e.g., IAM users and IAM roles). However, these arguments often do not allow assumed-role (i.e., STS, temporary credential) principals. Given an STS ARN, this data source provides the ARN for the source IAM role. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSessionContextArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getSessionContext(GetSessionContextArgs.builder()
                     .arn("arn:aws:sts::123456789012:assumed-role/Audien-Heaven/MatyNoyes")
                     .build());
         
             }
         }
         
         
        ### Find the Runner's Source Role Combined with `aws.getCallerIdentity`, you can get the current user's source IAM role ARN (`issuerArn`) if you're using an assumed role. If you're not using an assumed role, the caller's (e.g., an IAM user's) ARN will simply be passed through. In environments where both IAM users and individuals using assumed roles need to apply the same configurations, this data source enables seamless use.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSessionContextArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 final var example = IamFunctions.getSessionContext(GetSessionContextArgs.builder()
                     .arn(current.arn())
                     .build());
         
             }
         }
         
         
      • getSessionContextPlain

        public static java.util.concurrent.CompletableFuture<GetSessionContextResult> getSessionContextPlain​(GetSessionContextPlainArgs args,
                                                                                                             com.pulumi.deployment.InvokeOptions options)
        This data source provides information on the IAM source role of an STS assumed role. For non-role ARNs, this data source simply passes the ARN through in `issuerArn`. For some AWS resources, multiple types of principals are allowed in the same argument (e.g., IAM users and IAM roles). However, these arguments often do not allow assumed-role (i.e., STS, temporary credential) principals. Given an STS ARN, this data source provides the ARN for the source IAM role. ## Example Usage ### Basic Example
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSessionContextArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getSessionContext(GetSessionContextArgs.builder()
                     .arn("arn:aws:sts::123456789012:assumed-role/Audien-Heaven/MatyNoyes")
                     .build());
         
             }
         }
         
         
        ### Find the Runner's Source Role Combined with `aws.getCallerIdentity`, you can get the current user's source IAM role ARN (`issuerArn`) if you're using an assumed role. If you're not using an assumed role, the caller's (e.g., an IAM user's) ARN will simply be passed through. In environments where both IAM users and individuals using assumed roles need to apply the same configurations, this data source enables seamless use.
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.AwsFunctions;
         import com.pulumi.aws.inputs.GetCallerIdentityArgs;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetSessionContextArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()
                     .build());
         
                 final var example = IamFunctions.getSessionContext(GetSessionContextArgs.builder()
                     .arn(current.arn())
                     .build());
         
             }
         }
         
         
      • getUser

        public static com.pulumi.core.Output<GetUserResult> getUser​(GetUserArgs args)
        This data source can be used to fetch information about a specific IAM user. By using this data source, you can reference IAM user properties without having to hard code ARNs or unique IDs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUserArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getUser(GetUserArgs.builder()
                     .userName("an_example_user_name")
                     .build());
         
             }
         }
         
         
      • getUserPlain

        public static java.util.concurrent.CompletableFuture<GetUserResult> getUserPlain​(GetUserPlainArgs args)
        This data source can be used to fetch information about a specific IAM user. By using this data source, you can reference IAM user properties without having to hard code ARNs or unique IDs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUserArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getUser(GetUserArgs.builder()
                     .userName("an_example_user_name")
                     .build());
         
             }
         }
         
         
      • getUser

        public static com.pulumi.core.Output<GetUserResult> getUser​(GetUserArgs args,
                                                                    com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM user. By using this data source, you can reference IAM user properties without having to hard code ARNs or unique IDs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUserArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getUser(GetUserArgs.builder()
                     .userName("an_example_user_name")
                     .build());
         
             }
         }
         
         
      • getUser

        public static com.pulumi.core.Output<GetUserResult> getUser​(GetUserArgs args,
                                                                    com.pulumi.deployment.InvokeOutputOptions options)
        This data source can be used to fetch information about a specific IAM user. By using this data source, you can reference IAM user properties without having to hard code ARNs or unique IDs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUserArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getUser(GetUserArgs.builder()
                     .userName("an_example_user_name")
                     .build());
         
             }
         }
         
         
      • getUserPlain

        public static java.util.concurrent.CompletableFuture<GetUserResult> getUserPlain​(GetUserPlainArgs args,
                                                                                         com.pulumi.deployment.InvokeOptions options)
        This data source can be used to fetch information about a specific IAM user. By using this data source, you can reference IAM user properties without having to hard code ARNs or unique IDs as input. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUserArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getUser(GetUserArgs.builder()
                     .userName("an_example_user_name")
                     .build());
         
             }
         }
         
         
      • getUserSshKey

        public static com.pulumi.core.Output<GetUserSshKeyResult> getUserSshKey​(GetUserSshKeyArgs args)
        Use this data source to get information about a SSH public key associated with the specified IAM user. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUserSshKeyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getUserSshKey(GetUserSshKeyArgs.builder()
                     .encoding("SSH")
                     .sshPublicKeyId("APKARUZ32GUTKIGARLXE")
                     .username("test-user")
                     .build());
         
             }
         }
         
         
      • getUserSshKeyPlain

        public static java.util.concurrent.CompletableFuture<GetUserSshKeyResult> getUserSshKeyPlain​(GetUserSshKeyPlainArgs args)
        Use this data source to get information about a SSH public key associated with the specified IAM user. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUserSshKeyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getUserSshKey(GetUserSshKeyArgs.builder()
                     .encoding("SSH")
                     .sshPublicKeyId("APKARUZ32GUTKIGARLXE")
                     .username("test-user")
                     .build());
         
             }
         }
         
         
      • getUserSshKey

        public static com.pulumi.core.Output<GetUserSshKeyResult> getUserSshKey​(GetUserSshKeyArgs args,
                                                                                com.pulumi.deployment.InvokeOptions options)
        Use this data source to get information about a SSH public key associated with the specified IAM user. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUserSshKeyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getUserSshKey(GetUserSshKeyArgs.builder()
                     .encoding("SSH")
                     .sshPublicKeyId("APKARUZ32GUTKIGARLXE")
                     .username("test-user")
                     .build());
         
             }
         }
         
         
      • getUserSshKey

        public static com.pulumi.core.Output<GetUserSshKeyResult> getUserSshKey​(GetUserSshKeyArgs args,
                                                                                com.pulumi.deployment.InvokeOutputOptions options)
        Use this data source to get information about a SSH public key associated with the specified IAM user. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUserSshKeyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getUserSshKey(GetUserSshKeyArgs.builder()
                     .encoding("SSH")
                     .sshPublicKeyId("APKARUZ32GUTKIGARLXE")
                     .username("test-user")
                     .build());
         
             }
         }
         
         
      • getUserSshKeyPlain

        public static java.util.concurrent.CompletableFuture<GetUserSshKeyResult> getUserSshKeyPlain​(GetUserSshKeyPlainArgs args,
                                                                                                     com.pulumi.deployment.InvokeOptions options)
        Use this data source to get information about a SSH public key associated with the specified IAM user. ## Example Usage
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUserSshKeyArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var example = IamFunctions.getUserSshKey(GetUserSshKeyArgs.builder()
                     .encoding("SSH")
                     .sshPublicKeyId("APKARUZ32GUTKIGARLXE")
                     .username("test-user")
                     .build());
         
             }
         }
         
         
      • getUsers

        public static com.pulumi.core.Output<GetUsersResult> getUsers()
        Use this data source to get the ARNs and Names of IAM Users. ## Example Usage ### All users in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Users filtered by name regex Users whose username contains `abc`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .nameRegex(".*abc.*")
                     .build());
         
             }
         }
         
         
        ### Users filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
      • getUsersPlain

        public static java.util.concurrent.CompletableFuture<GetUsersResult> getUsersPlain()
        Use this data source to get the ARNs and Names of IAM Users. ## Example Usage ### All users in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Users filtered by name regex Users whose username contains `abc`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .nameRegex(".*abc.*")
                     .build());
         
             }
         }
         
         
        ### Users filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
      • getUsers

        public static com.pulumi.core.Output<GetUsersResult> getUsers​(GetUsersArgs args)
        Use this data source to get the ARNs and Names of IAM Users. ## Example Usage ### All users in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Users filtered by name regex Users whose username contains `abc`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .nameRegex(".*abc.*")
                     .build());
         
             }
         }
         
         
        ### Users filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
      • getUsersPlain

        public static java.util.concurrent.CompletableFuture<GetUsersResult> getUsersPlain​(GetUsersPlainArgs args)
        Use this data source to get the ARNs and Names of IAM Users. ## Example Usage ### All users in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Users filtered by name regex Users whose username contains `abc`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .nameRegex(".*abc.*")
                     .build());
         
             }
         }
         
         
        ### Users filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
      • getUsers

        public static com.pulumi.core.Output<GetUsersResult> getUsers​(GetUsersArgs args,
                                                                      com.pulumi.deployment.InvokeOptions options)
        Use this data source to get the ARNs and Names of IAM Users. ## Example Usage ### All users in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Users filtered by name regex Users whose username contains `abc`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .nameRegex(".*abc.*")
                     .build());
         
             }
         }
         
         
        ### Users filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
      • getUsers

        public static com.pulumi.core.Output<GetUsersResult> getUsers​(GetUsersArgs args,
                                                                      com.pulumi.deployment.InvokeOutputOptions options)
        Use this data source to get the ARNs and Names of IAM Users. ## Example Usage ### All users in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Users filtered by name regex Users whose username contains `abc`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .nameRegex(".*abc.*")
                     .build());
         
             }
         }
         
         
        ### Users filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }
         
         
      • getUsersPlain

        public static java.util.concurrent.CompletableFuture<GetUsersResult> getUsersPlain​(GetUsersPlainArgs args,
                                                                                           com.pulumi.deployment.InvokeOptions options)
        Use this data source to get the ARNs and Names of IAM Users. ## Example Usage ### All users in an account
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .build());
         
             }
         }
         
         
        ### Users filtered by name regex Users whose username contains `abc`
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .nameRegex(".*abc.*")
                     .build());
         
             }
         }
         
         
        ### Users filtered by path prefix
         
         package generated_program;
         
         import com.pulumi.Context;
         import com.pulumi.Pulumi;
         import com.pulumi.core.Output;
         import com.pulumi.aws.iam.IamFunctions;
         import com.pulumi.aws.iam.inputs.GetUsersArgs;
         import java.util.ArrayList;
         import java.util.Arrays;
         import java.util.Map;
         import java.io.File;
         import java.nio.file.Files;
         import java.nio.file.Paths;
         
         public class App {
             public static void main(String[] args) {
                 Pulumi.run(App::stack);
             }
         
             public static void stack(Context ctx) {
                 final var users = IamFunctions.getUsers(GetUsersArgs.builder()
                     .pathPrefix("/custom-path")
                     .build());
         
             }
         }