From 1840d589a4dadda541cbd60934045b32ad4d63e9 Mon Sep 17 00:00:00 2001
From: Reethi Joseph <reethi@amazon.com>
Date: Wed, 18 Dec 2024 21:39:18 +0530
Subject: [PATCH 1/4] initial commit - adding Amazon Bedrock Agents pattern

---
 bedrock-agents-lambda-cdk/README.md           |  96 ++++++++++++++++++
 bedrock-agents-lambda-cdk/app.py              |  23 +++++
 bedrock-agents-lambda-cdk/cdk.json            |  69 +++++++++++++
 .../example-pattern.json                      |  57 +++++++++++
 .../image/architecture.png                    | Bin 0 -> 112507 bytes
 .../lambda/bedrock_agents_lambda.py           |  32 ++++++
 bedrock-agents-lambda-cdk/requirements.txt    |   2 +
 bedrock-agents-lambda-cdk/stacks/__init__.py  |   0
 .../stacks/bedrock_agents_lambda_cdk_stack.py |  78 ++++++++++++++
 9 files changed, 357 insertions(+)
 create mode 100644 bedrock-agents-lambda-cdk/README.md
 create mode 100644 bedrock-agents-lambda-cdk/app.py
 create mode 100644 bedrock-agents-lambda-cdk/cdk.json
 create mode 100644 bedrock-agents-lambda-cdk/example-pattern.json
 create mode 100644 bedrock-agents-lambda-cdk/image/architecture.png
 create mode 100644 bedrock-agents-lambda-cdk/lambda/bedrock_agents_lambda.py
 create mode 100644 bedrock-agents-lambda-cdk/requirements.txt
 create mode 100644 bedrock-agents-lambda-cdk/stacks/__init__.py
 create mode 100644 bedrock-agents-lambda-cdk/stacks/bedrock_agents_lambda_cdk_stack.py

