The aws:bedrock/agentAgentActionGroup:AgentAgentActionGroup resource, part of the Pulumi AWS provider, defines action groups that extend Bedrock agents with custom capabilities by connecting them to Lambda functions or application code. This guide focuses on three capabilities: OpenAPI schema definition (file-based and S3-hosted), simplified function schema for inline definitions, and Lambda execution vs return-of-control patterns.
Action groups belong to existing Bedrock agents and reference Lambda functions or application handlers. The examples are intentionally small. Combine them with your own agent configuration, Lambda functions, and schema management strategy.
Define actions with an OpenAPI schema file
Most action groups describe available operations through an OpenAPI schema that tells the agent what your Lambda function can do and what parameters each operation accepts.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as std from "@pulumi/std";
const example = new aws.bedrock.AgentAgentActionGroup("example", {
actionGroupName: "example",
agentId: "GGRRAED6JP",
agentVersion: "DRAFT",
skipResourceInUseCheck: true,
actionGroupExecutor: {
lambda: "arn:aws:lambda:us-west-2:123456789012:function:example-function",
},
apiSchema: {
payload: std.file({
input: "path/to/schema.yaml",
}).then(invoke => invoke.result),
},
});
import pulumi
import pulumi_aws as aws
import pulumi_std as std
example = aws.bedrock.AgentAgentActionGroup("example",
action_group_name="example",
agent_id="GGRRAED6JP",
agent_version="DRAFT",
skip_resource_in_use_check=True,
action_group_executor={
"lambda_": "arn:aws:lambda:us-west-2:123456789012:function:example-function",
},
api_schema={
"payload": std.file(input="path/to/schema.yaml").result,
})
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/bedrock"
"github.com/pulumi/pulumi-std/sdk/go/std"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
invokeFile, err := std.File(ctx, &std.FileArgs{
Input: "path/to/schema.yaml",
}, nil)
if err != nil {
return err
}
_, err = bedrock.NewAgentAgentActionGroup(ctx, "example", &bedrock.AgentAgentActionGroupArgs{
ActionGroupName: pulumi.String("example"),
AgentId: pulumi.String("GGRRAED6JP"),
AgentVersion: pulumi.String("DRAFT"),
SkipResourceInUseCheck: pulumi.Bool(true),
ActionGroupExecutor: &bedrock.AgentAgentActionGroupActionGroupExecutorArgs{
Lambda: pulumi.String("arn:aws:lambda:us-west-2:123456789012:function:example-function"),
},
ApiSchema: &bedrock.AgentAgentActionGroupApiSchemaArgs{
Payload: pulumi.String(invokeFile.Result),
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
using Std = Pulumi.Std;
return await Deployment.RunAsync(() =>
{
var example = new Aws.Bedrock.AgentAgentActionGroup("example", new()
{
ActionGroupName = "example",
AgentId = "GGRRAED6JP",
AgentVersion = "DRAFT",
SkipResourceInUseCheck = true,
ActionGroupExecutor = new Aws.Bedrock.Inputs.AgentAgentActionGroupActionGroupExecutorArgs
{
Lambda = "arn:aws:lambda:us-west-2:123456789012:function:example-function",
},
ApiSchema = new Aws.Bedrock.Inputs.AgentAgentActionGroupApiSchemaArgs
{
Payload = Std.File.Invoke(new()
{
Input = "path/to/schema.yaml",
}).Apply(invoke => invoke.Result),
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.bedrock.AgentAgentActionGroup;
import com.pulumi.aws.bedrock.AgentAgentActionGroupArgs;
import com.pulumi.aws.bedrock.inputs.AgentAgentActionGroupActionGroupExecutorArgs;
import com.pulumi.aws.bedrock.inputs.AgentAgentActionGroupApiSchemaArgs;
import com.pulumi.std.StdFunctions;
import com.pulumi.std.inputs.FileArgs;
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) {
var example = new AgentAgentActionGroup("example", AgentAgentActionGroupArgs.builder()
.actionGroupName("example")
.agentId("GGRRAED6JP")
.agentVersion("DRAFT")
.skipResourceInUseCheck(true)
.actionGroupExecutor(AgentAgentActionGroupActionGroupExecutorArgs.builder()
.lambda("arn:aws:lambda:us-west-2:123456789012:function:example-function")
.build())
.apiSchema(AgentAgentActionGroupApiSchemaArgs.builder()
.payload(StdFunctions.file(FileArgs.builder()
.input("path/to/schema.yaml")
.build()).result())
.build())
.build());
}
}
resources:
example:
type: aws:bedrock:AgentAgentActionGroup
properties:
actionGroupName: example
agentId: GGRRAED6JP
agentVersion: DRAFT
skipResourceInUseCheck: true
actionGroupExecutor:
lambda: arn:aws:lambda:us-west-2:123456789012:function:example-function
apiSchema:
payload:
fn::invoke:
function: std:file
arguments:
input: path/to/schema.yaml
return: result
When the agent invokes an action, Bedrock calls the Lambda function specified in actionGroupExecutor. The apiSchema payload property loads your OpenAPI definition from a local file, which describes endpoints, parameters, and response formats. The agentVersion must be “DRAFT” for action groups under development.
Reference API schemas stored in S3
Teams managing schemas centrally store OpenAPI definitions in S3 rather than embedding them in code, supporting versioning and sharing across action groups.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.bedrock.AgentAgentActionGroup("example", {
actionGroupName: "example",
agentId: "GGRRAED6JP",
agentVersion: "DRAFT",
skipResourceInUseCheck: true,
actionGroupExecutor: {
lambda: "arn:aws:lambda:us-west-2:123456789012:function:example-function",
},
apiSchema: {
s3: {
s3BucketName: "example-bucket",
s3ObjectKey: "path/to/schema.json",
},
},
});
import pulumi
import pulumi_aws as aws
example = aws.bedrock.AgentAgentActionGroup("example",
action_group_name="example",
agent_id="GGRRAED6JP",
agent_version="DRAFT",
skip_resource_in_use_check=True,
action_group_executor={
"lambda_": "arn:aws:lambda:us-west-2:123456789012:function:example-function",
},
api_schema={
"s3": {
"s3_bucket_name": "example-bucket",
"s3_object_key": "path/to/schema.json",
},
})
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/bedrock"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := bedrock.NewAgentAgentActionGroup(ctx, "example", &bedrock.AgentAgentActionGroupArgs{
ActionGroupName: pulumi.String("example"),
AgentId: pulumi.String("GGRRAED6JP"),
AgentVersion: pulumi.String("DRAFT"),
SkipResourceInUseCheck: pulumi.Bool(true),
ActionGroupExecutor: &bedrock.AgentAgentActionGroupActionGroupExecutorArgs{
Lambda: pulumi.String("arn:aws:lambda:us-west-2:123456789012:function:example-function"),
},
ApiSchema: &bedrock.AgentAgentActionGroupApiSchemaArgs{
S3: &bedrock.AgentAgentActionGroupApiSchemaS3Args{
S3BucketName: pulumi.String("example-bucket"),
S3ObjectKey: pulumi.String("path/to/schema.json"),
},
},
})
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 example = new Aws.Bedrock.AgentAgentActionGroup("example", new()
{
ActionGroupName = "example",
AgentId = "GGRRAED6JP",
AgentVersion = "DRAFT",
SkipResourceInUseCheck = true,
ActionGroupExecutor = new Aws.Bedrock.Inputs.AgentAgentActionGroupActionGroupExecutorArgs
{
Lambda = "arn:aws:lambda:us-west-2:123456789012:function:example-function",
},
ApiSchema = new Aws.Bedrock.Inputs.AgentAgentActionGroupApiSchemaArgs
{
S3 = new Aws.Bedrock.Inputs.AgentAgentActionGroupApiSchemaS3Args
{
S3BucketName = "example-bucket",
S3ObjectKey = "path/to/schema.json",
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.bedrock.AgentAgentActionGroup;
import com.pulumi.aws.bedrock.AgentAgentActionGroupArgs;
import com.pulumi.aws.bedrock.inputs.AgentAgentActionGroupActionGroupExecutorArgs;
import com.pulumi.aws.bedrock.inputs.AgentAgentActionGroupApiSchemaArgs;
import com.pulumi.aws.bedrock.inputs.AgentAgentActionGroupApiSchemaS3Args;
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) {
var example = new AgentAgentActionGroup("example", AgentAgentActionGroupArgs.builder()
.actionGroupName("example")
.agentId("GGRRAED6JP")
.agentVersion("DRAFT")
.skipResourceInUseCheck(true)
.actionGroupExecutor(AgentAgentActionGroupActionGroupExecutorArgs.builder()
.lambda("arn:aws:lambda:us-west-2:123456789012:function:example-function")
.build())
.apiSchema(AgentAgentActionGroupApiSchemaArgs.builder()
.s3(AgentAgentActionGroupApiSchemaS3Args.builder()
.s3BucketName("example-bucket")
.s3ObjectKey("path/to/schema.json")
.build())
.build())
.build());
}
}
resources:
example:
type: aws:bedrock:AgentAgentActionGroup
properties:
actionGroupName: example
agentId: GGRRAED6JP
agentVersion: DRAFT
skipResourceInUseCheck: true
actionGroupExecutor:
lambda: arn:aws:lambda:us-west-2:123456789012:function:example-function
apiSchema:
s3:
s3BucketName: example-bucket
s3ObjectKey: path/to/schema.json
The apiSchema s3 block points to a schema object in S3 instead of loading from a local file. The s3BucketName and s3ObjectKey properties specify the location. Your Lambda execution role needs read permissions for the bucket.
Define actions inline with function schema
For simpler cases, you can specify actions directly in the configuration without maintaining a separate OpenAPI file.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.bedrock.AgentAgentActionGroup("example", {
actionGroupName: "example",
agentId: "GGRRAED6JP",
agentVersion: "DRAFT",
skipResourceInUseCheck: true,
actionGroupExecutor: {
lambda: "arn:aws:lambda:us-west-2:123456789012:function:example-function",
},
functionSchema: {
memberFunctions: {
functions: [{
name: "example-function",
description: "Example function",
parameters: [
{
mapBlockKey: "param1",
type: "string",
description: "The first parameter",
required: true,
},
{
mapBlockKey: "param2",
type: "integer",
description: "The second parameter",
required: false,
},
],
}],
},
},
});
import pulumi
import pulumi_aws as aws
example = aws.bedrock.AgentAgentActionGroup("example",
action_group_name="example",
agent_id="GGRRAED6JP",
agent_version="DRAFT",
skip_resource_in_use_check=True,
action_group_executor={
"lambda_": "arn:aws:lambda:us-west-2:123456789012:function:example-function",
},
function_schema={
"member_functions": {
"functions": [{
"name": "example-function",
"description": "Example function",
"parameters": [
{
"map_block_key": "param1",
"type": "string",
"description": "The first parameter",
"required": True,
},
{
"map_block_key": "param2",
"type": "integer",
"description": "The second parameter",
"required": False,
},
],
}],
},
})
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/bedrock"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := bedrock.NewAgentAgentActionGroup(ctx, "example", &bedrock.AgentAgentActionGroupArgs{
ActionGroupName: pulumi.String("example"),
AgentId: pulumi.String("GGRRAED6JP"),
AgentVersion: pulumi.String("DRAFT"),
SkipResourceInUseCheck: pulumi.Bool(true),
ActionGroupExecutor: &bedrock.AgentAgentActionGroupActionGroupExecutorArgs{
Lambda: pulumi.String("arn:aws:lambda:us-west-2:123456789012:function:example-function"),
},
FunctionSchema: &bedrock.AgentAgentActionGroupFunctionSchemaArgs{
MemberFunctions: &bedrock.AgentAgentActionGroupFunctionSchemaMemberFunctionsArgs{
Functions: bedrock.AgentAgentActionGroupFunctionSchemaMemberFunctionsFunctionArray{
&bedrock.AgentAgentActionGroupFunctionSchemaMemberFunctionsFunctionArgs{
Name: pulumi.String("example-function"),
Description: pulumi.String("Example function"),
Parameters: bedrock.AgentAgentActionGroupFunctionSchemaMemberFunctionsFunctionParameterArray{
&bedrock.AgentAgentActionGroupFunctionSchemaMemberFunctionsFunctionParameterArgs{
MapBlockKey: pulumi.String("param1"),
Type: pulumi.String("string"),
Description: pulumi.String("The first parameter"),
Required: pulumi.Bool(true),
},
&bedrock.AgentAgentActionGroupFunctionSchemaMemberFunctionsFunctionParameterArgs{
MapBlockKey: pulumi.String("param2"),
Type: pulumi.String("integer"),
Description: pulumi.String("The second parameter"),
Required: pulumi.Bool(false),
},
},
},
},
},
},
})
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 example = new Aws.Bedrock.AgentAgentActionGroup("example", new()
{
ActionGroupName = "example",
AgentId = "GGRRAED6JP",
AgentVersion = "DRAFT",
SkipResourceInUseCheck = true,
ActionGroupExecutor = new Aws.Bedrock.Inputs.AgentAgentActionGroupActionGroupExecutorArgs
{
Lambda = "arn:aws:lambda:us-west-2:123456789012:function:example-function",
},
FunctionSchema = new Aws.Bedrock.Inputs.AgentAgentActionGroupFunctionSchemaArgs
{
MemberFunctions = new Aws.Bedrock.Inputs.AgentAgentActionGroupFunctionSchemaMemberFunctionsArgs
{
Functions = new[]
{
new Aws.Bedrock.Inputs.AgentAgentActionGroupFunctionSchemaMemberFunctionsFunctionArgs
{
Name = "example-function",
Description = "Example function",
Parameters = new[]
{
new Aws.Bedrock.Inputs.AgentAgentActionGroupFunctionSchemaMemberFunctionsFunctionParameterArgs
{
MapBlockKey = "param1",
Type = "string",
Description = "The first parameter",
Required = true,
},
new Aws.Bedrock.Inputs.AgentAgentActionGroupFunctionSchemaMemberFunctionsFunctionParameterArgs
{
MapBlockKey = "param2",
Type = "integer",
Description = "The second parameter",
Required = false,
},
},
},
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.bedrock.AgentAgentActionGroup;
import com.pulumi.aws.bedrock.AgentAgentActionGroupArgs;
import com.pulumi.aws.bedrock.inputs.AgentAgentActionGroupActionGroupExecutorArgs;
import com.pulumi.aws.bedrock.inputs.AgentAgentActionGroupFunctionSchemaArgs;
import com.pulumi.aws.bedrock.inputs.AgentAgentActionGroupFunctionSchemaMemberFunctionsArgs;
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) {
var example = new AgentAgentActionGroup("example", AgentAgentActionGroupArgs.builder()
.actionGroupName("example")
.agentId("GGRRAED6JP")
.agentVersion("DRAFT")
.skipResourceInUseCheck(true)
.actionGroupExecutor(AgentAgentActionGroupActionGroupExecutorArgs.builder()
.lambda("arn:aws:lambda:us-west-2:123456789012:function:example-function")
.build())
.functionSchema(AgentAgentActionGroupFunctionSchemaArgs.builder()
.memberFunctions(AgentAgentActionGroupFunctionSchemaMemberFunctionsArgs.builder()
.functions(AgentAgentActionGroupFunctionSchemaMemberFunctionsFunctionArgs.builder()
.name("example-function")
.description("Example function")
.parameters(
AgentAgentActionGroupFunctionSchemaMemberFunctionsFunctionParameterArgs.builder()
.mapBlockKey("param1")
.type("string")
.description("The first parameter")
.required(true)
.build(),
AgentAgentActionGroupFunctionSchemaMemberFunctionsFunctionParameterArgs.builder()
.mapBlockKey("param2")
.type("integer")
.description("The second parameter")
.required(false)
.build())
.build())
.build())
.build())
.build());
}
}
resources:
example:
type: aws:bedrock:AgentAgentActionGroup
properties:
actionGroupName: example
agentId: GGRRAED6JP
agentVersion: DRAFT
skipResourceInUseCheck: true
actionGroupExecutor:
lambda: arn:aws:lambda:us-west-2:123456789012:function:example-function
functionSchema:
memberFunctions:
functions:
- name: example-function
description: Example function
parameters:
- mapBlockKey: param1
type: string
description: The first parameter
required: true
- mapBlockKey: param2
type: integer
description: The second parameter
required: false
The functionSchema memberFunctions block defines actions inline. Each function in the functions array describes one action with its parameters. The mapBlockKey identifies each parameter, type specifies its data type, and required controls whether the agent must provide it. This approach works well for straightforward APIs with a few parameters.
Return control to application for custom handling
Some workflows need the application to handle action execution directly rather than delegating to Lambda.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as std from "@pulumi/std";
const example = new aws.bedrock.AgentAgentActionGroup("example", {
actionGroupName: "example",
agentId: "GGRRAED6JP",
agentVersion: "DRAFT",
skipResourceInUseCheck: true,
actionGroupExecutor: {
customControl: "RETURN_CONTROL",
},
apiSchema: {
payload: std.file({
input: "path/to/schema.yaml",
}).then(invoke => invoke.result),
},
});
import pulumi
import pulumi_aws as aws
import pulumi_std as std
example = aws.bedrock.AgentAgentActionGroup("example",
action_group_name="example",
agent_id="GGRRAED6JP",
agent_version="DRAFT",
skip_resource_in_use_check=True,
action_group_executor={
"custom_control": "RETURN_CONTROL",
},
api_schema={
"payload": std.file(input="path/to/schema.yaml").result,
})
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/bedrock"
"github.com/pulumi/pulumi-std/sdk/go/std"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
invokeFile, err := std.File(ctx, &std.FileArgs{
Input: "path/to/schema.yaml",
}, nil)
if err != nil {
return err
}
_, err = bedrock.NewAgentAgentActionGroup(ctx, "example", &bedrock.AgentAgentActionGroupArgs{
ActionGroupName: pulumi.String("example"),
AgentId: pulumi.String("GGRRAED6JP"),
AgentVersion: pulumi.String("DRAFT"),
SkipResourceInUseCheck: pulumi.Bool(true),
ActionGroupExecutor: &bedrock.AgentAgentActionGroupActionGroupExecutorArgs{
CustomControl: pulumi.String("RETURN_CONTROL"),
},
ApiSchema: &bedrock.AgentAgentActionGroupApiSchemaArgs{
Payload: pulumi.String(invokeFile.Result),
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
using Std = Pulumi.Std;
return await Deployment.RunAsync(() =>
{
var example = new Aws.Bedrock.AgentAgentActionGroup("example", new()
{
ActionGroupName = "example",
AgentId = "GGRRAED6JP",
AgentVersion = "DRAFT",
SkipResourceInUseCheck = true,
ActionGroupExecutor = new Aws.Bedrock.Inputs.AgentAgentActionGroupActionGroupExecutorArgs
{
CustomControl = "RETURN_CONTROL",
},
ApiSchema = new Aws.Bedrock.Inputs.AgentAgentActionGroupApiSchemaArgs
{
Payload = Std.File.Invoke(new()
{
Input = "path/to/schema.yaml",
}).Apply(invoke => invoke.Result),
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.bedrock.AgentAgentActionGroup;
import com.pulumi.aws.bedrock.AgentAgentActionGroupArgs;
import com.pulumi.aws.bedrock.inputs.AgentAgentActionGroupActionGroupExecutorArgs;
import com.pulumi.aws.bedrock.inputs.AgentAgentActionGroupApiSchemaArgs;
import com.pulumi.std.StdFunctions;
import com.pulumi.std.inputs.FileArgs;
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) {
var example = new AgentAgentActionGroup("example", AgentAgentActionGroupArgs.builder()
.actionGroupName("example")
.agentId("GGRRAED6JP")
.agentVersion("DRAFT")
.skipResourceInUseCheck(true)
.actionGroupExecutor(AgentAgentActionGroupActionGroupExecutorArgs.builder()
.customControl("RETURN_CONTROL")
.build())
.apiSchema(AgentAgentActionGroupApiSchemaArgs.builder()
.payload(StdFunctions.file(FileArgs.builder()
.input("path/to/schema.yaml")
.build()).result())
.build())
.build());
}
}
resources:
example:
type: aws:bedrock:AgentAgentActionGroup
properties:
actionGroupName: example
agentId: GGRRAED6JP
agentVersion: DRAFT
skipResourceInUseCheck: true
actionGroupExecutor:
customControl: RETURN_CONTROL
apiSchema:
payload:
fn::invoke:
function: std:file
arguments:
input: path/to/schema.yaml
return: result
Setting actionGroupExecutor customControl to “RETURN_CONTROL” tells Bedrock to pass action invocation details back through the InvokeAgent API response instead of calling a Lambda function. Your application code receives the action name and parameters, executes the logic, and returns results in the next API call.
Beyond these examples
These snippets focus on specific action group features: OpenAPI schema definition (file-based and S3-hosted), simplified function schema for inline action definitions, and Lambda execution and return-of-control patterns. They’re intentionally minimal rather than full agent implementations.
The examples reference pre-existing infrastructure such as Bedrock agents (agentId references), Lambda functions for action execution, and S3 buckets for schema storage. They focus on configuring the action group rather than provisioning the surrounding agent infrastructure.
To keep things focused, common action group patterns are omitted, including:
- Agent state management (actionGroupState property)
- User input collection (parentActionGroupSignature with AMAZON.UserInput)
- Agent preparation control (prepareAgent property)
- Resource deletion behavior (skipResourceInUseCheck)
These omissions are intentional: the goal is to illustrate how each action group feature is wired, not provide drop-in agent modules. See the Bedrock Agent Action Group resource reference for all available configuration options.
Let's configure AWS Bedrock Agent Action Groups
Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.
Try Pulumi Cloud for FREEFrequently Asked Questions
Configuration Basics
agentVersion property only accepts DRAFT as a valid value. No other agent versions are currently supported for action groups.actionGroupState to ENABLED makes the action group available for InvokeAgent requests, while DISABLED prevents the agent from invoking it.prepareAgent property defaults to true, automatically preparing the agent after creation or modification.Schema Definition
You have three options:
- Inline payload - Use
apiSchema.payloadwith YAML or JSON content - S3 reference - Use
apiSchema.s3with bucket name and object key - Function schema - Use
functionSchemafor a simplified schema definition without OpenAPI
functionSchema when you want a simplified schema definition. It lets you define functions with parameters directly in Pulumi code, avoiding the need for separate OpenAPI schema files.Execution Models
actionGroupExecutor.lambda with a Lambda function ARN for direct execution of business logic. Use actionGroupExecutor.customControl set to RETURN_CONTROL to handle the action logic outside the action group, giving you more control over the execution flow.Special Cases & Gotchas
parentActionGroupSignature to AMAZON.UserInput. When using this value, you must leave description, apiSchema, and actionGroupExecutor blank.skipResourceInUseCheck to true skips the in-use check when deleting the action group, allowing deletion even if the action group is currently in use.Using a different cloud?
Explore analytics guides for other cloud providers: