<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Srinivasan Chinnachamy</title>
    <description>The latest articles on Forem by Srinivasan Chinnachamy (@srinivasan-cloudarchitect).</description>
    <link>https://forem.com/srinivasan-cloudarchitect</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3202375%2Fb22fdb3b-724c-4ea4-91f1-437dbd86c91a.jpeg</url>
      <title>Forem: Srinivasan Chinnachamy</title>
      <link>https://forem.com/srinivasan-cloudarchitect</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/srinivasan-cloudarchitect"/>
    <language>en</language>
    <item>
      <title>From SDK to CLI: Making Sense of Bedrock Namespaces and Avoiding Cloud Shell Pitfalls</title>
      <dc:creator>Srinivasan Chinnachamy</dc:creator>
      <pubDate>Thu, 25 Dec 2025 12:17:30 +0000</pubDate>
      <link>https://forem.com/srinivasan-cloudarchitect/from-sdk-to-cli-making-sense-of-bedrock-namespaces-and-avoiding-cloud-shell-pitfalls-iam</link>
      <guid>https://forem.com/srinivasan-cloudarchitect/from-sdk-to-cli-making-sense-of-bedrock-namespaces-and-avoiding-cloud-shell-pitfalls-iam</guid>
      <description>&lt;p&gt;In this era of AI-driven SDLC, Amazon Bedrock has rapidly become the go-to platform for AWS builders to experiment and deploy intelligent applications with LLM models at scale. As the ecosystem evolves, so do the tools, namespaces, CLIs, and SDKs that support it. In Principle, AWS traditionally groups service operations into a single namespace, hundreds of operations neatly packaged under it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aws ec2 …&lt;/code&gt;&lt;br&gt;
&lt;code&gt;aws s3 …&lt;/code&gt;&lt;br&gt;
&lt;code&gt;aws iam …&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;But when you step into the world of Amazon Bedrock, the simplicity disappears. Developers working with AWS Bedrock Service today must navigate several moving parts to establish the tech stack.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aws bedrock&lt;/code&gt;&lt;br&gt;
&lt;code&gt;aws bedrock-runtime&lt;/code&gt;&lt;br&gt;
&lt;code&gt;aws bedrock-agent&lt;/code&gt;&lt;br&gt;
&lt;code&gt;aws bedrock-agent-runtime&lt;/code&gt;&lt;br&gt;
and the newer &lt;code&gt;aws bedrock-agentcore&lt;/code&gt; toolkit.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AWS VPC doesn’t even have its own namespace; it piggybacks on EC2&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I am writing this blog with an aim to demystify these namespaces, draw parallel comparisons between other namespaces, and finally highlight a subtle but frustrating limitation: AWS Cloud Shell cannot currently use all the latest Bedrock CLI namespaces, even though they work perfectly fine on a local machine&lt;/p&gt;
&lt;h2&gt;
  
  
  AWS Namespaces:
&lt;/h2&gt;

&lt;p&gt;AWS offers hundreds of services, each with multiple features, distinct API families, different operational lifecycles and sub-services or components within the same service domain. To access them via API calls, AWS provides Command Line Interface(CLI) utility and Software Development Kits(SDK’s). To avoid a monolithic structure of API calls, AWS organizes them into namespaces. They provide clear separation of responsibility, organized service level boundaries, handlers via IAM policies, allowing independent release cycles. Individual CLI calls are made of below format.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;aws 'service' 'operation'&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Older AWS services like EC2, S3, DynamoDB have flat, single namespaces. Those services were simpler when first launched. It was kept very straight forward with a dedicated namespace, dozens of operations wrapped around them.&lt;/p&gt;
&lt;h4&gt;
  
  
  For EC2:
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws ec2 describe-instances
aws ec2 create-route
aws ec2 modify-volume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3
ec2 = boto3.client('ec2')
response = ec2.describe_instances()
print(response)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;One namespace covers everything:&lt;br&gt;
Compute, networking attributes, metadata, EBS associations, placement groups — everything.&lt;/p&gt;

&lt;p&gt;Amazon Bedrock, by contrast, works differently because it contains distinct execution layers.&lt;/p&gt;
&lt;h2&gt;
  
  
  Bedrock Namespaces:
&lt;/h2&gt;