diff --git a/bedrock-agents-lambda-cdk/README.md b/bedrock-agents-lambda-cdk/README.md
new file mode 100644
index 000000000..85bfee478
--- /dev/null
+++ b/bedrock-agents-lambda-cdk/README.md
@@ -0,0 +1,96 @@
+# Serverlessland - Amazon Bedrock Agents with AWS Lambda
+
+[Image: image/architecture.png]
+In this pattern, we show you how to use Amazon Bedrock Agents to call an API and get the results from it for a user. Bedrock Agents is helpful in various situations such as fetching real-time information from APIs, interacting with knowledge bases, and performing actions based on user inputs. For more information on Bedrock agents, see [Automate tasks in your application using AI agents](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html).
+
+> [!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)
+* [Install AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/cli.html)
+* [Install Python 3](https://www.python.org/downloads/)
+* [Grant Bedrock Model Access for Claude 3 Sonnet](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
+
+## 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/serverless-patterns
+```
+
+1. Change directory to the pattern directory:
+
+```
+cd bedrock-agents-lambda-cdk
+```
+
+1. Create a virtual environment for Python:
+
+```
+python3 -m venv .venv
+```
+
+1. Activate the virtual environment:
+
+```
+source .venv/bin/activate
+```
+
+For a Windows platform, activate the virtualenv like this:
+
+```
+.venv\Scripts\activate.bat
+```
+
+1. Install the required Python dependencies:
+
+```
+pip install -r requirements.txt
+```
+
+1. Bootstrap the AWS environment, if you haven't already done so:
+
+```
+cdk bootstrap
+```
+
+1. Review the CloudFormation template AWS CDK generates for the stack:
+
+```
+cdk synth
+```
+
+1. Deploy the AWS resources:
+
+```
+cdk deploy
+```
+
+
+## How it works
+
+Bedrock agent processes user input through a foundation model to determine its next steps. It then decides whether to invoke an action or query a knowledge base. For performing an action it has action groups defined, in this example we are using a Lambda function which invokes an API. It either executes the action or it gathers more information from its knowledge base or the user. The agent generates an observation from these results, which it uses to generate final response or determine if it needs more user input, allowing for dynamic and context-aware interactions.
+
+## Testing
+
+To test the Bedrock agent, we will need to use the AWS console. The Lambda function will call the International Space Station API to fetch its location, so it can answer questions such as “What is the current location of ISS'”, “Where is ISS?'”, “Where is the internation space station now”, etc
+
+1. Navigate to the Amazon Bedrock Agents page on the AWS console
+2. Selected the deployed agent ISSLocationAgent
+3. If you don’t see a Test section on the right pane, click on **Test**
+4. Enter a message similar to “What is the current location of ISS'” and notice that the results are returned
+
+## Cleanup
+
+1. Run below script in the `bedrock-agents-lambda-cdk` directory to delete AWS resources created by this sample stack.
+
+```
+cdk destroy
+```
+
+
diff --git a/bedrock-agents-lambda-cdk/app.py b/bedrock-agents-lambda-cdk/app.py
new file mode 100644
index 000000000..5c253fd45
--- /dev/null
+++ b/bedrock-agents-lambda-cdk/app.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python3
+import os
+
+import aws_cdk as cdk
+
+from stacks.bedrock_agents_lambda_cdk_stack import BedrockAgentsLambdaCdkStack
+
+
+app = cdk.App()
+BedrockAgentsLambdaCdkStack(app, "BedrockAgentsLambdaCdkStack",
+    # If you don't specify 'env', this stack will be environment-agnostic.
+    # Account/Region-dependent features and context lookups will not work,
+    # but a single synthesized template can be deployed anywhere.
+
+    # Uncomment the next line to specialize this stack for the AWS Account
+    # and Region that are implied by the current CLI configuration.
+
+    #env=cdk.Environment(account=os.getenv('CDK_DEFAULT_ACCOUNT'), region=os.getenv('CDK_DEFAULT_REGION')),
+
+    # For more information, see https://docs.aws.amazon.com/cdk/latest/guide/environments.html
+    )
+
+app.synth()
diff --git a/bedrock-agents-lambda-cdk/cdk.json b/bedrock-agents-lambda-cdk/cdk.json
new file mode 100644
index 000000000..20c5a8fe0
--- /dev/null
+++ b/bedrock-agents-lambda-cdk/cdk.json
@@ -0,0 +1,69 @@
+{
+  "app": "python3 app.py",
+  "watch": {
+    "include": [
+      "**"
+    ],
+    "exclude": [
+      "README.md",
+      "cdk*.json",
+      "requirements*.txt",
+      "source.bat",
+      "**/__init__.py",
+      "**/__pycache__",
+      "tests"
+    ]
+  },
+  "context": {
+    "@aws-cdk/aws-lambda:recognizeLayerVersion": true,
+    "@aws-cdk/core:checkSecretUsage": true,
+    "@aws-cdk/core:target-partitions": [
+      "aws",
+      "aws-cn"
+    ],
+    "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true,
+    "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": true,
+    "@aws-cdk/aws-ecs:arnFormatIncludesClusterName": true,
+    "@aws-cdk/aws-iam:minimizePolicies": true,
+    "@aws-cdk/core:validateSnapshotRemovalPolicy": true,
+    "@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": true,
+    "@aws-cdk/aws-s3:createDefaultLoggingPolicy": true,
+    "@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": true,
+    "@aws-cdk/aws-apigateway:disableCloudWatchRole": true,
+    "@aws-cdk/core:enablePartitionLiterals": true,
+    "@aws-cdk/aws-events:eventsTargetQueueSameAccount": true,
+    "@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker": true,
+    "@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName": true,
+    "@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy": true,
+    "@aws-cdk/aws-route53-patters:useCertificate": true,
+    "@aws-cdk/customresources:installLatestAwsSdkDefault": false,
+    "@aws-cdk/aws-rds:databaseProxyUniqueResourceName": true,
+    "@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup": true,
+    "@aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId": true,
+    "@aws-cdk/aws-ec2:launchTemplateDefaultUserData": true,
+    "@aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachments": true,
+    "@aws-cdk/aws-redshift:columnId": true,
+    "@aws-cdk/aws-stepfunctions-tasks:enableEmrServicePolicyV2": true,
+    "@aws-cdk/aws-ec2:restrictDefaultSecurityGroup": true,
+    "@aws-cdk/aws-apigateway:requestValidatorUniqueId": true,
+    "@aws-cdk/aws-kms:aliasNameRef": true,
+    "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": true,
+    "@aws-cdk/core:includePrefixInUniqueNameGeneration": true,
+    "@aws-cdk/aws-efs:denyAnonymousAccess": true,
+    "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": true,
+    "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": true,
+    "@aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId": true,
+    "@aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters": true,
+    "@aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier": true,
+    "@aws-cdk/aws-rds:preventRenderingDeprecatedCredentials": true,
+    "@aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource": true,
+    "@aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction": true,
+    "@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse": true,
+    "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": true,
+    "@aws-cdk/aws-kms:reduceCrossAccountRegionPolicyScope": true,
+    "@aws-cdk/aws-eks:nodegroupNameAttribute": true,
+    "@aws-cdk/aws-ec2:ebsDefaultGp3Volume": true,
+    "@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm": true,
+    "@aws-cdk/custom-resources:logApiResponseDataPropertyTrueDefault": false
+  }
+}
diff --git a/bedrock-agents-lambda-cdk/example-pattern.json b/bedrock-agents-lambda-cdk/example-pattern.json
new file mode 100644
index 000000000..c100f208d
--- /dev/null
+++ b/bedrock-agents-lambda-cdk/example-pattern.json
@@ -0,0 +1,57 @@
+{
+    "title": "Amazon Bedrock Agents with AWS Lambda",
+    "description": "Create a agent with Amazon Bedrock with a Lambda function action group",
+    "language": "Python",
+    "level": "300",
+    "framework": "CDK",
+    "introBox": {
+      "headline": "How it works",
+      "text": [
+        "In this pattern, we show you how to use Amazon Bedrock Agents to call an API and get the results from it for a user. Bedrock Agents is helpful in various situations such as fetching real-time information from APIs, interacting with knowledge bases, and performing actions based on user inputs.",
+        "It processes user input through a foundation model to determine its next steps. It then decides whether to invoke an action or query a knowledge base. For performing an action it has action groups defined, in this example we are using a Lambda function which invokes an API. It then either executes the action or it gathers more information from its knowledge base or the user. The agent generates an observation from these results, which it uses to update its understanding. This cycle continues until the agent can provide a final response or needs more user input, allowing for dynamic and context-aware interactions."
+      ]
+    },
+    "gitHub": {
+      "template": {
+        "repoURL": "https://github.com/aws-samples/serverless-patterns/tree/main/bedrock-agents-lambda-cdk",
+        "templateURL": "serverless-patterns/bedrock-agents-lambda-cdk",
+        "projectFolder": "bedrock-agents-lambda-cdk",
+        "templateFile": "stacks/bedrock_agents_lambda_cdk_stack.py"
+      }
+    },
+    "resources": {
+      "bullets": [
+        {
+          "text": "Bedrock Agents",
+          "link": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html"
+        },
+        {
+          "text": "Creating Bedrock Agent Action Groups",
+          "link": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents-action-create.html"
+        }
+      ]
+    },
+    "deploy": {
+      "text": [
+        "cdk deploy"
+      ]
+    },
+    "testing": {
+      "text": [
+        "See the GitHub repo for detailed testing instructions."
+      ]
+    },
+    "cleanup": {
+      "text": [
+        "Delete the stack: <code>cdk destroy</code>."
+      ]
+    },
+    "authors": [
+      {
+        "name": "Reethi Joseph",
+        "image": "https://drive.google.com/file/d/1fthW0WuTMx8dKt3EPoh6NHFdj-jBrtvf/view",
+        "bio": "Reethi is a Senior Cloud Engineer at AWS.",
+        "linkedin": "https://www.linkedin.com/in/reethi-joseph/"
+      }
+    ]
+  }
\ No newline at end of file
diff --git a/bedrock-agents-lambda-cdk/image/architecture.png b/bedrock-agents-lambda-cdk/image/architecture.png
new file mode 100644
index 0000000000000000000000000000000000000000..2bea8e70b71b14553f79cc5b54b35030353cd90e
GIT binary patch
literal 112507
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
DQl)ZH

literal 0
HcmV?d00001

diff --git a/bedrock-agents-lambda-cdk/lambda/bedrock_agents_lambda.py b/bedrock-agents-lambda-cdk/lambda/bedrock_agents_lambda.py
new file mode 100644
index 000000000..4ad6bc28f
--- /dev/null
+++ b/bedrock-agents-lambda-cdk/lambda/bedrock_agents_lambda.py
@@ -0,0 +1,32 @@
+import json
+import urllib3
+from urllib3.util import Retry
+
+
+def lambda_handler(event, context):
+    http = urllib3.PoolManager(
+        retries=Retry(3, backoff_factor=0.5)
+    )
+    response = http.request(
+        'GET',
+        'http://api.open-notify.org/iss-now.json',
+        timeout=10.0
+    )
+    iss_data = json.loads(response.data.decode('utf-8'))
+    responseBody =  {
+        "TEXT": {
+            "body":  f"The ISS is currently at latitude {iss_data["iss_position"]['latitude']} and longitude {iss_data["iss_position"]['longitude']}"
+            }
+    }
+
+    action_response = {
+        'actionGroup': event['actionGroup'],
+        'function': event['function'],
+        'functionResponse': {
+            'responseBody': responseBody
+        }
+    }
+    function_response = {'response': action_response, 'messageVersion': event['messageVersion']}
+    print("Response: {}".format(function_response))
+
+    return function_response
diff --git a/bedrock-agents-lambda-cdk/requirements.txt b/bedrock-agents-lambda-cdk/requirements.txt
new file mode 100644
index 000000000..c7633e36c
--- /dev/null
+++ b/bedrock-agents-lambda-cdk/requirements.txt
@@ -0,0 +1,2 @@
+aws-cdk-lib==2.151.0
+constructs>=10.0.0,<11.0.0
diff --git a/bedrock-agents-lambda-cdk/stacks/__init__.py b/bedrock-agents-lambda-cdk/stacks/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/bedrock-agents-lambda-cdk/stacks/bedrock_agents_lambda_cdk_stack.py b/bedrock-agents-lambda-cdk/stacks/bedrock_agents_lambda_cdk_stack.py
new file mode 100644
index 000000000..eedcd2271
--- /dev/null
+++ b/bedrock-agents-lambda-cdk/stacks/bedrock_agents_lambda_cdk_stack.py
@@ -0,0 +1,78 @@
+from aws_cdk import (
+    Duration,
+    Stack,
+    aws_bedrock as bedrock,
+    aws_iam as iam,
+    aws_lambda 
+)
+from constructs import Construct
+
+class BedrockAgentsLambdaCdkStack(Stack):
+
+    def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
+        super().__init__(scope, construct_id, **kwargs)
+
+        # IAM role for Lambda
+        lambda_role = iam.Role(
+            self, 'ISSLocationLambdaRole',
+            assumed_by=iam.ServicePrincipal('lambda.amazonaws.com'),
+            description='Role for Lambda function',
+            managed_policies=[
+                iam.ManagedPolicy.from_aws_managed_policy_name('service-role/AWSLambdaBasicExecutionRole')
+            ]
+        )
+
+        # Lambda Function
+        ISS_lambda_function = aws_lambda.Function(
+            self, 'ISSLocationLambda',
+            runtime=aws_lambda.Runtime.PYTHON_3_12,
+            code=aws_lambda.Code.from_asset('lambda'),
+            handler='bedrock_agents_lambda.lambda_handler',
+            function_name="ISSLocationLambda", 
+            timeout=Duration.seconds(120),
+            role=lambda_role
+        )
+
+        #IAM role for Bedrock agent
+        bedrock_agent_role = iam.Role(
+            self, 'ISSLocationBedrockAgentRole',
+            assumed_by=iam.ServicePrincipal('bedrock.amazonaws.com'),
+            description='Role for Bedrock agent'
+        )
+        bedrock_agent_role.add_to_policy(iam.PolicyStatement(
+            actions=["bedrock:InvokeModel"],
+            resources= [
+                    f"arn:aws:bedrock:{self.region}::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0"
+                ]           
+        ))
+
+        # Bedrock Agent
+        cfn_agent = bedrock.CfnAgent(self, "ISSLocationAgent",
+        agent_name="ISSLocationAgent",
+        agent_resource_role_arn=bedrock_agent_role.role_arn,
+        foundation_model="anthropic.claude-3-sonnet-20240229-v1:0",
+        action_groups=[bedrock.CfnAgent.AgentActionGroupProperty(
+            action_group_name="get_iss_location",
+            action_group_executor=bedrock.CfnAgent.ActionGroupExecutorProperty(
+                lambda_= ISS_lambda_function.function_arn
+            ),
+            action_group_state="ENABLED",
+            function_schema=bedrock.CfnAgent.FunctionSchemaProperty(
+                functions=[bedrock.CfnAgent.FunctionProperty(
+                    name="get_iss_location",
+                    description="Get the current geographic location of the International Space Station",
+                )]
+        ),
+        skip_resource_in_use_check_on_delete=False
+        )],
+        instruction="You are an agent skilled at tracking and reporting the location of the International Space Station. Your role is to help users understand where the ISS is currently located by providing its geographic coordinates and other relevant location details.",
+        auto_prepare=True)
+
+        # Lambda resource based policy to allow Bedrock agent to invoke the Lambda
+        lambda_resource_policy = aws_lambda.CfnPermission(
+            self, 'ISSLocationLambdaResourcePolicy',
+            action='lambda:InvokeFunction',
+            function_name=ISS_lambda_function.function_name,
+            principal='bedrock.amazonaws.com',
+            source_arn=cfn_agent.attr_agent_arn
+        )   
\ No newline at end of file

From 60ffa4caed9ee21059c5e0b7c5c3467d68a094ea Mon Sep 17 00:00:00 2001
From: Reethi Joseph <reethi@amazon.com>
Date: Wed, 18 Dec 2024 23:04:10 +0530
Subject: [PATCH 2/4] updating README

---
 bedrock-agents-lambda-cdk/README.md | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/bedrock-agents-lambda-cdk/README.md b/bedrock-agents-lambda-cdk/README.md
index 85bfee478..91839f77d 100644
--- a/bedrock-agents-lambda-cdk/README.md
+++ b/bedrock-agents-lambda-cdk/README.md
@@ -1,6 +1,7 @@
 # Serverlessland - Amazon Bedrock Agents with AWS Lambda
 
-[Image: image/architecture.png]
+![Architecture](image/architecture.png)
+
 In this pattern, we show you how to use Amazon Bedrock Agents to call an API and get the results from it for a user. Bedrock Agents is helpful in various situations such as fetching real-time information from APIs, interacting with knowledge bases, and performing actions based on user inputs. For more information on Bedrock agents, see [Automate tasks in your application using AI agents](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html).
 
 > [!Important]
@@ -23,19 +24,19 @@ In this pattern, we show you how to use Amazon Bedrock Agents to call an API and
 git clone https://github.com/aws-samples/serverless-patterns
 ```
 
-1. Change directory to the pattern directory:
+2. Change directory to the pattern directory:
 
 ```
 cd bedrock-agents-lambda-cdk
 ```
 
-1. Create a virtual environment for Python:
+3. Create a virtual environment for Python:
 
 ```
 python3 -m venv .venv
 ```
 
-1. Activate the virtual environment:
+4. Activate the virtual environment:
 
 ```
 source .venv/bin/activate
@@ -47,25 +48,25 @@ For a Windows platform, activate the virtualenv like this:
 .venv\Scripts\activate.bat
 ```
 
-1. Install the required Python dependencies:
+5. Install the required Python dependencies:
 
 ```
 pip install -r requirements.txt
 ```
 
-1. Bootstrap the AWS environment, if you haven't already done so:
+6. Bootstrap the AWS environment, if you haven't already done so:
 
 ```
 cdk bootstrap
 ```
 
-1. Review the CloudFormation template AWS CDK generates for the stack:
+7. Review the CloudFormation template AWS CDK generates for the stack:
 
 ```
 cdk synth
 ```
 
-1. Deploy the AWS resources:
+8. Deploy the AWS resources:
 
 ```
 cdk deploy
@@ -81,13 +82,13 @@ Bedrock agent processes user input through a foundation model to determine its n
 To test the Bedrock agent, we will need to use the AWS console. The Lambda function will call the International Space Station API to fetch its location, so it can answer questions such as “What is the current location of ISS'”, “Where is ISS?'”, “Where is the internation space station now”, etc
 
 1. Navigate to the Amazon Bedrock Agents page on the AWS console
-2. Selected the deployed agent ISSLocationAgent
+2. Selected the deployed agent **ISSLocationAgent**
 3. If you don’t see a Test section on the right pane, click on **Test**
 4. Enter a message similar to “What is the current location of ISS'” and notice that the results are returned
 
 ## Cleanup
 
-1. Run below script in the `bedrock-agents-lambda-cdk` directory to delete AWS resources created by this sample stack.
+Run below script in the `bedrock-agents-lambda-cdk` directory to delete AWS resources created by this sample stack.
 
 ```
 cdk destroy

From 01cb57a301bdb003515a3fbb7fe27b3d602fc725 Mon Sep 17 00:00:00 2001
From: Reethi Joseph <reethi@amazon.com>
Date: Wed, 18 Dec 2024 23:09:59 +0530
Subject: [PATCH 3/4] updating README.md

---
 bedrock-agents-lambda-cdk/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bedrock-agents-lambda-cdk/README.md b/bedrock-agents-lambda-cdk/README.md
index 91839f77d..4aa5f731b 100644
--- a/bedrock-agents-lambda-cdk/README.md
+++ b/bedrock-agents-lambda-cdk/README.md
@@ -1,4 +1,4 @@
-# Serverlessland - Amazon Bedrock Agents with AWS Lambda
+# Amazon Bedrock Agents with AWS Lambda
 
 ![Architecture](image/architecture.png)
 

From c1e8ec464422e8b506e3dd6929ae244784acd4fe Mon Sep 17 00:00:00 2001
From: Manju Arakere <23362982+marakere@users.noreply.github.com>
Date: Tue, 14 Jan 2025 10:24:41 -0500
Subject: [PATCH 4/4] Create bedrock-agents-lambda-cdk.json

---
 .../bedrock-agents-lambda-cdk.json            | 76 +++++++++++++++++++
 1 file changed, 76 insertions(+)
 create mode 100644 bedrock-agents-lambda-cdk/bedrock-agents-lambda-cdk.json

diff --git a/bedrock-agents-lambda-cdk/bedrock-agents-lambda-cdk.json b/bedrock-agents-lambda-cdk/bedrock-agents-lambda-cdk.json
new file mode 100644
index 000000000..c31d81d22
--- /dev/null
+++ b/bedrock-agents-lambda-cdk/bedrock-agents-lambda-cdk.json
@@ -0,0 +1,76 @@
+{
+    "title": "Amazon Bedrock Agents with AWS Lambda",
+    "description": "Create a agent with Amazon Bedrock with a Lambda function action group",
+    "language": "Python",
+    "level": "300",
+    "framework": "CDK",
+    "introBox": {
+        "headline": "How it works",
+        "text": [
+            "In this pattern, we show you how to use Amazon Bedrock Agents to call an API and get the results from it for a user. Bedrock Agents is helpful in various situations such as fetching real-time information from APIs, interacting with knowledge bases, and performing actions based on user inputs.",
+            "It processes user input through a foundation model to determine its next steps. It then decides whether to invoke an action or query a knowledge base. For performing an action it has action groups defined, in this example we are using a Lambda function which invokes an API. It then either executes the action or it gathers more information from its knowledge base or the user. The agent generates an observation from these results, which it uses to update its understanding. This cycle continues until the agent can provide a final response or needs more user input, allowing for dynamic and context-aware interactions."
+        ]
+    },
+    "gitHub": {
+        "template": {
+            "repoURL": "https://github.com/aws-samples/serverless-patterns/tree/main/bedrock-agents-lambda-cdk",
+            "templateURL": "serverless-patterns/bedrock-agents-lambda-cdk",
+            "projectFolder": "bedrock-agents-lambda-cdk",
+            "templateFile": "stacks/bedrock_agents_lambda_cdk_stack.py"
+        }
+    },
+    "resources": {
+        "bullets": [
+            {
+                "text": "Bedrock Agents",
+                "link": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html"
+            },
+            {
+                "text": "Creating Bedrock Agent Action Groups",
+                "link": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents-action-create.html"
+            }
+        ]
+    },
+    "deploy": {
+        "text": [
+            "cdk deploy"
+        ]
+    },
+    "testing": {
+        "text": [
+            "See the GitHub repo for detailed testing instructions."
+        ]
+    },
+    "cleanup": {
+        "text": [
+            "Delete the stack: <code>cdk destroy</code>."
+        ]
+    },
+    "authors": [
+        {
+            "name": "Reethi Joseph",
+            "image": "https://drive.google.com/file/d/1fthW0WuTMx8dKt3EPoh6NHFdj-jBrtvf/view",
+            "bio": "Reethi is a Senior Cloud Engineer at AWS.",
+            "linkedin": "reethi-joseph"
+        }
+    ],
+    "patternArch": {
+        "icon1": {
+            "x": 20,
+            "y": 50,
+            "service": "bedrock",
+            "label": "Amazon Bedrock Agent"
+        },
+        "icon2": {
+            "x": 80,
+            "y": 50,
+            "service": "lambda",
+            "label": "AWS Lambda"
+        },
+        "line1": {
+            "from": "icon1",
+            "to": "icon2",
+            "label": ""
+        }
+    }
+}