aws.bedrock.AgentAgentCollaborator
Explore with Pulumi AI
Resource for managing an AWS Bedrock Agents Agent Collaborator.
Example Usage
Basic Usage
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const current = aws.getCallerIdentity({});
const currentGetPartition = aws.getPartition({});
const currentGetRegion = aws.getRegion({});
const exampleAgentTrust = Promise.all([current, currentGetPartition, currentGetRegion, current]).then(([current, currentGetPartition, currentGetRegion, current1]) => aws.iam.getPolicyDocument({
    statements: [{
        actions: ["sts:AssumeRole"],
        principals: [{
            identifiers: ["bedrock.amazonaws.com"],
            type: "Service",
        }],
        conditions: [
            {
                test: "StringEquals",
                values: [current.accountId],
                variable: "aws:SourceAccount",
            },
            {
                test: "ArnLike",
                values: [`arn:${currentGetPartition.partition}:bedrock:${currentGetRegion.name}:${current1.accountId}:agent/*`],
                variable: "AWS:SourceArn",
            },
        ],
    }],
}));
const exampleAgentPermissions = Promise.all([currentGetPartition, currentGetRegion, currentGetRegion, current, currentGetRegion, current]).then(([currentGetPartition, currentGetRegion, currentGetRegion1, current, currentGetRegion2, current1]) => aws.iam.getPolicyDocument({
    statements: [
        {
            actions: ["bedrock:InvokeModel"],
            resources: [`arn:${currentGetPartition.partition}:bedrock:${currentGetRegion.name}::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0`],
        },
        {
            actions: [
                "bedrock:GetAgentAlias",
                "bedrock:InvokeAgent",
            ],
            resources: [
                `arn:${currentAgent.partition}:bedrock:${currentGetRegion1.name}:${current.accountId}:agent/*`,
                `arn:${currentAgent.partition}:bedrock:${currentGetRegion2.name}:${current1.accountId}:agent-alias/*`,
            ],
        },
    ],
}));
const example = new aws.iam.Role("example", {
    assumeRolePolicy: exampleAgentTrust.then(exampleAgentTrust => exampleAgentTrust.json),
    namePrefix: "AmazonBedrockExecutionRoleForAgents_",
});
const exampleRolePolicy = new aws.iam.RolePolicy("example", {
    policy: exampleAgentPermissions.then(exampleAgentPermissions => exampleAgentPermissions.json),
    role: example.id,
});
const exampleCollaborator = new aws.bedrock.AgentAgent("example_collaborator", {
    agentName: "my-agent-collaborator",
    agentResourceRoleArn: example.arn,
    idleSessionTtlInSeconds: 500,
    foundationModel: "anthropic.claude-3-5-sonnet-20241022-v2:0",
    instruction: "do what the supervisor tells you to do",
});
const exampleSupervisor = new aws.bedrock.AgentAgent("example_supervisor", {
    agentName: "my-agent-supervisor",
    agentResourceRoleArn: example.arn,
    agentCollaboration: "SUPERVISOR",
    idleSessionTtlInSeconds: 500,
    foundationModel: "anthropic.claude-3-5-sonnet-20241022-v2:0",
    instruction: "tell the sub agent what to do",
    prepareAgent: false,
});
const exampleAgentAgentAlias = new aws.bedrock.AgentAgentAlias("example", {
    agentAliasName: "my-agent-alias",
    agentId: exampleCollaborator.agentId,
    description: "Test Alias",
});
const exampleAgentAgentCollaborator = new aws.bedrock.AgentAgentCollaborator("example", {
    agentId: exampleSupervisor.agentId,
    collaborationInstruction: "tell the other agent what to do",
    collaboratorName: "my-collab-example",
    relayConversationHistory: "TO_COLLABORATOR",
    agentDescriptor: {
        aliasArn: exampleAgentAgentAlias.agentAliasArn,
    },
});
import pulumi
import pulumi_aws as aws
current = aws.get_caller_identity()
current_get_partition = aws.get_partition()
current_get_region = aws.get_region()
example_agent_trust = aws.iam.get_policy_document(statements=[{
    "actions": ["sts:AssumeRole"],
    "principals": [{
        "identifiers": ["bedrock.amazonaws.com"],
        "type": "Service",
    }],
    "conditions": [
        {
            "test": "StringEquals",
            "values": [current.account_id],
            "variable": "aws:SourceAccount",
        },
        {
            "test": "ArnLike",
            "values": [f"arn:{current_get_partition.partition}:bedrock:{current_get_region.name}:{current.account_id}:agent/*"],
            "variable": "AWS:SourceArn",
        },
    ],
}])
example_agent_permissions = aws.iam.get_policy_document(statements=[
    {
        "actions": ["bedrock:InvokeModel"],
        "resources": [f"arn:{current_get_partition.partition}:bedrock:{current_get_region.name}::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"],
    },
    {
        "actions": [
            "bedrock:GetAgentAlias",
            "bedrock:InvokeAgent",
        ],
        "resources": [
            f"arn:{current_agent['partition']}:bedrock:{current_get_region.name}:{current.account_id}:agent/*",
            f"arn:{current_agent['partition']}:bedrock:{current_get_region.name}:{current.account_id}:agent-alias/*",
        ],
    },
])
example = aws.iam.Role("example",
    assume_role_policy=example_agent_trust.json,
    name_prefix="AmazonBedrockExecutionRoleForAgents_")