&lt;p&gt;With the pace of AI platform developments, Namespace belonging to Bedrock are categorized to enable them to evolve independently:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bedrock&lt;/code&gt; (control plane) changes infrequently&lt;br&gt;
&lt;code&gt;bedrock-runtime&lt;/code&gt; updates faster due to new model releases&lt;br&gt;
&lt;code&gt;bedrock-agent-runtime&lt;/code&gt; changes frequently due to new agent features&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bedrock Namespaces → decoupled evolution + backward compatibility.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcsbmewh7dslsqpv0l7wo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcsbmewh7dslsqpv0l7wo.png" alt=" " width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If everything was under one namespace, a small change would require a full service redeployment. Let’s have a look at every layer of Bedrock.&lt;/p&gt;
&lt;h3&gt;
  
  
  Layer 1 — bedrock:
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;aws bedrock&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3
client = boto3.client('bedrock')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This layer provides API operations for creating, managing, fine-turning, and evaluating Amazon Bedrock models.&lt;/p&gt;

&lt;p&gt;It provides handlers for&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model listing&lt;/li&gt;
&lt;li&gt;Model customization jobs&lt;/li&gt;
&lt;li&gt;Provisioned throughput&lt;/li&gt;
&lt;li&gt;Automated Reasoning&lt;/li&gt;
&lt;li&gt;Creating Guardrails&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;‘aws bedrock’ namespace focusses on LLM governance and acts as a control plane for Bedrock service&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Layer 2 — bedrock-runtime:
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;aws bedrock-runtime&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3
client = boto3.client('bedrock-runtime')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This layer provides API operations for running inference using Amazon Bedrock models&lt;/p&gt;

&lt;p&gt;It provides handlers to&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Invoke models (Claude, LLama, Amazon Nova, etc.)&lt;/li&gt;
&lt;li&gt;Generate embeddings&lt;/li&gt;
&lt;li&gt;Streaming or normal inference&lt;/li&gt;
&lt;li&gt;Manage invocation parameters&lt;/li&gt;
&lt;li&gt;Apply Guardrails&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;‘aws bedrock-runtime’ namespace focusses on model interactions with input prompts. Provides necessary components to generate Inference&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Layer 3 — bedrock-agent
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;aws bedrock-agent&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3
client = boto3.client('bedrock-agent')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This layer provides API operations for creating and managing Amazon Bedrock agents.&lt;/p&gt;

&lt;p&gt;It provides handlers for&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating agent&lt;/li&gt;
&lt;li&gt;Attaching knowledge bases&lt;/li&gt;
&lt;li&gt;Deploying agent alias&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;‘aws bedrock-agent’ namespace focusses on creation and preparation of Agents. this is one of the most frequently used feature&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Layer 4— bedrock-agent-runtime
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;aws bedrock-agent-runtime&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3
client = boto3.client('bedrock-agent-runtime')

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This layer provides API operations related to model invocation and querying of knowledge bases.&lt;/p&gt;

&lt;p&gt;It provides handlers to&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Invoke the deployed agent alias&lt;/li&gt;
&lt;li&gt;Maintain user sessions&lt;/li&gt;
&lt;li&gt;Provide multi-turn conversational memory&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;‘aws bedrock-agent-runtime’ namespace focusses on leveraging the agents that was already deployed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Layer 5— bedrock-agentcore
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;aws bedrock-agentcore&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3
client = boto3.client('bedrock-agentcore')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This layer provides API operations related to Local or remote execution of the new AgentCore engine.&lt;/p&gt;

&lt;p&gt;It provides handlers to&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Invoke agent locally&lt;/li&gt;
&lt;li&gt;Manage agent runtime sessions&lt;/li&gt;
&lt;li&gt;Test tools locally&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;‘aws bedrock-agentcore’ namespace focusses on developer based agentic framework providing greater flexibility for custom API integrations&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Key Takeaways on Bedrock Namespaces:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Calling an LLM ≠ running an agent with tools and memory.&lt;/li&gt;
&lt;li&gt;Runtimes require separate scaling and identity paths. 
&lt;em&gt;Foundation model inference runs on FM Runtime. 
Agent execution runs on Agent Runtime.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Permissions differ for each Bedrock actions. Bundling these under one namespace is logically impossible to establish least privilege access&lt;code&gt;(bedrock:InvokeModel,bedrock:InvokeAgent,bedrock:Retrieve,bedrock:InvokeAgentRuntime)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If your agents are created using Bedrock console, use &lt;code&gt;aws bedrock-agent-runtime invoke-agent ...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If your agents are deployed using latest Bedrock Agentcore features, consider &lt;code&gt;aws bedrock-agentcore invoke-agent-runtime ...&lt;/code&gt; for invoking them. &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  AWS Cloud Shell limitations
&lt;/h3&gt;

