From 12d8f31d224bfe9d0f653ffdc9a3d2915298e0ec Mon Sep 17 00:00:00 2001 From: Nithin Chandran Rajashankar Date: Mon, 20 Apr 2026 14:00:34 +0000 Subject: [PATCH] feat: add sfn-agentcore-bedrock-cdk workflow pattern Step Functions workflow that orchestrates multiple Bedrock AgentCore agents in parallel via Map state, then aggregates responses using Bedrock Converse API. - CDK (TypeScript) infrastructure - Bundled Lambda for AgentCore SDK (not in runtime) - Parallel agent invocation with Map state - Response aggregation via Bedrock Converse --- sfn-agentcore-bedrock-cdk/.gitignore | 3 + sfn-agentcore-bedrock-cdk/README.md | 96 +++++++++++ sfn-agentcore-bedrock-cdk/bin/app.ts | 7 + sfn-agentcore-bedrock-cdk/cdk.json | 3 + .../example-workflow.json | 82 +++++++++ .../lib/sfn-agentcore-bedrock-stack.ts | 162 ++++++++++++++++++ sfn-agentcore-bedrock-cdk/package.json | 23 +++ .../resources/statemachine.png | Bin 0 -> 91446 bytes sfn-agentcore-bedrock-cdk/src/aggregate.mjs | 33 ++++ sfn-agentcore-bedrock-cdk/src/invoke-agent.ts | 33 ++++ sfn-agentcore-bedrock-cdk/src/trigger.mjs | 18 ++ .../statemachine/statemachine.asl.json | 49 ++++++ sfn-agentcore-bedrock-cdk/tsconfig.json | 25 +++ 13 files changed, 534 insertions(+) create mode 100644 sfn-agentcore-bedrock-cdk/.gitignore create mode 100644 sfn-agentcore-bedrock-cdk/README.md create mode 100644 sfn-agentcore-bedrock-cdk/bin/app.ts create mode 100644 sfn-agentcore-bedrock-cdk/cdk.json create mode 100644 sfn-agentcore-bedrock-cdk/example-workflow.json create mode 100644 sfn-agentcore-bedrock-cdk/lib/sfn-agentcore-bedrock-stack.ts create mode 100644 sfn-agentcore-bedrock-cdk/package.json create mode 100644 sfn-agentcore-bedrock-cdk/resources/statemachine.png create mode 100644 sfn-agentcore-bedrock-cdk/src/aggregate.mjs create mode 100644 sfn-agentcore-bedrock-cdk/src/invoke-agent.ts create mode 100644 sfn-agentcore-bedrock-cdk/src/trigger.mjs create mode 100644 sfn-agentcore-bedrock-cdk/statemachine/statemachine.asl.json create mode 100644 sfn-agentcore-bedrock-cdk/tsconfig.json diff --git a/sfn-agentcore-bedrock-cdk/.gitignore b/sfn-agentcore-bedrock-cdk/.gitignore new file mode 100644 index 00000000..52f5a011 --- /dev/null +++ b/sfn-agentcore-bedrock-cdk/.gitignore @@ -0,0 +1,3 @@ +node_modules +build +cdk.out diff --git a/sfn-agentcore-bedrock-cdk/README.md b/sfn-agentcore-bedrock-cdk/README.md new file mode 100644 index 00000000..96b75bf1 --- /dev/null +++ b/sfn-agentcore-bedrock-cdk/README.md @@ -0,0 +1,96 @@ +# Step Functions with Bedrock AgentCore Multi-Agent Orchestration + +This workflow deploys an AWS Step Functions state machine that orchestrates multiple Bedrock AgentCore agents in parallel, then aggregates their responses into a unified summary using Amazon Bedrock Converse. + +Learn more about this workflow at Step Functions workflows collection: https://serverlessland.com/workflows/sfn-agentcore-bedrock-cdk + +Important: this application uses various AWS services and there are costs associated with these services after the Free Tier usage - please see the [AWS Pricing page](https://aws.amazon.com/pricing/) for details. You are responsible for any AWS costs incurred. No warranty is implied in this example. + +## Requirements + +* [Create an AWS account](https://portal.aws.amazon.com/gp/aws/developer/registration/index.html) if you do not already have one and log in. The IAM user that you use must have sufficient permissions to make necessary AWS service calls and manage AWS resources. +* [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) installed and configured +* [Git Installed](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) +* [Node.js 18+](https://nodejs.org/en/download/) installed +* [AWS CDK v2](https://docs.aws.amazon.com/cdk/v2/guide/getting-started.html) installed +* [Amazon Bedrock model access](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html) enabled for your chosen model (default: Claude Sonnet) in your target region +* One or more [Bedrock AgentCore agent runtimes](https://docs.aws.amazon.com/bedrock/latest/userguide/agentcore.html) already deployed and accessible + +## Deployment Instructions + +1. Create a new directory, navigate to that directory in a terminal and clone the GitHub repository: + ``` + git clone https://github.com/aws-samples/step-functions-workflows-collection + ``` +1. Change directory to the pattern directory: + ``` + cd step-functions-workflows-collection/sfn-agentcore-bedrock-cdk + ``` +1. Install dependencies: + ``` + npm install + ``` +1. Deploy the stack with your AgentCore runtime ARNs: + ``` + cdk deploy \ + --parameters AgentRuntimeArns=arn:aws:bedrock-agentcore:us-east-1:123456789012:runtime/agent1,arn:aws:bedrock-agentcore:us-east-1:123456789012:runtime/agent2 \ + --parameters BedrockModelId=us.anthropic.claude-sonnet-4-20250514-v1:0 + ``` +1. Note the outputs from the CDK deployment process. These contain the resource names and/or ARNs which are used for testing. + +## How it works + +1. The **Trigger Lambda** receives a prompt and a list of AgentCore runtime ARNs, then starts the Step Functions state machine execution. +2. The **Map state** fans out to invoke each AgentCore agent in parallel. Each iteration calls the **Invoke Agent Lambda**, which uses the bundled `@aws-sdk/client-bedrock-agentcore` SDK to call `InvokeAgentRuntime` and collect the streaming response. +3. After all agents respond, the **Aggregate Lambda** uses Amazon Bedrock Converse (Claude) to synthesize all agent responses into a single coherent summary. +4. The state machine returns the aggregated summary along with the agent count. + +### Important Notes + +- **Bundled SDK**: The `@aws-sdk/client-bedrock-agentcore` package is not included in the Lambda runtime. The invoke-agent function uses `NodejsFunction` with esbuild bundling to include it. +- **Streaming Response**: `InvokeAgentRuntime` returns a streaming response, which cannot be consumed directly by Step Functions SDK integrations. A Lambda intermediary collects the stream and returns the full response. +- **Enforced Guardrails**: If your account has account-level enforced guardrails configured, all roles that call Bedrock must have `bedrock:ApplyGuardrail` permission. + +## Image + +![image](./resources/statemachine.png) + +## Testing + +1. Invoke the trigger function with a prompt and your agent runtime ARNs: + ```bash + aws lambda invoke \ + --function-name \ + --payload '{ + "prompt": "What are the best practices for building serverless applications?", + "agentRuntimeArns": [ + "arn:aws:bedrock-agentcore:us-east-1:123456789012:runtime/agent1", + "arn:aws:bedrock-agentcore:us-east-1:123456789012:runtime/agent2" + ] + }' \ + --cli-binary-format raw-in-base64-out \ + output.json + ``` + +2. The trigger returns the Step Functions execution ARN. Monitor the execution: + ```bash + aws stepfunctions describe-execution \ + --execution-arn + ``` + +3. Once the execution completes (status: `SUCCEEDED`), view the output which contains the aggregated summary from all agents. + +## Cleanup + +1. Delete the stack + ```bash + cdk destroy + ``` +1. Confirm the stack has been deleted + ```bash + aws cloudformation list-stacks --query "StackSummaries[?contains(StackName,'SfnAgentcoreBedrockStack')].StackStatus" + ``` +---- +Copyright 2026 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +SPDX-License-Identifier: MIT-0 diff --git a/sfn-agentcore-bedrock-cdk/bin/app.ts b/sfn-agentcore-bedrock-cdk/bin/app.ts new file mode 100644 index 00000000..80b11b80 --- /dev/null +++ b/sfn-agentcore-bedrock-cdk/bin/app.ts @@ -0,0 +1,7 @@ +#!/usr/bin/env node +import 'source-map-support/register'; +import * as cdk from 'aws-cdk-lib'; +import { SfnAgentcoreBedrockStack } from '../lib/sfn-agentcore-bedrock-stack'; + +const app = new cdk.App(); +new SfnAgentcoreBedrockStack(app, 'SfnAgentcoreBedrockStack'); diff --git a/sfn-agentcore-bedrock-cdk/cdk.json b/sfn-agentcore-bedrock-cdk/cdk.json new file mode 100644 index 00000000..27fe6d2e --- /dev/null +++ b/sfn-agentcore-bedrock-cdk/cdk.json @@ -0,0 +1,3 @@ +{ + "app": "npx ts-node bin/app.ts" +} diff --git a/sfn-agentcore-bedrock-cdk/example-workflow.json b/sfn-agentcore-bedrock-cdk/example-workflow.json new file mode 100644 index 00000000..6ca2188f --- /dev/null +++ b/sfn-agentcore-bedrock-cdk/example-workflow.json @@ -0,0 +1,82 @@ +{ + "title": "Step Functions with Bedrock AgentCore Multi-Agent Orchestration", + "description": "Use AWS Step Functions to orchestrate multiple Bedrock AgentCore agents in parallel via a Map state, then aggregate their responses into a unified summary using Bedrock Converse.", + "language": "TypeScript", + "simplicity": "3 - Application", + "usecase": "", + "type": "Standard", + "diagram": "/resources/statemachine.png", + "videoId": "", + "level": "400", + "framework": "CDK", + "services": ["bedrock", "lambda", "stepfunctions"], + "introBox": { + "headline": "How it works", + "text": [ + "This workflow deploys a Step Functions state machine that invokes multiple Bedrock AgentCore agents in parallel using a Map state, then aggregates their responses into a single coherent summary via Amazon Bedrock Converse.", + "The workflow: (1) A trigger Lambda starts the state machine with a prompt and list of agent runtime ARNs, (2) the Map state fans out to invoke each AgentCore agent in parallel via a bundled Lambda intermediary, (3) an aggregate Lambda uses Bedrock Converse to synthesize all agent responses into a unified summary.", + "Key architectural decisions: The @aws-sdk/client-bedrock-agentcore SDK is not available in the Lambda runtime and must be bundled using NodejsFunction. InvokeAgentRuntime returns a streaming response, requiring a Lambda intermediary rather than direct Step Functions SDK integration." + ] + }, + "testing": { + "headline": "Testing", + "text": [ + "See the GitHub repo for detailed testing instructions." + ] + }, + "cleanup": { + "headline": "Cleanup", + "text": [ + "1. Delete the stack: cdk destroy." + ] + }, + "deploy": { + "text": [ + "cdk deploy --parameters AgentRuntimeArns= --parameters BedrockModelId=" + ] + }, + "gitHub": { + "template": { + "repoURL": "https://github.com/aws-samples/step-functions-workflows-collection/tree/main/sfn-agentcore-bedrock-cdk/", + "templateDir": "sfn-agentcore-bedrock-cdk", + "templateFile": "lib/sfn-agentcore-bedrock-stack.ts", + "ASL": "statemachine/statemachine.asl.json" + }, + "payloads": [ + { + "headline": "", + "payloadURL": "" + } + ] + }, + "resources": { + "headline": "Additional resources", + "bullets": [ + { + "text": "Amazon Bedrock AgentCore Documentation", + "link": "https://docs.aws.amazon.com/bedrock/latest/userguide/agentcore.html" + }, + { + "text": "AWS Step Functions Map State", + "link": "https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-map-state.html" + }, + { + "text": "Amazon Bedrock Converse API", + "link": "https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference-call.html" + }, + { + "text": "The AWS Step Functions Workshop", + "link": "https://catalog.workshops.aws/stepfunctions/en-US" + } + ] + }, + "authors": [ + { + "name": "Nithin Chandran R", + "image": "https://avatars.githubusercontent.com/u/NithinChandranR-AWS", + "bio": "Nithin is a Technical Account Manager at AWS who builds serverless patterns and AI agent orchestration solutions.", + "linkedin": "nithin-chandran-r", + "twitter": "" + } + ] +} diff --git a/sfn-agentcore-bedrock-cdk/lib/sfn-agentcore-bedrock-stack.ts b/sfn-agentcore-bedrock-cdk/lib/sfn-agentcore-bedrock-stack.ts new file mode 100644 index 00000000..1cdea485 --- /dev/null +++ b/sfn-agentcore-bedrock-cdk/lib/sfn-agentcore-bedrock-stack.ts @@ -0,0 +1,162 @@ +import * as cdk from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as lambdaNode from 'aws-cdk-lib/aws-lambda-nodejs'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import * as sfn from 'aws-cdk-lib/aws-stepfunctions'; +import * as path from 'path'; + +export class SfnAgentcoreBedrockStack extends cdk.Stack { + constructor(scope: Construct, id: string, props?: cdk.StackProps) { + super(scope, id, props); + + const agentRuntimeArnsParam = new cdk.CfnParameter(this, 'AgentRuntimeArns', { + type: 'String', + default: 'arn:aws:bedrock-agentcore:us-east-1:123456789012:runtime/placeholder-agent', + description: 'Comma-separated list of AgentCore runtime ARNs', + }); + + const bedrockModelIdParam = new cdk.CfnParameter(this, 'BedrockModelId', { + type: 'String', + default: 'us.anthropic.claude-sonnet-4-20250514-v1:0', + description: 'Bedrock model ID for aggregation', + }); + + // Lambda to invoke a single AgentCore agent (bundled SDK for streaming support) + const invokeAgentFn = new lambdaNode.NodejsFunction(this, 'InvokeAgentFn', { + entry: path.join(__dirname, '..', 'src', 'invoke-agent.ts'), + handler: 'handler', + runtime: lambda.Runtime.NODEJS_20_X, + memorySize: 256, + timeout: cdk.Duration.minutes(3), + bundling: { + minify: true, + sourceMap: false, + }, + }); + + invokeAgentFn.addToRolePolicy(new iam.PolicyStatement({ + actions: ['bedrock-agentcore:InvokeAgentRuntime'], + resources: ['*'], + })); + + // Aggregate Lambda — summarizes multi-agent responses via Bedrock Converse + const aggregateFn = new lambda.Function(this, 'AggregateFn', { + runtime: lambda.Runtime.NODEJS_20_X, + handler: 'aggregate.handler', + code: lambda.Code.fromAsset('src'), + memorySize: 256, + timeout: cdk.Duration.seconds(60), + environment: { + BEDROCK_MODEL_ID: bedrockModelIdParam.valueAsString, + }, + }); + + aggregateFn.addToRolePolicy(new iam.PolicyStatement({ + actions: ['bedrock:InvokeModel'], + resources: ['*'], + })); + + // Required when account-level enforced guardrails are active + aggregateFn.addToRolePolicy(new iam.PolicyStatement({ + actions: ['bedrock:ApplyGuardrail'], + resources: ['*'], + })); + + // SFN IAM Role + const sfnRole = new iam.Role(this, 'SfnRole', { + assumedBy: new iam.ServicePrincipal('states.amazonaws.com'), + }); + + sfnRole.addToPolicy(new iam.PolicyStatement({ + actions: ['lambda:InvokeFunction'], + resources: [invokeAgentFn.functionArn, aggregateFn.functionArn], + })); + + // State machine: Map → invoke agents in parallel → aggregate + const definition = { + Comment: 'Orchestrate multiple AgentCore agents in parallel and aggregate responses with Bedrock', + StartAt: 'InvokeAgents', + States: { + InvokeAgents: { + Type: 'Map', + ItemsPath: '$.agentRuntimeArns', + Parameters: { + 'agentRuntimeArn.$': '$$.Map.Item.Value', + 'prompt.$': '$.prompt', + }, + Iterator: { + StartAt: 'CallAgent', + States: { + CallAgent: { + Type: 'Task', + Resource: 'arn:aws:states:::lambda:invoke', + Parameters: { + FunctionName: invokeAgentFn.functionArn, + 'Payload.$': '$', + }, + OutputPath: '$.Payload', + Retry: [ + { + ErrorEquals: ['States.TaskFailed'], + IntervalSeconds: 15, + MaxAttempts: 2, + BackoffRate: 2, + }, + ], + End: true, + }, + }, + }, + ResultPath: '$.agentResults', + Next: 'AggregateResults', + }, + AggregateResults: { + Type: 'Task', + Resource: 'arn:aws:states:::lambda:invoke', + Parameters: { + FunctionName: aggregateFn.functionArn, + 'Payload.$': '$', + }, + OutputPath: '$.Payload', + End: true, + }, + }, + }; + + const stateMachine = new sfn.CfnStateMachine(this, 'StateMachine', { + definitionString: JSON.stringify(definition), + roleArn: sfnRole.roleArn, + stateMachineType: 'STANDARD', + }); + + // Trigger Lambda + const triggerFn = new lambda.Function(this, 'TriggerFn', { + runtime: lambda.Runtime.NODEJS_20_X, + handler: 'trigger.handler', + code: lambda.Code.fromAsset('src'), + memorySize: 256, + timeout: cdk.Duration.seconds(60), + environment: { + STATE_MACHINE_ARN: stateMachine.attrArn, + }, + }); + + triggerFn.addToRolePolicy(new iam.PolicyStatement({ + actions: ['states:StartExecution'], + resources: [stateMachine.attrArn], + })); + + new cdk.CfnOutput(this, 'StateMachineArn', { + value: stateMachine.attrArn, + }); + + new cdk.CfnOutput(this, 'TriggerFunctionName', { + value: triggerFn.functionName, + }); + + new cdk.CfnOutput(this, 'TriggerFunctionArn', { + value: triggerFn.functionArn, + }); + } +} diff --git a/sfn-agentcore-bedrock-cdk/package.json b/sfn-agentcore-bedrock-cdk/package.json new file mode 100644 index 00000000..40c9fc12 --- /dev/null +++ b/sfn-agentcore-bedrock-cdk/package.json @@ -0,0 +1,23 @@ +{ + "name": "sfn-agentcore-bedrock-cdk", + "version": "1.0.0", + "bin": { + "app": "bin/app.ts" + }, + "scripts": { + "build": "tsc", + "cdk": "cdk" + }, + "dependencies": { + "@aws-sdk/client-bedrock-agentcore": "^3.1032.0", + "aws-cdk-lib": "2.180.0", + "constructs": "10.4.2", + "source-map-support": "^0.5.21" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "esbuild": "^0.28.0", + "ts-node": "^10.9.0", + "typescript": "~5.4.0" + } +} diff --git a/sfn-agentcore-bedrock-cdk/resources/statemachine.png b/sfn-agentcore-bedrock-cdk/resources/statemachine.png new file mode 100644 index 0000000000000000000000000000000000000000..79c5ec20f3b0567c071da2067bf21573784e5bb2 GIT binary patch literal 91446 zcmeFY<(w!1AG}6)x-6fq8Dj_YMLxXgK5|Ro-Nh=@?(tWnx z_w$_hd^rEX3m<^_4SVm|`-*j~wXQet7mARF(1#!p2=ZJ>P7?$|vj%~%2(ZzCS1w!} z-vU3t<|>MEp!>hyxg8}*AP^nsxtz4NPu6aSch=(pPcA;hFJ7hh_hqUk;{=Hj+Q;NULr+OpS-?IIibXI5Lat~`+}an`L7`sRSZgdh2X*b0-L-C?lx
*#s1hZDR9zOca! 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