example_role_policy = aws.iam.RolePolicy("example",
    policy=example_agent_permissions.json,
    role=example.id)
example_collaborator = aws.bedrock.AgentAgent("example_collaborator",
    agent_name="my-agent-collaborator",
    agent_resource_role_arn=example.arn,
    idle_session_ttl_in_seconds=500,
    foundation_model="anthropic.claude-3-5-sonnet-20241022-v2:0",
    instruction="do what the supervisor tells you to do")
example_supervisor = aws.bedrock.AgentAgent("example_supervisor",
    agent_name="my-agent-supervisor",
    agent_resource_role_arn=example.arn,
    agent_collaboration="SUPERVISOR",
    idle_session_ttl_in_seconds=500,
    foundation_model="anthropic.claude-3-5-sonnet-20241022-v2:0",
    instruction="tell the sub agent what to do",
    prepare_agent=False)
example_agent_agent_alias = aws.bedrock.AgentAgentAlias("example",
    agent_alias_name="my-agent-alias",
    agent_id=example_collaborator.agent_id,
    description="Test Alias")
example_agent_agent_collaborator = aws.bedrock.AgentAgentCollaborator("example",
    agent_id=example_supervisor.agent_id,
    collaboration_instruction="tell the other agent what to do",
    collaborator_name="my-collab-example",
    relay_conversation_history="TO_COLLABORATOR",
    agent_descriptor={
        "alias_arn": example_agent_agent_alias.agent_alias_arn,
    })
package main
import (
	"fmt"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/bedrock"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
current, err := aws.GetCallerIdentity(ctx, &aws.GetCallerIdentityArgs{
}, nil);
if err != nil {
return err
}
currentGetPartition, err := aws.GetPartition(ctx, &aws.GetPartitionArgs{
}, nil);
if err != nil {
return err
}
currentGetRegion, err := aws.GetRegion(ctx, &aws.GetRegionArgs{
}, nil);
if err != nil {
return err
}
exampleAgentTrust, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
Statements: []iam.GetPolicyDocumentStatement{
{
Actions: []string{
"sts:AssumeRole",
},
Principals: []iam.GetPolicyDocumentStatementPrincipal{
{
Identifiers: []string{
"bedrock.amazonaws.com",
},
Type: "Service",
},
},
Conditions: []iam.GetPolicyDocumentStatementCondition{
{
Test: "StringEquals",
Values: interface{}{
current.AccountId,
},
Variable: "aws:SourceAccount",
},
{
Test: "ArnLike",
Values: []string{
fmt.Sprintf("arn:%v:bedrock:%v:%v:agent/*", currentGetPartition.Partition, currentGetRegion.Name, current.AccountId),
},
Variable: "AWS:SourceArn",
},
},
},
},
}, nil);
if err != nil {
return err
}
exampleAgentPermissions, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
Statements: []iam.GetPolicyDocumentStatement{
{
Actions: []string{
"bedrock:InvokeModel",
},
Resources: []string{
fmt.Sprintf("arn:%v:bedrock:%v::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0", currentGetPartition.Partition, currentGetRegion.Name),
},
},
{
Actions: []string{
"bedrock:GetAgentAlias",
"bedrock:InvokeAgent",
},
Resources: []string{
fmt.Sprintf("arn:%v:bedrock:%v:%v:agent/*", currentAgent.Partition, currentGetRegion.Name, current.AccountId),
fmt.Sprintf("arn:%v:bedrock:%v:%v:agent-alias/*", currentAgent.Partition, currentGetRegion.Name, current.AccountId),
},
},
},
}, nil);
if err != nil {
return err
}
example, err := iam.NewRole(ctx, "example", &iam.RoleArgs{
AssumeRolePolicy: pulumi.String(exampleAgentTrust.Json),
NamePrefix: pulumi.String("AmazonBedrockExecutionRoleForAgents_"),
})
if err != nil {
return err
}
_, err = iam.NewRolePolicy(ctx, "example", &iam.RolePolicyArgs{
Policy: pulumi.String(exampleAgentPermissions.Json),
Role: example.ID(),
})
if err != nil {
return err
}
exampleCollaborator, err := bedrock.NewAgentAgent(ctx, "example_collaborator", &bedrock.AgentAgentArgs{
AgentName: pulumi.String("my-agent-collaborator"),
AgentResourceRoleArn: example.Arn,
IdleSessionTtlInSeconds: pulumi.Int(500),
FoundationModel: pulumi.String("anthropic.claude-3-5-sonnet-20241022-v2:0"),
Instruction: pulumi.String("do what the supervisor tells you to do"),
})
if err != nil {
return err
}
exampleSupervisor, err := bedrock.NewAgentAgent(ctx, "example_supervisor", &bedrock.AgentAgentArgs{
AgentName: pulumi.String("my-agent-supervisor"),
AgentResourceRoleArn: example.Arn,
AgentCollaboration: pulumi.String("SUPERVISOR"),
IdleSessionTtlInSeconds: pulumi.Int(500),
FoundationModel: pulumi.String("anthropic.claude-3-5-sonnet-20241022-v2:0"),
Instruction: pulumi.String("tell the sub agent what to do"),
PrepareAgent: pulumi.Bool(false),
})
if err != nil {
return err
}
exampleAgentAgentAlias, err := bedrock.NewAgentAgentAlias(ctx, "example", &bedrock.AgentAgentAliasArgs{
AgentAliasName: pulumi.String("my-agent-alias"),
AgentId: exampleCollaborator.AgentId,
Description: pulumi.String("Test Alias"),
})
if err != nil {
return err
}
_, err = bedrock.NewAgentAgentCollaborator(ctx, "example", &bedrock.AgentAgentCollaboratorArgs{
AgentId: exampleSupervisor.AgentId,
CollaborationInstruction: pulumi.String("tell the other agent what to do"),
CollaboratorName: pulumi.String("my-collab-example"),
RelayConversationHistory: pulumi.String("TO_COLLABORATOR"),
AgentDescriptor: &bedrock.AgentAgentCollaboratorAgentDescriptorArgs{
AliasArn: exampleAgentAgentAlias.AgentAliasArn,
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() => 
{
    var current = Aws.GetCallerIdentity.Invoke();
    var currentGetPartition = Aws.GetPartition.Invoke();
    var currentGetRegion = Aws.GetRegion.Invoke();
    var exampleAgentTrust = Aws.Iam.GetPolicyDocument.Invoke(new()
    {
        Statements = new[]
        {
            new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs
            {
                Actions = new[]
                {
                    "sts:AssumeRole",
                },
                Principals = new[]
                {
                    new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs
                    {
                        Identifiers = new[]
                        {
                            "bedrock.amazonaws.com",
                        },
                        Type = "Service",
                    },
                },
                Conditions = new[]
                {
                    new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs
                    {
                        Test = "StringEquals",
                        Values = new[]
                        {
                            current.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId),
                        },
                        Variable = "aws:SourceAccount",
                    },
                    new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs
                    {
                        Test = "ArnLike",
                        Values = new[]
                        {
                            $"arn:{currentGetPartition.Apply(getPartitionResult => getPartitionResult.Partition)}:bedrock:{currentGetRegion.Apply(getRegionResult => getRegionResult.Name)}:{current.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId)}:agent/*",
                        },
                        Variable = "AWS:SourceArn",
                    },
                },
            },
        },
    });
    var exampleAgentPermissions = Aws.Iam.GetPolicyDocument.Invoke(new()
    {
        Statements = new[]
        {
            new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs
            {
                Actions = new[]
                {
                    "bedrock:InvokeModel",
                },
                Resources = new[]
                {
                    $"arn:{currentGetPartition.Apply(getPartitionResult => getPartitionResult.Partition)}:bedrock:{currentGetRegion.Apply(getRegionResult => getRegionResult.Name)}::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0",
                },
            },
            new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs
            {
                Actions = new[]
                {
                    "bedrock:GetAgentAlias",
                    "bedrock:InvokeAgent",
                },
                Resources = new[]
                {
                    $"arn:{currentAgent.Partition}:bedrock:{currentGetRegion.Apply(getRegionResult => getRegionResult.Name)}:{current.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId)}:agent/*",
                    $"arn:{currentAgent.Partition}:bedrock:{currentGetRegion.Apply(getRegionResult => getRegionResult.Name)}:{current.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId)}:agent-alias/*",
                },
            },
        },
    });
    var example = new Aws.Iam.Role("example", new()
    {
        AssumeRolePolicy = exampleAgentTrust.Apply(getPolicyDocumentResult => getPolicyDocumentResult.Json),
        NamePrefix = "AmazonBedrockExecutionRoleForAgents_",
    });
    var exampleRolePolicy = new Aws.Iam.RolePolicy("example", new()
    {
        Policy = exampleAgentPermissions.Apply(getPolicyDocumentResult => getPolicyDocumentResult.Json),
        Role = example.Id,
    });
    var exampleCollaborator = new Aws.Bedrock.AgentAgent("example_collaborator", new()
    {
        AgentName = "my-agent-collaborator",
        AgentResourceRoleArn = example.Arn,
        IdleSessionTtlInSeconds = 500,
        FoundationModel = "anthropic.claude-3-5-sonnet-20241022-v2:0",
        Instruction = "do what the supervisor tells you to do",
    });
    var exampleSupervisor = new Aws.Bedrock.AgentAgent("example_supervisor", new()
    {
        AgentName = "my-agent-supervisor",
        AgentResourceRoleArn = example.Arn,
        AgentCollaboration = "SUPERVISOR",
        IdleSessionTtlInSeconds = 500,
        FoundationModel = "anthropic.claude-3-5-sonnet-20241022-v2:0",
        Instruction = "tell the sub agent what to do",
        PrepareAgent = false,
    });
    var exampleAgentAgentAlias = new Aws.Bedrock.AgentAgentAlias("example", new()
    {
        AgentAliasName = "my-agent-alias",
        AgentId = exampleCollaborator.AgentId,
        Description = "Test Alias",
    });
    var exampleAgentAgentCollaborator = new Aws.Bedrock.AgentAgentCollaborator("example", new()
    {
        AgentId = exampleSupervisor.AgentId,
        CollaborationInstruction = "tell the other agent what to do",
        CollaboratorName = "my-collab-example",
        RelayConversationHistory = "TO_COLLABORATOR",
        AgentDescriptor = new Aws.Bedrock.Inputs.AgentAgentCollaboratorAgentDescriptorArgs
        {
            AliasArn = exampleAgentAgentAlias.AgentAliasArn,
        },
    });
});
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.inputs.GetPartitionArgs;
import com.pulumi.aws.inputs.GetRegionArgs;
import com.pulumi.aws.iam.IamFunctions;
import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
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.AgentAgent;
import com.pulumi.aws.bedrock.AgentAgentArgs;
import com.pulumi.aws.bedrock.AgentAgentAlias;
import com.pulumi.aws.bedrock.AgentAgentAliasArgs;
import com.pulumi.aws.bedrock.AgentAgentCollaborator;
import com.pulumi.aws.bedrock.AgentAgentCollaboratorArgs;
import com.pulumi.aws.bedrock.inputs.AgentAgentCollaboratorAgentDescriptorArgs;
import java.util.List;
import java.util.ArrayList;
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();
        final var currentGetPartition = AwsFunctions.getPartition();
        final var currentGetRegion = AwsFunctions.getRegion();
        final var exampleAgentTrust = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
            .statements(GetPolicyDocumentStatementArgs.builder()
                .actions("sts:AssumeRole")
                .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                    .identifiers("bedrock.amazonaws.com")
                    .type("Service")
                    .build())
                .conditions(                
                    GetPolicyDocumentStatementConditionArgs.builder()
                        .test("StringEquals")
                        .values(current.applyValue(getCallerIdentityResult -> getCallerIdentityResult.accountId()))
                        .variable("aws:SourceAccount")
                        .build(),
                    GetPolicyDocumentStatementConditionArgs.builder()
                        .test("ArnLike")
                        .values(String.format("arn:%s:bedrock:%s:%s:agent/*", currentGetPartition.applyValue(getPartitionResult -> getPartitionResult.partition()),currentGetRegion.applyValue(getRegionResult -> getRegionResult.name()),current.applyValue(getCallerIdentityResult -> getCallerIdentityResult.accountId())))
                        .variable("AWS:SourceArn")
                        .build())
                .build())
            .build());
        final var exampleAgentPermissions = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
            .statements(            
                GetPolicyDocumentStatementArgs.builder()
                    .actions("bedrock:InvokeModel")
                    .resources(String.format("arn:%s:bedrock:%s::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0", currentGetPartition.applyValue(getPartitionResult -> getPartitionResult.partition()),currentGetRegion.applyValue(getRegionResult -> getRegionResult.name())))
                    .build(),
                GetPolicyDocumentStatementArgs.builder()
                    .actions(                    
                        "bedrock:GetAgentAlias",
                        "bedrock:InvokeAgent")
                    .resources(                    
                        String.format("arn:%s:bedrock:%s:%s:agent/*", currentAgent.partition(),currentGetRegion.applyValue(getRegionResult -> getRegionResult.name()),current.applyValue(getCallerIdentityResult -> getCallerIdentityResult.accountId())),
                        String.format("arn:%s:bedrock:%s:%s:agent-alias/*", currentAgent.partition(),currentGetRegion.applyValue(getRegionResult -> getRegionResult.name()),current.applyValue(getCallerIdentityResult -> getCallerIdentityResult.accountId())))
                    .build())
            .build());
        var example = new Role("example", RoleArgs.builder()
            .assumeRolePolicy(exampleAgentTrust.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult.json()))
            .namePrefix("AmazonBedrockExecutionRoleForAgents_")
            .build());
        var exampleRolePolicy = new RolePolicy("exampleRolePolicy", RolePolicyArgs.builder()
            .policy(exampleAgentPermissions.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult.json()))
            .role(example.id())
            .build());
        var exampleCollaborator = new AgentAgent("exampleCollaborator", AgentAgentArgs.builder()
            .agentName("my-agent-collaborator")
            .agentResourceRoleArn(example.arn())
            .idleSessionTtlInSeconds(500)
            .foundationModel("anthropic.claude-3-5-sonnet-20241022-v2:0")
            .instruction("do what the supervisor tells you to do")
            .build());
        var exampleSupervisor = new AgentAgent("exampleSupervisor", AgentAgentArgs.builder()
            .agentName("my-agent-supervisor")
            .agentResourceRoleArn(example.arn())
            .agentCollaboration("SUPERVISOR")
            .idleSessionTtlInSeconds(500)
            .foundationModel("anthropic.claude-3-5-sonnet-20241022-v2:0")
            .instruction("tell the sub agent what to do")
            .prepareAgent(false)
            .build());
        var exampleAgentAgentAlias = new AgentAgentAlias("exampleAgentAgentAlias", AgentAgentAliasArgs.builder()
            .agentAliasName("my-agent-alias")
            .agentId(exampleCollaborator.agentId())
            .description("Test Alias")
            .build());
        var exampleAgentAgentCollaborator = new AgentAgentCollaborator("exampleAgentAgentCollaborator", AgentAgentCollaboratorArgs.builder()
            .agentId(exampleSupervisor.agentId())
            .collaborationInstruction("tell the other agent what to do")
            .collaboratorName("my-collab-example")
            .relayConversationHistory("TO_COLLABORATOR")
            .agentDescriptor(AgentAgentCollaboratorAgentDescriptorArgs.builder()
                .aliasArn(exampleAgentAgentAlias.agentAliasArn())
                .build())
            .build());
    }
}
resources:
  example:
    type: aws:iam:Role
    properties:
      assumeRolePolicy: ${exampleAgentTrust.json}
      namePrefix: AmazonBedrockExecutionRoleForAgents_
  exampleRolePolicy:
    type: aws:iam:RolePolicy
    name: example
    properties:
      policy: ${exampleAgentPermissions.json}
      role: ${example.id}
  exampleCollaborator:
    type: aws:bedrock:AgentAgent
    name: example_collaborator
    properties:
      agentName: my-agent-collaborator
      agentResourceRoleArn: ${example.arn}
      idleSessionTtlInSeconds: 500
      foundationModel: anthropic.claude-3-5-sonnet-20241022-v2:0
      instruction: do what the supervisor tells you to do
  exampleSupervisor:
    type: aws:bedrock:AgentAgent
    name: example_supervisor
    properties:
      agentName: my-agent-supervisor
      agentResourceRoleArn: ${example.arn}
      agentCollaboration: SUPERVISOR
      idleSessionTtlInSeconds: 500
      foundationModel: anthropic.claude-3-5-sonnet-20241022-v2:0
      instruction: tell the sub agent what to do
      prepareAgent: false
  exampleAgentAgentAlias:
    type: aws:bedrock:AgentAgentAlias
    name: example
    properties:
      agentAliasName: my-agent-alias
      agentId: ${exampleCollaborator.agentId}
      description: Test Alias
  exampleAgentAgentCollaborator:
    type: aws:bedrock:AgentAgentCollaborator
    name: example
    properties:
      agentId: ${exampleSupervisor.agentId}
      collaborationInstruction: tell the other agent what to do
      collaboratorName: my-collab-example
      relayConversationHistory: TO_COLLABORATOR
      agentDescriptor:
        aliasArn: ${exampleAgentAgentAlias.agentAliasArn}
variables:
  current:
    fn::invoke:
      function: aws:getCallerIdentity
      arguments: {}
  currentGetPartition:
    fn::invoke:
      function: aws:getPartition
      arguments: {}
  currentGetRegion:
    fn::invoke:
      function: aws:getRegion
      arguments: {}
  exampleAgentTrust:
    fn::invoke:
      function: aws:iam:getPolicyDocument
      arguments:
        statements:
          - actions:
              - sts:AssumeRole
            principals:
              - identifiers:
                  - bedrock.amazonaws.com
                type: Service
            conditions:
              - test: StringEquals
                values:
                  - ${current.accountId}
                variable: aws:SourceAccount
              - test: ArnLike
                values:
                  - arn:${currentGetPartition.partition}:bedrock:${currentGetRegion.name}:${current.accountId}:agent/*
                variable: AWS:SourceArn
  exampleAgentPermissions:
    fn::invoke:
      function: aws:iam:getPolicyDocument
      arguments:
        statements:
          - actions:
              - bedrock:InvokeModel
            resources:
              - arn:${currentGetPartition.partition}:bedrock:${currentGetRegion.name}::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0
          - actions:
              - bedrock:GetAgentAlias
              - bedrock:InvokeAgent
            resources:
              - arn:${currentAgent.partition}:bedrock:${currentGetRegion.name}:${current.accountId}:agent/*
              - arn:${currentAgent.partition}:bedrock:${currentGetRegion.name}:${current.accountId}:agent-alias/*
Create AgentAgentCollaborator Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new AgentAgentCollaborator(name: string, args: AgentAgentCollaboratorArgs, opts?: CustomResourceOptions);@overload
def AgentAgentCollaborator(resource_name: str,
                           args: AgentAgentCollaboratorArgs,
                           opts: Optional[ResourceOptions] = None)
@overload
def AgentAgentCollaborator(resource_name: str,
                           opts: Optional[ResourceOptions] = None,
                           agent_id: Optional[str] = None,
                           collaboration_instruction: Optional[str] = None,
                           collaborator_name: Optional[str] = None,
                           agent_descriptor: Optional[AgentAgentCollaboratorAgentDescriptorArgs] = None,
                           agent_version: Optional[str] = None,
                           prepare_agent: Optional[bool] = None,
                           relay_conversation_history: Optional[str] = None,
                           timeouts: Optional[AgentAgentCollaboratorTimeoutsArgs] = None)func NewAgentAgentCollaborator(ctx *Context, name string, args AgentAgentCollaboratorArgs, opts ...ResourceOption) (*AgentAgentCollaborator, error)public AgentAgentCollaborator(string name, AgentAgentCollaboratorArgs args, CustomResourceOptions? opts = null)
public AgentAgentCollaborator(String name, AgentAgentCollaboratorArgs args)
public AgentAgentCollaborator(String name, AgentAgentCollaboratorArgs args, CustomResourceOptions options)
type: aws:bedrock:AgentAgentCollaborator
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args AgentAgentCollaboratorArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args AgentAgentCollaboratorArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args AgentAgentCollaboratorArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args AgentAgentCollaboratorArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args AgentAgentCollaboratorArgs
- The arguments to resource properties.
- options CustomResourceOptions
- Bag of options to control resource's behavior.
Constructor example
The following reference example uses placeholder values for all input properties.
var agentAgentCollaboratorResource = new Aws.Bedrock.AgentAgentCollaborator("agentAgentCollaboratorResource", new()
{
    AgentId = "string",
    CollaborationInstruction = "string",
    CollaboratorName = "string",
    AgentDescriptor = new Aws.Bedrock.Inputs.AgentAgentCollaboratorAgentDescriptorArgs
    {
        AliasArn = "string",
    },
    AgentVersion = "string",
    PrepareAgent = false,
    RelayConversationHistory = "string",
    Timeouts = new Aws.Bedrock.Inputs.AgentAgentCollaboratorTimeoutsArgs
    {
        Create = "string",
        Delete = "string",
        Update = "string",
    },
});
example, err := bedrock.NewAgentAgentCollaborator(ctx, "agentAgentCollaboratorResource", &bedrock.AgentAgentCollaboratorArgs{
	AgentId:                  pulumi.String("string"),
	CollaborationInstruction: pulumi.String("string"),
	CollaboratorName:         pulumi.String("string"),
	AgentDescriptor: &bedrock.AgentAgentCollaboratorAgentDescriptorArgs{
		AliasArn: pulumi.String("string"),
	},
	AgentVersion:             pulumi.String("string"),
	PrepareAgent:             pulumi.Bool(false),
	RelayConversationHistory: pulumi.String("string"),
	Timeouts: &bedrock.AgentAgentCollaboratorTimeoutsArgs{
		Create: pulumi.String("string"),
		Delete: pulumi.String("string"),
		Update: pulumi.String("string"),
	},
})
var agentAgentCollaboratorResource = new AgentAgentCollaborator("agentAgentCollaboratorResource", AgentAgentCollaboratorArgs.builder()
    .agentId("string")
    .collaborationInstruction("string")
    .collaboratorName("string")
    .agentDescriptor(AgentAgentCollaboratorAgentDescriptorArgs.builder()
        .aliasArn("string")
        .build())
    .agentVersion("string")
    .prepareAgent(false)
    .relayConversationHistory("string")
    .timeouts(AgentAgentCollaboratorTimeoutsArgs.builder()
        .create("string")
        .delete("string")
        .update("string")
        .build())
    .build());
agent_agent_collaborator_resource = aws.bedrock.AgentAgentCollaborator("agentAgentCollaboratorResource",
    agent_id="string",
    collaboration_instruction="string",
    collaborator_name="string",
    agent_descriptor={
        "alias_arn": "string",
    },
    agent_version="string",
    prepare_agent=False,
    relay_conversation_history="string",
    timeouts={
        "create": "string",
        "delete": "string",
        "update": "string",
    })
const agentAgentCollaboratorResource = new aws.bedrock.AgentAgentCollaborator("agentAgentCollaboratorResource", {
    agentId: "string",
    collaborationInstruction: "string",
    collaboratorName: "string",
    agentDescriptor: {
        aliasArn: "string",
    },
    agentVersion: "string",
    prepareAgent: false,
    relayConversationHistory: "string",
    timeouts: {
        create: "string",
        "delete": "string",
        update: "string",
    },
});
type: aws:bedrock:AgentAgentCollaborator
properties:
    agentDescriptor:
        aliasArn: string
    agentId: string
    agentVersion: string
    collaborationInstruction: string
    collaboratorName: string
    prepareAgent: false
    relayConversationHistory: string
    timeouts:
        create: string
        delete: string
        update: string
AgentAgentCollaborator Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.
The AgentAgentCollaborator resource accepts the following input properties:
- AgentId string
- ID if the agent to associate the collaborator.
- CollaborationInstruction string
- Instruction to give the collaborator.
- CollaboratorName string
- AgentDescriptor AgentAgent Collaborator Agent Descriptor 
- AgentVersion string
- PrepareAgent bool
- Whether to prepare the agent after creation or modification. Defaults to true.
- RelayConversation stringHistory 
- Configure relaying the history to the collaborator.
- Timeouts
AgentAgent Collaborator Timeouts 
- AgentId string
- ID if the agent to associate the collaborator.
- CollaborationInstruction string
- Instruction to give the collaborator.
- CollaboratorName string
- AgentDescriptor AgentAgent Collaborator Agent Descriptor Args 
- AgentVersion string
- PrepareAgent bool
- Whether to prepare the agent after creation or modification. Defaults to true.
- RelayConversation stringHistory 
- Configure relaying the history to the collaborator.
- Timeouts
AgentAgent Collaborator Timeouts Args 
- agentId String
- ID if the agent to associate the collaborator.
- collaborationInstruction String
- Instruction to give the collaborator.
- collaboratorName String
- agentDescriptor AgentAgent Collaborator Agent Descriptor 
- agentVersion String
- prepareAgent Boolean
- Whether to prepare the agent after creation or modification. Defaults to true.
- relayConversation StringHistory 
- Configure relaying the history to the collaborator.
- timeouts
AgentAgent Collaborator Timeouts 
- agentId string
- ID if the agent to associate the collaborator.
- collaborationInstruction string
- Instruction to give the collaborator.
- collaboratorName string
- agentDescriptor AgentAgent Collaborator Agent Descriptor 
- agentVersion string
- prepareAgent boolean
- Whether to prepare the agent after creation or modification. Defaults to true.
- relayConversation stringHistory 
- Configure relaying the history to the collaborator.
- timeouts
AgentAgent Collaborator Timeouts 
- agent_id str
- ID if the agent to associate the collaborator.
- collaboration_instruction str
- Instruction to give the collaborator.
- collaborator_name str
- agent_descriptor AgentAgent Collaborator Agent Descriptor Args 
- agent_version str
- prepare_agent bool
- Whether to prepare the agent after creation or modification. Defaults to true.
- relay_conversation_ strhistory 
- Configure relaying the history to the collaborator.
- timeouts
AgentAgent Collaborator Timeouts Args 
- agentId String
- ID if the agent to associate the collaborator.
- collaborationInstruction String
- Instruction to give the collaborator.
- collaboratorName String
- agentDescriptor Property Map
- agentVersion String
- prepareAgent Boolean
- Whether to prepare the agent after creation or modification. Defaults to true.
- relayConversation StringHistory 
- Configure relaying the history to the collaborator.
- timeouts Property Map
Outputs
All input properties are implicitly available as output properties. Additionally, the AgentAgentCollaborator resource produces the following output properties:
- CollaboratorId string
- ID of the Agent Collaborator.
- Id string
- The provider-assigned unique ID for this managed resource.
- CollaboratorId string
- ID of the Agent Collaborator.
- Id string
- The provider-assigned unique ID for this managed resource.
- collaboratorId String
- ID of the Agent Collaborator.
- id String
- The provider-assigned unique ID for this managed resource.
- collaboratorId string
- ID of the Agent Collaborator.
- id string
- The provider-assigned unique ID for this managed resource.
- collaborator_id str
- ID of the Agent Collaborator.
- id str
- The provider-assigned unique ID for this managed resource.
- collaboratorId String
- ID of the Agent Collaborator.
- id String
- The provider-assigned unique ID for this managed resource.
Look up Existing AgentAgentCollaborator Resource
Get an existing AgentAgentCollaborator resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
public static get(name: string, id: Input<ID>, state?: AgentAgentCollaboratorState, opts?: CustomResourceOptions): AgentAgentCollaborator@staticmethod
def get(resource_name: str,
        id: str,
        opts: Optional[ResourceOptions] = None,
        agent_descriptor: Optional[AgentAgentCollaboratorAgentDescriptorArgs] = None,
        agent_id: Optional[str] = None,
        agent_version: Optional[str] = None,
        collaboration_instruction: Optional[str] = None,
        collaborator_id: Optional[str] = None,
        collaborator_name: Optional[str] = None,
        prepare_agent: Optional[bool] = None,
        relay_conversation_history: Optional[str] = None,
        timeouts: Optional[AgentAgentCollaboratorTimeoutsArgs] = None) -> AgentAgentCollaboratorfunc GetAgentAgentCollaborator(ctx *Context, name string, id IDInput, state *AgentAgentCollaboratorState, opts ...ResourceOption) (*AgentAgentCollaborator, error)public static AgentAgentCollaborator Get(string name, Input<string> id, AgentAgentCollaboratorState? state, CustomResourceOptions? opts = null)public static AgentAgentCollaborator get(String name, Output<String> id, AgentAgentCollaboratorState state, CustomResourceOptions options)resources:  _:    type: aws:bedrock:AgentAgentCollaborator    get:      id: ${id}- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- resource_name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- AgentDescriptor AgentAgent Collaborator Agent Descriptor 
- AgentId string
- ID if the agent to associate the collaborator.
- AgentVersion string
- CollaborationInstruction string
- Instruction to give the collaborator.
- CollaboratorId string
- ID of the Agent Collaborator.
- CollaboratorName string
- PrepareAgent bool
- Whether to prepare the agent after creation or modification. Defaults to true.
- RelayConversation stringHistory 
- Configure relaying the history to the collaborator.
- Timeouts
AgentAgent Collaborator Timeouts 
- AgentDescriptor AgentAgent Collaborator Agent Descriptor Args 
- AgentId string
- ID if the agent to associate the collaborator.
- AgentVersion string
- CollaborationInstruction string
- Instruction to give the collaborator.
- CollaboratorId string
- ID of the Agent Collaborator.
- CollaboratorName string
- PrepareAgent bool
- Whether to prepare the agent after creation or modification. Defaults to true.
- RelayConversation stringHistory 
- Configure relaying the history to the collaborator.
- Timeouts
AgentAgent Collaborator Timeouts Args 
- agentDescriptor AgentAgent Collaborator Agent Descriptor 
- agentId String
- ID if the agent to associate the collaborator.
- agentVersion String
- collaborationInstruction String
- Instruction to give the collaborator.
- collaboratorId String
- ID of the Agent Collaborator.
- collaboratorName String
- prepareAgent Boolean
- Whether to prepare the agent after creation or modification. Defaults to true.
- relayConversation StringHistory 
- Configure relaying the history to the collaborator.
- timeouts
AgentAgent Collaborator Timeouts 
- agentDescriptor AgentAgent Collaborator Agent Descriptor 
- agentId string
- ID if the agent to associate the collaborator.
- agentVersion string
- collaborationInstruction string
- Instruction to give the collaborator.
- collaboratorId string
- ID of the Agent Collaborator.
- collaboratorName string
- prepareAgent boolean
- Whether to prepare the agent after creation or modification. Defaults to true.
- relayConversation stringHistory 
- Configure relaying the history to the collaborator.
- timeouts
AgentAgent Collaborator Timeouts 
- agent_descriptor AgentAgent Collaborator Agent Descriptor Args 
- agent_id str
- ID if the agent to associate the collaborator.
- agent_version str
- collaboration_instruction str
- Instruction to give the collaborator.
- collaborator_id str
- ID of the Agent Collaborator.
- collaborator_name str
- prepare_agent bool
- Whether to prepare the agent after creation or modification. Defaults to true.
- relay_conversation_ strhistory 
- Configure relaying the history to the collaborator.
- timeouts
AgentAgent Collaborator Timeouts Args 
- agentDescriptor Property Map
- agentId String
- ID if the agent to associate the collaborator.
- agentVersion String
- collaborationInstruction String
- Instruction to give the collaborator.
- collaboratorId String
- ID of the Agent Collaborator.
- collaboratorName String
- prepareAgent Boolean
- Whether to prepare the agent after creation or modification. Defaults to true.
- relayConversation StringHistory 
- Configure relaying the history to the collaborator.
- timeouts Property Map
Supporting Types
AgentAgentCollaboratorAgentDescriptor, AgentAgentCollaboratorAgentDescriptorArgs          
- AliasArn string
- ARN of the Alias of an Agent to use as the collaborator.
- AliasArn string
- ARN of the Alias of an Agent to use as the collaborator.
- aliasArn String
- ARN of the Alias of an Agent to use as the collaborator.
- aliasArn string
- ARN of the Alias of an Agent to use as the collaborator.
- alias_arn str
- ARN of the Alias of an Agent to use as the collaborator.
- aliasArn String
- ARN of the Alias of an Agent to use as the collaborator.
AgentAgentCollaboratorTimeouts, AgentAgentCollaboratorTimeoutsArgs        
- Create string
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
- Delete string
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
- Update string
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
- Create string
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
- Delete string
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
- Update string
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
- create String
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
- delete String
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
- update String
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
- create string
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
- delete string
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
- update string
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
- create str
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
- delete str
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
- update str
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
- create String
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
- delete String
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
- update String
- A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
Import
Using pulumi import, import Bedrock Agents Agent Collaborator using a comma-delimited string combining agent_id, agent_version, and collaborator_id. For example:
$ pulumi import aws:bedrock/agentAgentCollaborator:AgentAgentCollaborator example 9LSJO0BFI8,DRAFT,AG3TN4RQIY
To learn more about importing existing cloud resources, see Importing resources.
Package Details
- Repository
- AWS Classic pulumi/pulumi-aws
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the awsTerraform Provider.