&lt;p&gt;When provisioning and experimenting with Bedrock Agents, developers working with SDK should be seamless. On the other hand, if we try to invoke CLI commands for executions from Terminal in a local machine, it works perfectly fine. Real pain point is on using AWS CloudShell for executing CLI calls.&lt;/p&gt;

&lt;p&gt;It is because, Cloud Shell currently ships with a slightly older version of AWS CLI. In other words, velocity of update for SDK is at far higher speed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws bedrock-agent-runtime invoke-agent ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only to receive:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws: [ERROR]: argument operation: Found invalid choice 'invoke-agent'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This happens because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your local machine may have a newer CLI that includes all Bedrock namespaces&lt;/li&gt;
&lt;li&gt;CloudShell cannot be upgraded by the user to the most recent one&lt;/li&gt;
&lt;li&gt;CloudShell CLI version lags behind new Bedrock service releases&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thus, CloudShell currently cannot invoke Bedrock Agents(at times) using native AWS CLI&lt;/p&gt;

&lt;p&gt;Developers eventually discover that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Boto3 works (because Python packages can be installed)&lt;/li&gt;
&lt;li&gt;AWS CLI commands for new namespaces/features do not&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a key nuance that surprises many, but helps to save peace of mind instead of striving to fix the CloudShell errors.&lt;/p&gt;

&lt;p&gt;Note: Bedrock SDK’s also goes for a frequent updates. Kindly check for the API syntax before starting a new project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;With various namespaces that we discussed above and with pace of AI developments, Amazon Bedrock is maturing into a multi-layered AI platform. With that evolution comes a CLI ecosystem that reflects the separation of concerns across model inference, agent orchestration, and runtime execution.&lt;/p&gt;

&lt;p&gt;For developers, understanding these namespaces — and the limitations of CloudShell — is critical for building and invoking Bedrock agents reliably.&lt;/p&gt;

</description>
      <category>bedrock</category>
      <category>aws</category>
      <category>agents</category>
      <category>ai</category>
    </item>
    <item>
      <title>From Prototype to Runtime: Operationalizing AI Agents on Amazon Bedrock AgentCore</title>
      <dc:creator>Srinivasan Chinnachamy</dc:creator>
      <pubDate>Wed, 24 Dec 2025 02:50:24 +0000</pubDate>
      <link>https://forem.com/srinivasan-cloudarchitect/from-prototype-to-runtime-operationalizing-ai-agents-on-amazon-bedrock-agentcore-fbi</link>
      <guid>https://forem.com/srinivasan-cloudarchitect/from-prototype-to-runtime-operationalizing-ai-agents-on-amazon-bedrock-agentcore-fbi</guid>
      <description>&lt;p&gt;As organizations experiment with agentic AI, many teams quickly realize that building an intelligent agent is only the first step. The real challenge begins when those agents must be deployed, secured, scaled, observed, and continuously updated in enterprise environments.&lt;/p&gt;

&lt;p&gt;With the emergence of standardized interaction patterns such as Model Context Protocol (MCP) and agent-to-agent (A2A) communication, AI agents are increasingly treated as long-running, production workloads rather than isolated experiments. This shift places new demands on platform engineering teams, who must extend existing cloud-native practices — such as containerization, CI/CD, networking, and governance — to support AI agents at runtime.&lt;/p&gt;

&lt;p&gt;In this blog, I explore how Amazon Bedrock AgentCore, together with the AgentCore Starter Toolkit, enables a structured and repeatable approach to operationalizing AI agents on AWS. Rather than focusing solely on agent logic, the toolkit helps teams define and manage the runtime infrastructure required to host agents securely and at scale.&lt;/p&gt;

&lt;p&gt;With AWS Bedrock AgentCore service, typical developer journey from agent logic to live execution can be broken down into the following stages&lt;/p&gt;