+?ege~L> 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 V@$kg4{3H { + const agentResults = event.agentResults || []; + + const responseSummary = agentResults.map((r, i) => + `Agent ${i + 1} (${r.agentRuntimeArn || 'unknown'}): ${r.response || 'No response'}` + ).join('\n\n'); + + const result = await bedrockClient.send(new ConverseCommand({ + modelId: MODEL_ID, + messages: [ + { + role: 'user', + content: [ + { + text: `Summarize and synthesize the following responses from multiple AI agents into a single coherent answer:\n\n${responseSummary}`, + }, + ], + }, + ], + })); + + const outputText = result.output?.message?.content?.[0]?.text || ''; + + return { + summary: outputText, + agentCount: agentResults.length, + }; +}; diff --git a/sfn-agentcore-bedrock-cdk/src/invoke-agent.ts b/sfn-agentcore-bedrock-cdk/src/invoke-agent.ts new file mode 100644 index 00000000..1295de75 --- /dev/null +++ b/sfn-agentcore-bedrock-cdk/src/invoke-agent.ts @@ -0,0 +1,33 @@ +import { BedrockAgentCoreClient, InvokeAgentRuntimeCommand } from '@aws-sdk/client-bedrock-agentcore'; + +const client = new BedrockAgentCoreClient(); + +export const handler = async (event) => { + const { agentRuntimeArn, prompt } = event; + + const response = await client.send(new InvokeAgentRuntimeCommand({ + agentRuntimeArn, + payload: Buffer.from(JSON.stringify({ prompt })), + contentType: 'application/json', + accept: 'application/json', + })); + + // Collect streaming response + let fullResponse = ''; + if (response.response) { + const reader = response.response; + if (typeof reader[Symbol.asyncIterator] === 'function') { + for await (const chunk of reader) { + fullResponse += typeof chunk === 'string' ? chunk : new TextDecoder().decode(chunk); + } + } else { + fullResponse = reader.toString(); + } + } + + return { + agentRuntimeArn, + response: fullResponse || 'No response', + sessionId: response.runtimeSessionId, + }; +}; diff --git a/sfn-agentcore-bedrock-cdk/src/trigger.mjs b/sfn-agentcore-bedrock-cdk/src/trigger.mjs new file mode 100644 index 00000000..4a7d2ca8 --- /dev/null +++ b/sfn-agentcore-bedrock-cdk/src/trigger.mjs @@ -0,0 +1,18 @@ +import { SFNClient, StartExecutionCommand } from '@aws-sdk/client-sfn'; + +const sfnClient = new SFNClient(); +const STATE_MACHINE_ARN = process.env.STATE_MACHINE_ARN; + +export const handler = async (event) => { + const { prompt, agentRuntimeArns } = event; + + const result = await sfnClient.send(new StartExecutionCommand({ + stateMachineArn: STATE_MACHINE_ARN, + input: JSON.stringify({ prompt, agentRuntimeArns }), + })); + + return { + statusCode: 200, + body: JSON.stringify({ executionArn: result.executionArn }), + }; +}; diff --git a/sfn-agentcore-bedrock-cdk/statemachine/statemachine.asl.json b/sfn-agentcore-bedrock-cdk/statemachine/statemachine.asl.json new file mode 100644 index 00000000..27885431 --- /dev/null +++ b/sfn-agentcore-bedrock-cdk/statemachine/statemachine.asl.json @@ -0,0 +1,49 @@ +{ + "Comment": "Orchestrate multiple AgentCore agents in parallel and aggregate responses with Bedrock", + "StartAt": "InvokeAgents", + "States": { + "InvokeAgents": { + "Type": "Map", + "ItemsPath": "$.agentRuntimeArns", + "Parameters": { + "agentRuntimeArn.$": "$$.Map.Item.Value", + "prompt.$": "$.prompt" + }, + "Iterator": { + "StartAt": "CallAgent", + "States": { + "CallAgent": { + "Type": "Task", + "Resource": "arn:aws:states:::lambda:invoke", + "Parameters": { + "FunctionName": "${InvokeAgentFunctionArn}", + "Payload.$": "$" + }, + "OutputPath": "$.Payload", + "Retry": [ + { + "ErrorEquals": ["States.TaskFailed"], + "IntervalSeconds": 15, + "MaxAttempts": 2, + "BackoffRate": 2 + } + ], + "End": true + } + } + }, + "ResultPath": "$.agentResults", + "Next": "AggregateResults" + }, + "AggregateResults": { + "Type": "Task", + "Resource": "arn:aws:states:::lambda:invoke", + "Parameters": { + "FunctionName": "${AggregateFunctionArn}", + "Payload.$": "$" + }, + "OutputPath": "$.Payload", + "End": true + } + } +} diff --git a/sfn-agentcore-bedrock-cdk/tsconfig.json b/sfn-agentcore-bedrock-cdk/tsconfig.json new file mode 100644 index 00000000..0da3f6ef --- /dev/null +++ b/sfn-agentcore-bedrock-cdk/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "commonjs", + "lib": ["es2020"], + "declaration": true, + "strict": true, + "noImplicitAny": true, + "strictNullChecks": true, + "noImplicitThis": true, + "alwaysStrict": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": false, + "inlineSourceMap": true, + "inlineSources": true, + "experimentalDecorators": true, + "strictPropertyInitialization": false, + "outDir": "./build", + "rootDir": ".", + "skipLibCheck": true + }, + "exclude": ["node_modules", "cdk.out"] +}