Class AgentcoreHarness


  • public class AgentcoreHarness
    extends com.pulumi.resources.CustomResource
    Manages an AWS Bedrock AgentCore Harness. A Harness is a managed agent loop that wraps model configuration, tools, skills, memory, and compute environment into a single deployable unit. ## 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.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.iam.Role;
     import com.pulumi.aws.iam.RoleArgs;
     import com.pulumi.aws.iam.RolePolicy;
     import com.pulumi.aws.iam.RolePolicyArgs;
     import com.pulumi.aws.bedrock.AgentcoreHarness;
     import com.pulumi.aws.bedrock.AgentcoreHarnessArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessModelArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessModelBedrockModelConfigArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessSystemPromptArgs;
     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 assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("bedrock-agentcore.amazonaws.com")
                         .build())
                     .effect("Allow")
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var example = new Role("example", RoleArgs.builder()
                 .name("bedrock-agentcore-harness-role")
                 .assumeRolePolicy(assumeRole.json())
                 .build());
     
             var exampleRolePolicy = new RolePolicy("exampleRolePolicy", RolePolicyArgs.builder()
                 .role(example.name())
                 .policy(serializeJson(
                     jsonObject(
                         jsonProperty("Version", "2012-10-17"),
                         jsonProperty("Statement", jsonArray(jsonObject(
                             jsonProperty("Effect", "Allow"),
                             jsonProperty("Action", jsonArray(
                                 "bedrock:InvokeModel", 
                                 "bedrock:InvokeModelWithResponseStream"
                             )),
                             jsonProperty("Resource", "*")
                         )))
                     )))
                 .build());
     
             var exampleAgentcoreHarness = new AgentcoreHarness("exampleAgentcoreHarness", AgentcoreHarnessArgs.builder()
                 .model(AgentcoreHarnessModelArgs.builder()
                     .bedrockModelConfig(AgentcoreHarnessModelBedrockModelConfigArgs.builder()
                         .modelId("anthropic.claude-sonnet-4-20250514")
                         .build())
                     .build())
                 .systemPrompts(AgentcoreHarnessSystemPromptArgs.builder()
                     .text("You are a helpful assistant.")
                     .build())
                 .harnessName("example_harness")
                 .executionRoleArn(example.arn())
                 .build());
     
         }
     }
     
     
    ### With Tools and Truncation
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.bedrock.AgentcoreHarness;
     import com.pulumi.aws.bedrock.AgentcoreHarnessArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessModelArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessModelBedrockModelConfigArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessSystemPromptArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessToolArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessToolConfigArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessToolConfigInlineFunctionArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessTruncationArgs;
     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) {
             var example = new AgentcoreHarness("example", AgentcoreHarnessArgs.builder()
                 .model(AgentcoreHarnessModelArgs.builder()
                     .bedrockModelConfig(AgentcoreHarnessModelBedrockModelConfigArgs.builder()
                         .modelId("anthropic.claude-sonnet-4-20250514")
                         .temperature(0.7)
                         .topP(0.9)
                         .build())
                     .build())
                 .systemPrompts(AgentcoreHarnessSystemPromptArgs.builder()
                     .text("You are a coding assistant.")
                     .build())
                 .tools(AgentcoreHarnessToolArgs.builder()
                     .config(AgentcoreHarnessToolConfigArgs.builder()
                         .inlineFunction(AgentcoreHarnessToolConfigInlineFunctionArgs.builder()
                             .description("Get the current weather for a location")
                             .inputSchema(serializeJson(
                                 jsonObject(
                                     jsonProperty("type", "object"),
                                     jsonProperty("properties", jsonObject(
                                         jsonProperty("location", jsonObject(
                                             jsonProperty("type", "string"),
                                             jsonProperty("description", "City name")
                                         ))
                                     )),
                                     jsonProperty("required", jsonArray("location"))
                                 )))
                             .build())
                         .build())
                     .type("inline_function")
                     .name("get_weather")
                     .build())
                 .truncations(AgentcoreHarnessTruncationArgs.builder()
                     .config(Arrays.asList(Map.of("slidingWindow", Arrays.asList(Map.of("messagesCount", 50)))))
                     .strategy("sliding_window")
                     .build())
                 .harnessName("example_with_tools")
                 .executionRoleArn(exampleAwsIamRole.arn())
                 .allowedTools("*")
                 .maxIterations(10)
                 .maxTokens(4096)
                 .timeoutSeconds(300)
                 .build());
     
         }
     }
     
     
    ### With Managed Memory
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.bedrock.AgentcoreHarness;
     import com.pulumi.aws.bedrock.AgentcoreHarnessArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessModelArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessModelBedrockModelConfigArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessMemoryArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessMemoryManagedMemoryConfigurationArgs;
     import com.pulumi.aws.bedrock.inputs.AgentcoreHarnessSystemPromptArgs;
     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 AgentcoreHarness("example", AgentcoreHarnessArgs.builder()
                 .model(AgentcoreHarnessModelArgs.builder()
                     .bedrockModelConfig(AgentcoreHarnessModelBedrockModelConfigArgs.builder()
                         .modelId("anthropic.claude-sonnet-4-20250514")
                         .build())
                     .build())
                 .memory(AgentcoreHarnessMemoryArgs.builder()
                     .managedMemoryConfiguration(AgentcoreHarnessMemoryManagedMemoryConfigurationArgs.builder()
                         .eventExpiryDuration(14)
                         .strategies(                    
                             "SEMANTIC",
                             "SUMMARIZATION")
                         .build())
                     .build())
                 .systemPrompts(AgentcoreHarnessSystemPromptArgs.builder()
                     .text("You are a helpful assistant.")
                     .build())
                 .harnessName("my_harness")
                 .executionRoleArn(exampleAwsIamRole.arn())
                 .build());
     
         }
     }
     
     
    ## Import ### Identity Schema #### Required * `harnessId` (String) ID of the harness. #### Optional * `accountId` (String) AWS Account where this resource is managed. * `region` (String) Region where this resource is managed. Using `pulumi import`, import Bedrock AgentCore Harnesses using `harnessId`. For example: ```sh $ pulumi import aws:bedrock/agentcoreHarness:AgentcoreHarness example example-Ab12Cd34Ef ```
    • Constructor Detail

      • AgentcoreHarness

        public AgentcoreHarness​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • AgentcoreHarness

        public AgentcoreHarness​(java.lang.String name,
                                AgentcoreHarnessArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • AgentcoreHarness

        public AgentcoreHarness​(java.lang.String name,
                                AgentcoreHarnessArgs args,
                                @Nullable
                                com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • allowedTools

        public com.pulumi.core.Output<java.util.List<java.lang.String>> allowedTools()
        Returns:
        List of tool names allowed for the harness. Use `["*"]` to allow all tools.
      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        ARN of the managed memory resource.
      • authorizerConfiguration

        public com.pulumi.core.Output<java.util.Optional<AgentcoreHarnessAuthorizerConfiguration>> authorizerConfiguration()
        Returns:
        Authorization configuration for authenticating requests. See `authorizerConfiguration` Block below.
      • environmentActuals

        public com.pulumi.core.Output<java.util.List<AgentcoreHarnessEnvironmentActual>> environmentActuals()
        Returns:
        Actual deployed environment configuration. See `environmentActual` Block below.
      • environmentArtifact

        public com.pulumi.core.Output<java.util.Optional<AgentcoreHarnessEnvironmentArtifact>> environmentArtifact()
        Returns:
        Environment artifact configuration. See `environmentArtifact` Block below.
      • environmentVariables

        public com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> environmentVariables()
        Returns:
        Map of environment variables. Set to an empty map (`{}`) to remove all environment variables.
      • environments

        public com.pulumi.core.Output<java.util.Optional<java.util.List<AgentcoreHarnessEnvironment>>> environments()
        Returns:
        Compute environment configuration. See `environment` Block below. If not specified, configured values can be found in `environmentActual`. Clearing this value will leave the environment configuration as is, but Terraform will not track changes.
      • executionRoleArn

        public com.pulumi.core.Output<java.lang.String> executionRoleArn()
        Returns:
        ARN of the IAM role that the harness assumes to access AWS services.
      • harnessId

        public com.pulumi.core.Output<java.lang.String> harnessId()
        Returns:
        Unique identifier of the Harness.
      • harnessName

        public com.pulumi.core.Output<java.lang.String> harnessName()
        Returns:
        Name of the harness. Must be 1-40 characters, start with a letter, and contain only alphanumeric characters and underscores.
      • maxIterations

        public com.pulumi.core.Output<java.lang.Integer> maxIterations()
        Returns:
        Maximum number of iterations the agent loop can perform.
      • maxTokens

        public com.pulumi.core.Output<java.lang.Integer> maxTokens()
        Returns:
        Maximum total number of output tokens the agent can generate across all model calls within a single invocation.
      • memory

        public com.pulumi.core.Output<java.util.Optional<AgentcoreHarnessMemory>> memory()
        Returns:
        Memory configuration. See `memory` Block below. If not specified, configured values can be found in `memoryActual`. Clearing this value will reset the memory configuration to default values.
      • memoryActuals

        public com.pulumi.core.Output<java.util.List<AgentcoreHarnessMemoryActual>> memoryActuals()
        Returns:
        Actual deployed memory configuration. See `memoryActual` Block below.
      • model

        public com.pulumi.core.Output<AgentcoreHarnessModel> model()
        Returns:
        Model configuration for the harness. See `model` Block below.
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • skills

        public com.pulumi.core.Output<java.util.Optional<java.util.List<AgentcoreHarnessSkill>>> skills()
        Returns:
        Skill configurations. See `skill` Block below.
      • systemPrompts

        public com.pulumi.core.Output<java.util.List<AgentcoreHarnessSystemPrompt>> systemPrompts()
        Returns:
        System prompt blocks for the harness. See `systemPrompt` Block below. The following arguments are optional:
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()
        Returns:
        Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
      • tagsAll

        public com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()
        Returns:
        Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
      • timeoutSeconds

        public com.pulumi.core.Output<java.lang.Integer> timeoutSeconds()
        Returns:
        Timeout in seconds for the harness execution.
      • tools

        public com.pulumi.core.Output<java.util.Optional<java.util.List<AgentcoreHarnessTool>>> tools()
        Returns:
        Tool configurations. See `tool` Block below.
      • truncations

        public com.pulumi.core.Output<java.util.List<AgentcoreHarnessTruncation>> truncations()
        Returns:
        Truncation configuration for conversation history. See `truncation` Block below.
      • get

        public static AgentcoreHarness get​(java.lang.String name,
                                           com.pulumi.core.Output<java.lang.String> id,
                                           @Nullable
                                           AgentcoreHarnessState state,
                                           @Nullable
                                           com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.