&lt;p&gt;Stage 1: Developing your codebase for agent and tool calling&lt;/p&gt;

&lt;p&gt;Stage 2: Provisioning your infrastructure to deploy agents&lt;/p&gt;

&lt;p&gt;Stage 3: Preparing your AgentCore runtime and the AgentCore endpoint&lt;/p&gt;

&lt;p&gt;Stage 4: Invocation of the deployed AgentCore runtime ARN&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Developers own agent logic and invocation, while platform teams manage infrastructure and AgentCore runtime preparation, enabling a scalable and governed agent platform.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  AgentCore Starter Toolkit
&lt;/h2&gt;

&lt;p&gt;Let’s begin with understanding the functional requirements to host an agent on AWS Bedrock AgentCore Runtime and look at what this toolkit offers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AgentCore Runtime act as a serverless container and AWS manages the underlying infrastructure&lt;/li&gt;
&lt;li&gt;Source code along with template shall be hosted in S3 bucket or&lt;/li&gt;
&lt;li&gt;Building a container image (ECR) packaging the source code with agent logic and necessary runtime dependencies&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To get started programmatically, AWS provides Bedrock AgentCore Starter Toolkit that acts as a boilerplate configuration to prepare and host agents on AgentCore Service. It is a python library and can be imported as below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;##install the toolkit
pip install bedrock-agentcore-starter-toolkit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;##invoking toolkit functions
from bedrock_agentcore_starter_toolkit import Runtime
agentcore_runtime = Runtime()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This toolkit helps you to provision runtime infrastructure that AI agents require and is shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdo9xeksy88ye8pyn72ho.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdo9xeksy88ye8pyn72ho.png" alt=" " width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upon successful deployment, Toolkit enables below capabilities&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source code with Agent logic and tool calling will be packaged as .zip file and be uploaded to the specified S3 bucket&lt;/li&gt;
&lt;li&gt;Triggers the Code build project, that acts as a CI server, to prepare a docker image by packaging the latest source code with necessary dependencies&lt;/li&gt;
&lt;li&gt;Pushes the Docker images to a Elastic Container Registry and fully version controls them&lt;/li&gt;
&lt;li&gt;Creates a Bedrock AgentCore YAML file that acts as a blueprint configuration of the target runtime infrastructure&lt;/li&gt;
&lt;li&gt;AgentCore Runtime will be created/updated with latest container image and generates a AgentCore endpoint (ARN)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;AgentCore Runtime doesn’t get a DNS name or static IP’s; you get an ARN that acts as the invocation endpoint&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s take a deeper look at the couple of toolkit constructs &lt;code&gt;configure()&lt;/code&gt; and &lt;code&gt;launch()&lt;/code&gt; which is more predominantly used for agent preparation with various configurations and deployment options.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. configure()
&lt;/h3&gt;

&lt;p&gt;This function is mainly used to design/construct infrastructure blueprint for the AgentCore Runtime.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def configure_bedrock_agentcore(
    agent_name: str,
    entrypoint_path: Path,
    create_mode_enabled: bool = False,
    execution_role: Optional[str] = None,
    code_build_execution_role: Optional[str] = None,
    ecr_repository: Optional[str] = None,
    s3_path: Optional[str] = None,
    container_runtime: Optional[str] = None,
    auto_create_ecr: bool = True,
    auto_create_s3: bool = True,
    auto_create_execution_role: bool = True,
    enable_observability: bool = True,
    memory_mode: Literal["NO_MEMORY", "STM_ONLY", "STM_AND_LTM"] = "NO_MEMORY",
    requirements_file: Optional[str] = None,
    authorizer_configuration: Optional[Dict[str, Any]] = None,
    request_header_configuration: Optional[Dict[str, Any]] = None,
    verbose: bool = False,
    region: Optional[str] = None,
    protocol: Optional[str] = None,
    non_interactive: bool = False,
    source_path: Optional[str] = None,
    vpc_enabled: bool = False,
    vpc_subnets: Optional[List[str]] = None,
    vpc_security_groups: Optional[List[str]] = None,
    idle_timeout: Optional[int] = None,
    max_lifetime: Optional[int] = None,
    deployment_type: str = "direct_code_deploy",
    runtime_type: Optional[str] = None,
    is_generated_by_agentcore_create: bool = False,
) -&amp;gt; ConfigureResult:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It allows you to specify&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Right entry path to your AI Agent. Generally, it corresponds to the python file that hosts @app.entrypoint annotation.&lt;/li&gt;
&lt;li&gt;Memory mode for the selected agent&lt;/li&gt;
&lt;li&gt;Private VPC information, in case of running these agents on your private VPC&lt;/li&gt;
&lt;li&gt;Inbound and Outbound Authentication controls&lt;/li&gt;
&lt;li&gt;Observability pillars&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Executing this function generates a YAML file &lt;code&gt;.bedrock_agentcore.yaml&lt;/code&gt; that holds the sufficient information,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To store the deployment state and configuration&lt;/li&gt;
&lt;li&gt;Track AWS resource ARNs and identifiers&lt;/li&gt;
&lt;li&gt;Enable future updates and management of the deployed agent&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;This file serves as the “state file” for your deployed agent, similar to how Terraform uses state files to track infrastructure.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  YAML file structure:
&lt;/h4&gt;

