AI Agents · Ai

AWS Bedrock + Acumatica Integration

AWS Bedrock + Acumatica Integration is the work that defines the next phase of enterprise software. ERP systems hold the most valuable business data in the company — customers,.

John Kihiu12 min read

AWS Bedrock's pitch for an Acumatica integration is straightforward: if you're already running infrastructure on AWS, Bedrock gives you access to Claude and other foundation models through the same IAM, VPC, and logging controls you use for everything else, without sending traffic to a separate vendor's public API endpoint. That matters more for compliance-conscious ERP deployments than it does for a prototype.

Why Bedrock instead of a direct API

Calling Claude through Bedrock's InvokeModel or Converse API means the traffic stays inside your AWS account boundary, authenticated with IAM roles rather than a separately managed API key, and logged through CloudTrail alongside everything else you already audit. For an Acumatica customer whose infrastructure and compliance posture is already AWS-centric — VPC-hosted integration services, Lambda-based business event handlers — this removes one more external dependency and secret to manage.

PYTHON · BEDROCK CONVERSE CALL
import boto3

bedrock = boto3.client("bedrock-runtime", region_name="us-east-1")

response = bedrock.converse(
    modelId="anthropic.claude-sonnet-4-5-v1:0",
    messages=[{"role": "user", "content": [{"text": "Summarize this AP bill for review."}]}],
    toolConfig={"tools": [get_vendor_bill_tool_spec]},
    inferenceConfig={"maxTokens": 1024}
)

The tool-use flow is the same loop

Bedrock's Converse API exposes tool use in a broadly equivalent shape to Anthropic's native Messages API — the model returns a tool-use block, your code executes it against Acumatica's REST API, and you feed the result back. The architectural principles don't change with the hosting layer: narrow, typed tools; a hard split between read and write operations; human approval gating anything that posts a transaction.

Bedrock model availability and versions lag the native API

New Claude model versions typically land on Bedrock somewhat after they're available through Anthropic's own API, and region availability varies. If your integration needs the latest model capabilities immediately, check Bedrock's supported model list for your region before committing to it as the only path — Amazon publishes availability by region and it changes over time.

Triggering from Acumatica business events

A natural integration shape: an Acumatica business event (say, a new AP bill in a pending-review status) fires a webhook to an API Gateway endpoint backed by a Lambda function, which calls Bedrock to summarize or classify the bill, and writes the result back to a custom field via the Acumatica REST API. This keeps the AI call stateless and event-driven rather than polling, and keeps the Lambda function itself simple — it is glue, not business logic.

Cost and observability

Bedrock bills per-token like the native APIs, but CloudWatch gives you request-level metrics and cost allocation tags for free if your Lambda functions are already tagged by workload — useful for a multi-client MSP-style Acumatica practice that needs to attribute AI spend per customer without building separate billing infrastructure.

Wrapping up

Bedrock is not a different agent architecture — it's the same tool-use loop and guardrails, hosted inside AWS's identity and audit boundary. Choose it when that boundary already matters to your compliance posture, and confirm model version availability in your region before you commit. If you are stuck on something specific, reach out or keep reading through the rest of the Acumatica blog.

John Kihiu
Acumatica ERP Developer · Laravel Engineer

Independent software engineer in Nairobi specialising in Acumatica customisations, Laravel backends, and tax fiscalisation integrations across East and Southern Africa.