&lt;p&gt;we could see the clear sections such as Agent Memory, Identity controls, etc., which forms an agentic blueprint/ configuration as shown in the below example.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu35qg1os469s3aa0or19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu35qg1os469s3aa0or19.png" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. launch()
&lt;/h3&gt;

&lt;p&gt;This function takes the configured agents and deploys them into AWS managed infrastructure. It begins with dockerizing the application, uploading the container image to registry, integrating observability and generating a new endpoint&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def launch_bedrock_agentcore(
    config_path: Path,
    agent_name: Optional[str] = None,
    local: bool = False,
    use_codebuild: bool = True,
    env_vars: Optional[dict] = None,
    auto_update_on_conflict: bool = False,
    console: Optional[Console] = None,
    force_rebuild_deps: bool = False,
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In general, Agents deployed on AgentCore Runtime are Ephemeral containers — not persistent like EC2 and has Auto-scaling capability based on request volume&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The toolkit is designed to be idempotent — it could detect existing resources and avoid recreating them, but always backup your YAML before running&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Practical Scenario’s:
&lt;/h2&gt;

&lt;p&gt;Let me explain usage of these constructs with few practical scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Changing Network Configuration (PUBLIC → PRIVATE)
&lt;/h3&gt;

&lt;p&gt;While Public mode of VPC is fine for quick PoC and 'dev' environments,'Private' VPC shall be considered for higher environments. Use &lt;code&gt;.configure()&lt;/code&gt; for infrastructure changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from bedrock_agentcore_starter_toolkit import Runtime
agentcore_runtime = Runtime()
agentcore_runtime.configure(
    agent_name="strands_chat_agent",
    ## network_mode="PUBLIC",    
    network_mode="PRIVATE",
    network_mode_config={
        "subnet_ids": ["subnet-0627b3f5exxxxx",  "subnet-015f98bdxxxxxx"],
        "security_group_ids": ["sg-010348223xxxx"]
    }
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Update .bedrock_agentcore.yaml state file&lt;/li&gt;
&lt;li&gt;Modify the underlying AWS infrastructure (VPC configuration)&lt;/li&gt;
&lt;li&gt;Redeploy the agent with new network settings&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Adding More Tools to Your Agent
&lt;/h3&gt;

&lt;p&gt;As developers accelerate with agentic logic development, Use &lt;code&gt;.launch()&lt;/code&gt; to re-deploy your code changes&lt;br&gt;
This is like updating your application code without changing infrastructure — similar to deploying new application code in containers without modifying the Terraform infrastructure definition.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# After adding tools to agents/strands_chat_agent.py
from bedrock_agentcore_starter_toolkit import Runtime
agentcore_runtime = Runtime()
agentcore_runtime.launch(agent_name="strands_chat_agent")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rebuild the container with your updated agent code&lt;/li&gt;
&lt;li&gt;Push the new image to ECR and deploys the agent with latest code and versioning them&lt;/li&gt;
&lt;li&gt;No infrastructure changes — uses existing network, IAM roles, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Walk through:
&lt;/h2&gt;

&lt;p&gt;For a quick walkthrough, I have created a simple chat agent built on strands framework with simple tool calls and frontend with Stream lit, hosted in my GitHub public repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bedrock_AgentCore_Strands_ChatAgent/
├── agents/
│   └── strands_chat_agent.py    # Main agent implementation
├── tools/
│   ├── __init__.py
│   ├── random_tools.py        # Random generation tools
│   ├── text_tools.py          # Text processing tools
│   ├── time_tool.py           # Time-related tools
│   └── weather.py             # Weather information tool
├── streamlit_app.py           # Web interface
├── requirements.txt           # Python dependencies
└── README.md                  # This file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repository:&lt;br&gt;
&lt;a href="https://github.com/SrinivasanChinnachamy/Bedrock_AgentCore_Strands_ChatAgent" rel="noopener noreferrer"&gt;https://github.com/SrinivasanChinnachamy/Bedrock_AgentCore_Strands_ChatAgent&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Deployment Script:
&lt;/h3&gt;

&lt;p&gt;I have wrapped both &lt;code&gt;configure()&lt;/code&gt; and &lt;code&gt;launch()&lt;/code&gt; function in deploy.sh file as below. At this moment, we are leveraging AWS credentials in the local profile to execute the script and can easily be orchestrated by a dedicated pipeline later.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/env python3

# Deployment script for Strands Agent with Bedrock AgentCore
print("Starting deployment process...")

# Importing necessary libraries and establishing session
from bedrock_agentcore_starter_toolkit import Runtime
from boto3.session import Session

boto_session = Session()
region = boto_session.region_name
agentcore_runtime = Runtime()

# Begin AgentCore Configuration
agent_name = "strands_chat_agent"
configuration = agentcore_runtime.configure(
    entrypoint="agents/strands_chat_agent.py",
    auto_create_execution_role=True,
    auto_create_ecr=True,
    requirements_file="requirements.txt",
    region=region,
    agent_name=agent_name
)
print(configuration)

# Trigger AgentCore deployment and Launch Runtime
launch_agent = agentcore_runtime.launch()
print(f"Agent launched: {launch_agent}")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Upon successful execution, you could observe all the relevant components along with observability tools are being provisioned.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffb4ns3zqwc9cnrvpoudx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffb4ns3zqwc9cnrvpoudx.png" alt=" " width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Updating agents:
&lt;/h3&gt;

&lt;p&gt;Now, let’s add one more tool to enhance the agent capabilities in the GitHub repository and re-run the &lt;code&gt;deploy.sh&lt;/code&gt;script to trigger a new deployment. Refer to the commits in the repository for the details&lt;/p&gt;

&lt;p&gt;Upon successful execution, we could see the updated version on the Bedrock AgentCore runtime.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Latest version will be made as a default endpoint to serve the traffic.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsr521l6w65h9i99ubhy0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsr521l6w65h9i99ubhy0.png" alt=" " width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;During this process, we’ve got all the supporting components updated to the next versions.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Source code is zipped and versioned in S3 bucket&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp088rwgzrxqeblz6xtni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp088rwgzrxqeblz6xtni.png" alt=" " width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Code Build event is triggered for every commit to containerize the source code&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi96rcv6l3g5d7nsu3coz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi96rcv6l3g5d7nsu3coz.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Container images are stored and versioned in ECR&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6no3qc15aui3mgb26x28.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6no3qc15aui3mgb26x28.png" alt=" " width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion:
&lt;/h2&gt;

&lt;p&gt;We have seen that, Amazon Bedrock AgentCore, together with the AgentCore Starter Toolkit, provides a structured and scalable approach to operationalize AI agents in all the environments. Whether you are enabling private VPC deployments, rolling out new tools, or building CI/CD pipelines for agent updates, the AgentCore Starter Toolkit offers a pragmatic path from code to invocation.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;configure()&lt;/code&gt; and &lt;code&gt;launch()&lt;/code&gt; constructs, backed by the stateful &lt;code&gt;.bedrock_agentcore.yaml&lt;/code&gt; file clearly separates the responsibility. Developers can focus on agent logic, tool integrations, and invocation patterns, while platform teams manage networking, security, observability, and lifecycle controls.&lt;br&gt;
I know it is quite lengthy blog, Thanks for reading it till the end.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>bedrock</category>
      <category>agentcore</category>
      <category>agenticai</category>
    </item>
  </channel>
</rss>
