{"id":31760,"date":"2026-07-21T16:00:09","date_gmt":"2026-07-21T10:30:09","guid":{"rendered":"https:\/\/opstree.com\/blog\/?p=31760"},"modified":"2026-07-21T16:17:39","modified_gmt":"2026-07-21T10:47:39","slug":"amazon-nova-act-hands-on-poc-part-2","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/amazon-nova-act-hands-on-poc-part-2\/","title":{"rendered":"Amazon Nova Act : Hands-On POC (Part 2)"},"content":{"rendered":"<h3>Objective of This SOP<\/h3>\n<p>By following this SOP, you will create a <strong>basic action-oriented AI workflow<\/strong> using <strong>Amazon Nova Act<\/strong> that:<\/p>\n<ul>\n<li>Reads CPU usage<\/li>\n<li>Checks a condition (CPU &gt; 80%)<\/li>\n<li>Executes an action using AWS Lambda<\/li>\n<li>Returns a result<\/li>\n<\/ul>\n<p>This is the <strong>foundation<\/strong> of Nova Act\u2013style AI.<\/p>\n<p><!-- notionvc: d7e34862-eb14-42a1-b564-b35f13e8f9da --><\/p>\n<h3>Prerequisites<\/h3>\n<p>Before starting, ensure you have:<\/p>\n<ul>\n<li>An AWS account<\/li>\n<li>Access to AWS Console<\/li>\n<li>Region set to <strong>us-east-1<\/strong><\/li>\n<li>Create the <a href=\"https:\/\/opstree.com\/blog\/attach-a-new-volume-to-ec2-instance\/\" target=\"_blank\" rel=\"noopener\">EC2 instance<\/a> and use this instance id for lambda<\/li>\n<li>Basic familiarity with AWS navigation<\/li>\n<\/ul>\n<h3>STEP 1: Log in to AWS Console<\/h3>\n<ol>\n<li>Open browser<\/li>\n<li>Go to: <a href=\"https:\/\/console.aws.amazon.com\" target=\"_blank\" rel=\"noopener\">https:\/\/console.aws.amazon.com<\/a><\/li>\n<li>Log in with your AWS credentials<\/li>\n<li>Set region (top-right) to <strong>us-east-1<\/strong><\/li>\n<\/ol>\n<h3>STEP 2: Enable Amazon Bedrock (AI Intelligence)<\/h3>\n<h4><strong>Purpose:<\/strong><\/h4>\n<p>This provides the \u201cthinking capability\u201d for the AI.<\/p>\n<h4>Steps:<\/h4>\n<ol>\n<li>In AWS search bar, type <strong>Bedrock<\/strong><\/li>\n<li>Open <a href=\"https:\/\/opstree.com\/blog\/how-amazon-bedrock-helps-you-leverage-generative-ai\/\" target=\"_blank\" rel=\"noopener\"><strong>Amazon Bedrock<\/strong><\/a><\/li>\n<li>From left menu, click <strong>Model access<\/strong><\/li>\n<li>Auto Enable:<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-31761 size-large\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-51-1024x454.png\" alt=\"\" width=\"1024\" height=\"454\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-51-1024x454.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-51-300x133.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-51-768x341.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-51-1536x681.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-51.png 1871w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>5. Go from left menu, click <span class=\"notion-enable-hover\" data-token-index=\"1\">Model Catalog<\/span><!-- notionvc: e284abb8-e111-4eaf-ad72-38f53ac26350 --><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31762\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-52-1024x460.png\" alt=\"\" width=\"1024\" height=\"460\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-52-1024x460.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-52-300x135.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-52-768x345.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-52-1536x690.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-52.png 1910w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>6. Click on <strong>Nova 2 Lite<\/strong><\/p>\n<p>Click on the yellow button: <strong>Open in Playground<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-31763 size-large\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-53-1024x469.png\" alt=\"\" width=\"1024\" height=\"469\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-53-1024x469.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-53-300x137.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-53-768x352.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-53-1536x704.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-53.png 1908w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>7. Type the message \u201chello\u201d to test whether Nova 2 Lite is working or not.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31764\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-54-1024x462.png\" alt=\"\" width=\"1024\" height=\"462\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-54-1024x462.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-54-300x135.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-54-768x346.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-54-1536x693.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-54.png 1914w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>It\u2019s Working.<\/p>\n<div style=\"border: 1px solid #d1d5db; padding: 16px; margin: 20px 0; background-color: #f0f4f8;\">\n<p style=\"margin: 0; font-weight: 600; font-size: 16px;\">Also Read: <a href=\"https:\/\/opstree.com\/blog\/amazon-nova-act-explained\/\" target=\"_blank\" rel=\"noopener\">Amazon Nova Act Explained: How Action-Oriented AI Is Transforming Enterprise Automation<\/a><\/p>\n<\/div>\n<h3>STEP 3: Create IAM Role (Permissions for Actions)<\/h3>\n<p><strong>Purpose:<\/strong><\/p>\n<p>Nova Act and lambda requires permission to interact with <a href=\"https:\/\/opstree.com\/aws-consulting-services\/\" target=\"_blank\" rel=\"noopener\">AWS services<\/a>.<\/p>\n<p>1. Search for <strong>IAM<\/strong><\/p>\n<p>2. Click <strong>Roles<\/strong> \u2192 <strong>Create role<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31765\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-55-1024x360.png\" alt=\"\" width=\"1024\" height=\"360\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-55-1024x360.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-55-300x106.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-55-768x270.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-55-1536x540.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-55.png 1905w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>3. Select:<\/p>\n<ul>\n<li>Trusted entity: <strong>AWS service<\/strong><\/li>\n<li>Use case: <strong>Lambda<\/strong><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31766\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-56-1024x454.png\" alt=\"\" width=\"1024\" height=\"454\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-56-1024x454.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-56-300x133.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-56-768x340.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-56-1536x681.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-56.png 1902w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>4. Click <strong>Next<\/strong><\/p>\n<h3>Add Permissions:<\/h3>\n<ul>\n<li><code>AWSLambdaBasicExecutionRole<\/code><\/li>\n<li><code>CloudWatchReadOnlyAccess<\/code><\/li>\n<li>cloudwatch+ec2<\/li>\n<\/ul>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\"><span style=\"color: #79c0ff;\">{<\/span>\r\n  <span style=\"color: #a5d6ff;\">\"Version\"<\/span>: <span style=\"color: #a5d6ff;\">\"2012-10-17\"<\/span>,\r\n  <span style=\"color: #a5d6ff;\">\"Statement\"<\/span>: <span style=\"color: #79c0ff;\">[<\/span>\r\n    <span style=\"color: #79c0ff;\">{<\/span>\r\n      <span style=\"color: #a5d6ff;\">\"Effect\"<\/span>: <span style=\"color: #a5d6ff;\">\"Allow\"<\/span>,\r\n      <span style=\"color: #a5d6ff;\">\"Action\"<\/span>: <span style=\"color: #79c0ff;\">[<\/span>\r\n        <span style=\"color: #a5d6ff;\">\"cloudwatch:GetMetricData\"<\/span>,\r\n        <span style=\"color: #a5d6ff;\">\"cloudwatch:GetMetricStatistics\"<\/span>,\r\n        <span style=\"color: #a5d6ff;\">\"cloudwatch:ListMetrics\"<\/span>,\r\n        <span style=\"color: #a5d6ff;\">\"ec2:DescribeInstances\"<\/span>,\r\n        <span style=\"color: #a5d6ff;\">\"ec2:RebootInstances\"<\/span>\r\n      <span style=\"color: #79c0ff;\">]<\/span>,\r\n      <span style=\"color: #a5d6ff;\">\"Resource\"<\/span>: <span style=\"color: #a5d6ff;\">\"*\"<\/span>\r\n    <span style=\"color: #79c0ff;\">}<\/span>\r\n  <span style=\"color: #79c0ff;\">]<\/span>\r\n<span style=\"color: #79c0ff;\">}<\/span><\/pre>\n<p>Role name:<\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 16px 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\">lambda-execution<\/pre>\n<p>Click <span class=\"notion-enable-hover\" data-token-index=\"1\">Create role <\/span> <!-- notionvc: cac1aa29-39da-49b6-a87a-9fc56bc32c41 --><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-31770 size-large\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-57-1024x456.png\" alt=\"\" width=\"1024\" height=\"456\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-57-1024x456.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-57-300x133.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-57-768x342.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-57-1536x683.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-57.png 1881w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>AI now has permission to perform actions.<\/p>\n<h3><strong>STEP 4 \u2013 Open the Lambda Console<\/strong><\/h3>\n<ul>\n<li>In the AWS Console search bar, type <strong>Lambda<\/strong><\/li>\n<li>Click on <strong>Lambda<\/strong><\/li>\n<li>Click <strong>Create function<\/strong><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31771\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-58-1024x388.png\" alt=\"\" width=\"1024\" height=\"388\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-58-1024x388.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-58-300x114.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-58-768x291.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-58-1536x583.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-58.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Function Create Settings<\/h3>\n<p>Select <strong>exactly<\/strong> the following options:<\/p>\n<p><strong>Function name:<\/strong> get_cpu_utilization<\/p>\n<p><strong>Runtime:<\/strong><\/p>\n<p>Python 3.12<\/p>\n<p><strong>Execution role:<\/strong><\/p>\n<p>Use an existing role<\/p>\n<p><strong>Role name: lambda-execution<\/strong><\/p>\n<p>Now click on <strong>Create function<\/strong>.<\/p>\n<p>Wait for a few seconds while the function is being created.<\/p>\n<p><!-- notionvc: 1788bb1e-1216-4d23-a9d3-e5adeb6a2e95 --><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31772\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-59-1024x465.png\" alt=\"\" width=\"1024\" height=\"465\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-59-1024x465.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-59-300x136.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-59-768x349.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-59-1536x698.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-59.png 1874w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><strong>When Lambda Opens \u2013 Go to the Code Tab<\/strong><\/p>\n<p>As soon as the <a href=\"https:\/\/opstree.com\/blog\/lambda-function-setup-guide-for-security-group-event-notifications-in-slack\/\" target=\"_blank\" rel=\"noopener\">Lambda function<\/a> opens, you will see the <strong>Code<\/strong> tab.<\/p>\n<p>There will be some default code already present.<\/p>\n<p>Delete the default code completely<\/p>\n<p><strong>Copy\u2013paste the full code below:<\/strong><\/p>\n<p><!-- notionvc: 760222fe-590f-41d0-8a00-fcf76c37cad7 --><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\"><span style=\"color: #ff7b72;\">import<\/span> <span style=\"color: #d2a8ff;\">json<\/span>\r\n<span style=\"color: #ff7b72;\">import<\/span> <span style=\"color: #d2a8ff;\">boto3<\/span>\r\n<span style=\"color: #ff7b72;\">from<\/span> <span style=\"color: #d2a8ff;\">datetime<\/span> <span style=\"color: #ff7b72;\">import<\/span> datetime, timedelta, timezone\r\n\r\ncw = boto3.client(<span style=\"color: #a5d6ff;\">\"cloudwatch\"<\/span>)\r\n\r\n<span style=\"color: #ff7b72;\">def<\/span> <span style=\"color: #d2a8ff;\">_extract_from_bedrock_event<\/span>(event):\r\n    <span style=\"color: #8b949e;\">\"\"\"\r\n    Bedrock Agent action-group (OpenAPI schema) sends:\r\n    event[\"requestBody\"][\"content\"][\"application\/json\"][\"properties\"] = [{name,type,value},...]\r\n    \"\"\"<\/span>\r\n\r\n    instance_id = <span style=\"color: #ff7b72;\">None<\/span>\r\n    minutes = <span style=\"color: #79c0ff;\">5<\/span>\r\n\r\n    rb = (\r\n        event.get(<span style=\"color: #a5d6ff;\">\"requestBody\"<\/span>, {})\r\n             .get(<span style=\"color: #a5d6ff;\">\"content\"<\/span>, {})\r\n             .get(<span style=\"color: #a5d6ff;\">\"application\/json\"<\/span>, {})\r\n             .get(<span style=\"color: #a5d6ff;\">\"properties\"<\/span>, [])\r\n    )\r\n\r\n    <span style=\"color: #ff7b72;\">for<\/span> p <span style=\"color: #ff7b72;\">in<\/span> rb:\r\n        <span style=\"color: #ff7b72;\">if<\/span> p.get(<span style=\"color: #a5d6ff;\">\"name\"<\/span>) == <span style=\"color: #a5d6ff;\">\"instanceId\"<\/span>:\r\n            instance_id = p.get(<span style=\"color: #a5d6ff;\">\"value\"<\/span>)\r\n\r\n        <span style=\"color: #ff7b72;\">if<\/span> p.get(<span style=\"color: #a5d6ff;\">\"name\"<\/span>) == <span style=\"color: #a5d6ff;\">\"minutes\"<\/span> <span style=\"color: #ff7b72;\">and<\/span> p.get(<span style=\"color: #a5d6ff;\">\"value\"<\/span>) <span style=\"color: #ff7b72;\">is not<\/span> <span style=\"color: #ff7b72;\">None<\/span>:\r\n            <span style=\"color: #ff7b72;\">try<\/span>:\r\n                minutes = int(p.get(<span style=\"color: #a5d6ff;\">\"value\"<\/span>))\r\n            <span style=\"color: #ff7b72;\">except<\/span>:\r\n                <span style=\"color: #ff7b72;\">pass<\/span>\r\n\r\n    <span style=\"color: #ff7b72;\">return<\/span> instance_id, minutes\r\n\r\n\r\n<span style=\"color: #ff7b72;\">def<\/span> <span style=\"color: #d2a8ff;\">lambda_handler<\/span>(event, context):\r\n\r\n    <span style=\"color: #8b949e;\"># Handle both Bedrock Agent events and manual Lambda test events<\/span>\r\n\r\n    <span style=\"color: #ff7b72;\">if<\/span> event.get(<span style=\"color: #a5d6ff;\">\"messageVersion\"<\/span>) == <span style=\"color: #a5d6ff;\">\"1.0\"<\/span>:\r\n        instance_id, minutes = _extract_from_bedrock_event(event)\r\n    <span style=\"color: #ff7b72;\">else<\/span>:\r\n        instance_id = event.get(<span style=\"color: #a5d6ff;\">\"instanceId\"<\/span>)\r\n        minutes = int(event.get(<span style=\"color: #a5d6ff;\">\"minutes\"<\/span>, <span style=\"color: #79c0ff;\">5<\/span>))\r\n\r\n    cpu_avg = <span style=\"color: #ff7b72;\">None<\/span>\r\n    datapoints = <span style=\"color: #79c0ff;\">0<\/span>\r\n\r\n    <span style=\"color: #ff7b72;\">if<\/span> instance_id:\r\n\r\n        end = datetime.now(timezone.utc)\r\n        start = end - timedelta(minutes=minutes)\r\n\r\n        resp = cw.get_metric_statistics(\r\n            Namespace=<span style=\"color: #a5d6ff;\">\"AWS\/EC2\"<\/span>,\r\n            MetricName=<span style=\"color: #a5d6ff;\">\"CPUUtilization\"<\/span>,\r\n            Dimensions=[\r\n                {\r\n                    <span style=\"color: #a5d6ff;\">\"Name\"<\/span>: <span style=\"color: #a5d6ff;\">\"InstanceId\"<\/span>,\r\n                    <span style=\"color: #a5d6ff;\">\"Value\"<\/span>: instance_id\r\n                }\r\n            ],\r\n            StartTime=start,\r\n            EndTime=end,\r\n            Period=<span style=\"color: #79c0ff;\">60<\/span>,\r\n            Statistics=[<span style=\"color: #a5d6ff;\">\"Average\"<\/span>]\r\n        )\r\n\r\n        dps = sorted(\r\n            resp.get(<span style=\"color: #a5d6ff;\">\"Datapoints\"<\/span>, []),\r\n            key=<span style=\"color: #ff7b72;\">lambda<\/span> x: x[<span style=\"color: #a5d6ff;\">\"Timestamp\"<\/span>]\r\n        )\r\n\r\n        datapoints = len(dps)\r\n        cpu_avg = round(dps[-<span style=\"color: #79c0ff;\">1<\/span>][<span style=\"color: #a5d6ff;\">\"Average\"<\/span>], <span style=\"color: #79c0ff;\">2<\/span>) <span style=\"color: #ff7b72;\">if<\/span> dps <span style=\"color: #ff7b72;\">else<\/span> <span style=\"color: #ff7b72;\">None<\/span>\r\n\r\n    result = {\r\n        <span style=\"color: #a5d6ff;\">\"instanceId\"<\/span>: instance_id <span style=\"color: #ff7b72;\">or<\/span> <span style=\"color: #a5d6ff;\">\"\"<\/span>,\r\n        <span style=\"color: #a5d6ff;\">\"windowMinutes\"<\/span>: minutes,\r\n        <span style=\"color: #a5d6ff;\">\"cpuAvgPercent\"<\/span>: cpu_avg,\r\n        <span style=\"color: #a5d6ff;\">\"datapoints\"<\/span>: datapoints\r\n    }\r\n\r\n    <span style=\"color: #8b949e;\"># Return Bedrock Agent response envelope<\/span>\r\n\r\n    <span style=\"color: #ff7b72;\">if<\/span> event.get(<span style=\"color: #a5d6ff;\">\"messageVersion\"<\/span>) == <span style=\"color: #a5d6ff;\">\"1.0\"<\/span>:\r\n\r\n        <span style=\"color: #ff7b72;\">return<\/span> {\r\n            <span style=\"color: #a5d6ff;\">\"messageVersion\"<\/span>: <span style=\"color: #a5d6ff;\">\"1.0\"<\/span>,\r\n            <span style=\"color: #a5d6ff;\">\"response\"<\/span>: {\r\n                <span style=\"color: #a5d6ff;\">\"actionGroup\"<\/span>: event.get(<span style=\"color: #a5d6ff;\">\"actionGroup\"<\/span>),\r\n                <span style=\"color: #a5d6ff;\">\"apiPath\"<\/span>: event.get(<span style=\"color: #a5d6ff;\">\"apiPath\"<\/span>),\r\n                <span style=\"color: #a5d6ff;\">\"httpMethod\"<\/span>: event.get(<span style=\"color: #a5d6ff;\">\"httpMethod\"<\/span>),\r\n                <span style=\"color: #a5d6ff;\">\"httpStatusCode\"<\/span>: <span style=\"color: #79c0ff;\">200<\/span>,\r\n                <span style=\"color: #a5d6ff;\">\"responseBody\"<\/span>: {\r\n                    <span style=\"color: #a5d6ff;\">\"application\/json\"<\/span>: {\r\n                        <span style=\"color: #a5d6ff;\">\"body\"<\/span>: json.dumps(result)\r\n                    }\r\n                }\r\n            },\r\n            <span style=\"color: #a5d6ff;\">\"sessionAttributes\"<\/span>: event.get(<span style=\"color: #a5d6ff;\">\"sessionAttributes\"<\/span>, {}),\r\n            <span style=\"color: #a5d6ff;\">\"promptSessionAttributes\"<\/span>: event.get(<span style=\"color: #a5d6ff;\">\"promptSessionAttributes\"<\/span>, {})\r\n        }\r\n\r\n    <span style=\"color: #8b949e;\"># Manual Lambda test output<\/span>\r\n\r\n    <span style=\"color: #ff7b72;\">return<\/span> result<\/pre>\n<h3>Do NOT Forget to Click the Deploy Button<\/h3>\n<p>After pasting the code:<\/p>\n<p>Click the <strong>Deploy<\/strong> button (top right)<\/p>\n<p>If you see <strong>\u201cSuccessfully deployed\u201d<\/strong> \u2192 Perfect<\/p>\n<h3>Lambda Test<\/h3>\n<p>Now we verify whether the Lambda function is working.<\/p>\n<ul>\n<li>Click the <strong>Test<\/strong> tab on the Lambda page<\/li>\n<li>Click <strong>Create new test event<\/strong><\/li>\n<\/ul>\n<p><strong>Event name:<\/strong><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 16px 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\">cpu-test<\/pre>\n<p>Paste this <span class=\"notion-enable-hover\" data-token-index=\"1\">exact JSON<\/span> into the Event JSON:<!-- notionvc: 8f6e84b1-fed8-4934-8f43-5f92030c68bb --><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\"><span style=\"color: #79c0ff;\">{<\/span>\r\n  <span style=\"color: #a5d6ff;\">\"instanceId\"<\/span>: <span style=\"color: #a5d6ff;\">\"i-05b89d8172f7e0d20\"<\/span>,\r\n  <span style=\"color: #a5d6ff;\">\"minutes\"<\/span>: <span style=\"color: #79c0ff;\">5<\/span>\r\n<span style=\"color: #79c0ff;\">}<\/span><\/pre>\n<p>Click <strong>Save<\/strong><\/p>\n<p>Now click the <strong>Test<\/strong> button<\/p>\n<p><!-- notionvc: da55de52-8554-4ad4-842e-c297f08b5469 --><\/p>\n<h2>Expected Output (If You See This \u2192 PASS )<\/h2>\n<p>Your output should look like this:<\/p>\n<p><!-- notionvc: ed79d0bf-fb25-4c77-8cea-f2a22aaae942 --><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\"><span style=\"color: #79c0ff;\">{<\/span>\r\n  <span style=\"color: #a5d6ff;\">\"instanceId\"<\/span>: <span style=\"color: #a5d6ff;\">\"i-05b89d8172f7e0d20\"<\/span>,\r\n  <span style=\"color: #a5d6ff;\">\"windowMinutes\"<\/span>: <span style=\"color: #79c0ff;\">5<\/span>,\r\n  <span style=\"color: #a5d6ff;\">\"cpuAvgPercent\"<\/span>: <span style=\"color: #79c0ff;\">0.11<\/span>,\r\n  <span style=\"color: #a5d6ff;\">\"datapoints\"<\/span>: <span style=\"color: #79c0ff;\">1<\/span>\r\n<span style=\"color: #79c0ff;\">}<\/span><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31773\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-60-1024x455.png\" alt=\"\" width=\"1024\" height=\"455\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-60-1024x455.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-60-300x133.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-60-768x341.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-60-1536x683.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-60.png 1883w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><strong>Congratulations! Your Lambda function is working perfectly.<\/strong><\/p>\n<h3><strong>STEP 5\u2013<\/strong> Now go back to <strong>Bedrock<\/strong>.<\/h3>\n<ul>\n<li>Look at the <strong>left sidebar<\/strong><\/li>\n<li>Scroll down a bit<\/li>\n<li>You\u2019ll find a section called <strong>Build<\/strong><\/li>\n<\/ul>\n<p>Inside <strong>Build<\/strong>, click on <strong>Agents<\/strong>.<\/p>\n<p><!-- notionvc: 56d0d304-4774-48ba-93fe-7b32885ef749 --> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31774\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-62-1024x470.png\" alt=\"\" width=\"1024\" height=\"470\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-62-1024x470.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-62-300x138.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-62-768x352.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-62-1536x704.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-62.png 1908w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Create Agent<\/h3>\n<p>The <strong>Agents<\/strong> page will open.<\/p>\n<p>On the <strong>top right<\/strong>, you will see the <strong>Create agent<\/strong> button.<\/p>\n<p>Click on <strong>Create agent<\/strong><\/p>\n<p><!-- notionvc: 7768df07-28c0-4b39-90b7-1912d8d737d1 --><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31775\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-63-1024x366.png\" alt=\"\" width=\"1024\" height=\"366\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-63-1024x366.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-63-300x107.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-63-768x275.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-63-1536x550.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-63.png 1900w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Enter Agent Details<\/h3>\n<p>A form will appear.<\/p>\n<p>Fill in <strong>exactly<\/strong> the following:<\/p>\n<p><strong>Agent name:<\/strong><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 16px 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\">cpu-monitor-agent<\/pre>\n<p><span class=\"notion-enable-hover\" data-token-index=\"0\">Description:<\/span><!-- notionvc: e53fa245-89cc-48f3-9038-e00043dbe2c8 --><\/p>\n<p><strong>This agent checks CPUusageand takes actionif itis high.\u00a0<\/strong><\/p>\n<p>Click <span class=\"notion-enable-hover\" data-token-index=\"1\">Create<\/span><!-- notionvc: 0bfc7e65-eed4-4901-8bbf-d49efb95e2f3 --><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-31776 size-full\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/Screenshot-2026-02-11-124027-1.png\" alt=\"\" width=\"654\" height=\"498\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/Screenshot-2026-02-11-124027-1.png 654w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/Screenshot-2026-02-11-124027-1-300x228.png 300w\" sizes=\"auto, (max-width: 654px) 100vw, 654px\" \/><\/p>\n<p><strong>The next page will open<\/strong><\/p>\n<p>You will now be on the <strong>Agent Builder<\/strong> page<\/p>\n<p><strong>Select the Foundation Model<\/strong><\/p>\n<p>Now you need to select a model (this will be the AI\u2019s brain).<\/p>\n<p>Remove the checkmark on the option that says \u2018optimized for Bedrock Agents\u2019, then search for the Nova 2 Lite model<\/p>\n<p>Choose <strong>Nova 2 lite text model<\/strong> from the list<\/p>\n<p>Do <strong>NOT<\/strong> select Nova Sonic (voice model)<\/p>\n<p><!-- notionvc: f7903349-2e52-46e2-a746-92f582e398d5 --><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-31777\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-64.png\" alt=\"\" width=\"765\" height=\"659\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-64.png 765w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-64-300x258.png 300w\" sizes=\"auto, (max-width: 765px) 100vw, 765px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-31778\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-65.png\" alt=\"\" width=\"759\" height=\"655\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-65.png 759w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-65-300x259.png 300w\" sizes=\"auto, (max-width: 759px) 100vw, 759px\" \/><\/p>\n<p>Click <strong>Apply<\/strong><\/p>\n<h3>Paste Instructions<\/h3>\n<p>Here we define the agent\u2019s behavior.<\/p>\n<p>Paste <strong>exactly<\/strong> this into the Instructions box<\/p>\n<p><!-- notionvc: 0a66f40e-c644-485f-a3e1-75abd9e00961 --><\/p>\n<p><strong>\u201cYou are a CPU monitoring assistant. Use the tool GetCpuUtilization to fetch CPU average for last 5 minutes. If CPU average &gt; 85%, recommend restart. Otherwise recommend monitoring. Always ask for instanceId if missing.\u201d<\/strong><\/p>\n<h3>Additional Setting \u2013 <strong>User Input<\/strong><\/h3>\n<p>In the <strong>Agent Builder<\/strong>, find the section:<\/p>\n<p><strong>User Input<\/strong><\/p>\n<p>Currently, it will be:<\/p>\n<p><strong>Disabled<\/strong><\/p>\n<h3>Enable User Input<\/h3>\n<p>Select:<\/p>\n<p><strong>Enabled<\/strong><\/p>\n<p><!-- notionvc: 7d16c87e-47f0-4a31-acd4-2e6072faaef1 --><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31779\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-66-1024x454.png\" alt=\"\" width=\"1024\" height=\"454\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-66-1024x454.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-66-300x133.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-66-768x340.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-66-1536x681.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-66.png 1837w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Click <strong>Save<\/strong><\/p>\n<div style=\"border: 1px solid #d1d5db; padding: 16px; margin: 20px 0; background-color: #f0f4f8;\">\n<p style=\"margin: 0; font-weight: 600; font-size: 16px;\">Also Read: <a href=\"https:\/\/opstree.com\/case-study\/enterprise-scale-multi-cloud-infrastructure-modernization-with-zero-downtime-for-sprinklr\/\" target=\"_blank\" rel=\"noopener\">Enterprise Scale Multi-Cloud Infrastructure Modernization with Zero Downtime for Sprinklr<\/a><\/p>\n<\/div>\n<h3>STEP 6 \u2013 Add an Action Group<\/h3>\n<p>You will now see the <strong>Action Groups<\/strong> screen.<\/p>\n<p>Click <strong>Add action group<\/strong><\/p>\n<p>Fill in:<\/p>\n<p><strong>Action group name:<\/strong><\/p>\n<p><!-- notionvc: 60137373-a3d5-47d0-9162-3a4d401fa418 --><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 16px 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\">cpuMetrics<\/pre>\n<p><strong>Action type:<\/strong><\/p>\n<p>Select <strong>Define with API schemas<\/strong><\/p>\n<h3>Select the Lambda Function<\/h3>\n<p>Now choose your Lambda function.<\/p>\n<p>Select the Lambda you created earlier<\/p>\n<p>(example: <strong>get_cpu_utilization<\/strong>)<\/p>\n<p>If the Lambda already exists:<\/p>\n<p>Select it<\/p>\n<p><!-- notionvc: f0444a5b-0d36-4aa6-9844-9926087ef128 --><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31780\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-67-1024x454.png\" alt=\"\" width=\"1024\" height=\"454\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-67-1024x454.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-67-300x133.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-67-768x340.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-67-1536x681.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-67.png 1893w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3><strong>Action group schema<\/strong><\/h3>\n<p>click Define via in-line schema editor<\/p>\n<p><strong>OpenAPI schema<\/strong><\/p>\n<p><strong>Copy\u2013paste the full code below:<\/strong><\/p>\n<p><!-- notionvc: 27e69671-930b-4781-838a-34c4728d2564 --><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\"><span style=\"color: #ff7b72;\">openapi<\/span>: <span style=\"color: #79c0ff;\">3.0.1<\/span>\r\n\r\n<span style=\"color: #ff7b72;\">info<\/span>:\r\n  <span style=\"color: #79c0ff;\">title<\/span>: <span style=\"color: #a5d6ff;\">cpuMetrics<\/span>\r\n  <span style=\"color: #79c0ff;\">version<\/span>: <span style=\"color: #a5d6ff;\">1.0.0<\/span>\r\n\r\n<span style=\"color: #ff7b72;\">paths<\/span>:\r\n  <span style=\"color: #79c0ff;\">\/getCpuUtilization<\/span>:\r\n    <span style=\"color: #ff7b72;\">post<\/span>:\r\n      <span style=\"color: #79c0ff;\">operationId<\/span>: <span style=\"color: #a5d6ff;\">GetCpuUtilization<\/span>\r\n\r\n      <span style=\"color: #79c0ff;\">description<\/span>: <span style=\"color: #a5d6ff;\">Get average CPU utilization for an EC2 instance over a time window.<\/span>\r\n\r\n      <span style=\"color: #79c0ff;\">requestBody<\/span>:\r\n        <span style=\"color: #79c0ff;\">required<\/span>: <span style=\"color: #79c0ff;\">true<\/span>\r\n\r\n        <span style=\"color: #79c0ff;\">content<\/span>:\r\n          <span style=\"color: #79c0ff;\">application\/json<\/span>:\r\n            <span style=\"color: #79c0ff;\">schema<\/span>:\r\n              <span style=\"color: #79c0ff;\">type<\/span>: <span style=\"color: #a5d6ff;\">object<\/span>\r\n\r\n              <span style=\"color: #79c0ff;\">required<\/span>:\r\n                - <span style=\"color: #a5d6ff;\">instanceId<\/span>\r\n\r\n              <span style=\"color: #79c0ff;\">properties<\/span>:\r\n                <span style=\"color: #79c0ff;\">instanceId<\/span>:\r\n                  <span style=\"color: #79c0ff;\">type<\/span>: <span style=\"color: #a5d6ff;\">string<\/span>\r\n\r\n                <span style=\"color: #79c0ff;\">minutes<\/span>:\r\n                  <span style=\"color: #79c0ff;\">type<\/span>: <span style=\"color: #a5d6ff;\">integer<\/span>\r\n                  <span style=\"color: #79c0ff;\">default<\/span>: <span style=\"color: #79c0ff;\">5<\/span>\r\n\r\n      <span style=\"color: #79c0ff;\">responses<\/span>:\r\n        <span style=\"color: #a5d6ff;\">\"200\"<\/span>:\r\n          <span style=\"color: #79c0ff;\">description<\/span>: <span style=\"color: #a5d6ff;\">OK<\/span>\r\n\r\n          <span style=\"color: #79c0ff;\">content<\/span>:\r\n            <span style=\"color: #79c0ff;\">application\/json<\/span>:\r\n              <span style=\"color: #79c0ff;\">schema<\/span>:\r\n                <span style=\"color: #79c0ff;\">type<\/span>: <span style=\"color: #a5d6ff;\">object<\/span>\r\n\r\n                <span style=\"color: #79c0ff;\">properties<\/span>:\r\n                  <span style=\"color: #79c0ff;\">instanceId<\/span>:\r\n                    <span style=\"color: #79c0ff;\">type<\/span>: <span style=\"color: #a5d6ff;\">string<\/span>\r\n\r\n                  <span style=\"color: #79c0ff;\">windowMinutes<\/span>:\r\n                    <span style=\"color: #79c0ff;\">type<\/span>: <span style=\"color: #a5d6ff;\">integer<\/span>\r\n\r\n                  <span style=\"color: #79c0ff;\">cpuAvgPercent<\/span>:\r\n                    <span style=\"color: #79c0ff;\">type<\/span>: <span style=\"color: #a5d6ff;\">number<\/span>\r\n                    <span style=\"color: #79c0ff;\">nullable<\/span>: <span style=\"color: #79c0ff;\">true<\/span>\r\n\r\n                  <span style=\"color: #79c0ff;\">datapoints<\/span>:\r\n                    <span style=\"color: #79c0ff;\">type<\/span>: <span style=\"color: #a5d6ff;\">integer<\/span><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31781\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-68-1024x548.png\" alt=\"\" width=\"1024\" height=\"548\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-68-1024x548.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-68-300x161.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-68-768x411.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-68.png 1510w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31782\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-69-1024x483.png\" alt=\"\" width=\"1024\" height=\"483\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-69-1024x483.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-69-300x142.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-69-768x362.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-69-1536x725.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-69.png 1886w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Click <strong>Save<\/strong><br \/>\nAfter saving:<\/p>\n<p>The <strong>Prepare<\/strong> button will become clickable<\/p>\n<p>Then click <strong>Prepare<\/strong><\/p>\n<h3>STEP 7 \u2013 Open the Lambda Console<\/h3>\n<p>In the AWS search bar:<\/p>\n<p><strong>Lambda<\/strong><\/p>\n<p>Click it.<\/p>\n<h3>Select Your Lambda Function<\/h3>\n<p>Choose:<\/p>\n<p><!-- notionvc: afdb76c2-4fc5-4da9-ac7c-ff6bf882d23a --><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 16px 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\">get_cpu_utilization<\/pre>\n<p>Open it.<\/p>\n<h4>Go to the Configuration Tab<\/h4>\n<p>On the Lambda screen, you will see these tabs:<\/p>\n<p>Code<\/p>\n<p>Test<\/p>\n<p>Monitor<\/p>\n<p><strong>Configuration<\/strong><\/p>\n<p>Click <strong>Configuration<\/strong>.<\/p>\n<h4>Open the Permissions Section<\/h4>\n<p>Scroll down<\/p>\n<p><strong>Permissions<\/strong><\/p>\n<p>Click it.<\/p>\n<h4>Resource-based Policy<\/h4>\n<p>You will see a button:<\/p>\n<p><!-- notionvc: 339f779b-209f-47e0-b581-73298c54d7b9 --><\/p>\n<p><strong>Add permissions<\/strong><\/p>\n<p>Click it.<\/p>\n<p><!-- notionvc: ad059b69-c3fb-404a-b52e-1b1cd2b9a36c --><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31783\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-70-1024x465.png\" alt=\"\" width=\"1024\" height=\"465\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-70-1024x465.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-70-300x136.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-70-768x349.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-70-1536x697.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-70.png 1903w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Fill in EXACTLY<\/h3>\n<p><strong>Statement ID<\/strong><\/p>\n<p><!-- notionvc: 211247e4-94cf-4f7c-a18a-50684e444e82 --><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 16px 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\">AllowBedrockInvoke<\/pre>\n<p><span class=\"notion-enable-hover\" data-token-index=\"0\">Principal<\/span><!-- notionvc: 46594632-a2bd-41fd-bc00-e63f369f869a --><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 16px 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\">bedrock.amazonaws.com<\/pre>\n<p><span class=\"notion-enable-hover\" data-token-index=\"0\">Action<\/span><!-- notionvc: 97d2f51f-5a47-4948-b8eb-a883d25ecb5f --><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 16px 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\">lambda:InvokeFunction<\/pre>\n<p><span class=\"notion-enable-hover\" data-token-index=\"0\">ARN<\/span><!-- notionvc: 9f073769-3fdf-4dd9-8ffe-a2841cd7ee07 --><\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 16px 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\">\"arn:aws:bedrock:us-east-1:613602870156:agent\/*\"<\/pre>\n<p>Click <strong><span class=\"notion-enable-hover\" data-token-index=\"1\">Save<\/span><\/strong><\/p>\n<p><strong><span class=\"notion-enable-hover\" data-token-index=\"1\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31784\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-71-1024x843.png\" alt=\"\" width=\"1024\" height=\"843\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-71-1024x843.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-71-300x247.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-71-768x633.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-71.png 1066w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/> <\/span><\/strong><!-- notionvc: 4cce7127-ee9c-4b86-8fe7-4073bb2848c4 --><\/p>\n<h3>STEP 8 \u2013 Then next go to Role<\/h3>\n<p>And in Bedrock, in the Agent Builder<\/p>\n<p><strong>Select the Agent resource role that is visible by going to the IAM roles section : choose<\/strong><\/p>\n<p><strong>AmazonBedrockExecutionRoleForAgents_FF41143KBXU<\/strong><\/p>\n<h3>Add Permissions:<\/h3>\n<ul>\n<li><strong>AmazonBedrockAgentInferenceProfilesCrossRegionPolicy_L9ZHEFYE8FI<\/strong><\/li>\n<\/ul>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\"><span style=\"color: #79c0ff;\">{<\/span>\r\n  <span style=\"color: #a5d6ff;\">\"Version\"<\/span>: <span style=\"color: #a5d6ff;\">\"2012-10-17\"<\/span>,\r\n  <span style=\"color: #a5d6ff;\">\"Statement\"<\/span>: <span style=\"color: #79c0ff;\">[<\/span>\r\n    <span style=\"color: #79c0ff;\">{<\/span>\r\n      <span style=\"color: #a5d6ff;\">\"Sid\"<\/span>: <span style=\"color: #a5d6ff;\">\"AmazonBedrockAgentInferenceProfilesCrossRegionPolicyProd\"<\/span>,\r\n      <span style=\"color: #a5d6ff;\">\"Effect\"<\/span>: <span style=\"color: #a5d6ff;\">\"Allow\"<\/span>,\r\n      <span style=\"color: #a5d6ff;\">\"Action\"<\/span>: <span style=\"color: #79c0ff;\">[<\/span>\r\n        <span style=\"color: #a5d6ff;\">\"bedrock:InvokeModel\"<\/span>,\r\n        <span style=\"color: #a5d6ff;\">\"bedrock:InvokeModelWithResponseStream\"<\/span>,\r\n        <span style=\"color: #a5d6ff;\">\"bedrock:GetInferenceProfile\"<\/span>,\r\n        <span style=\"color: #a5d6ff;\">\"bedrock:GetFoundationModel\"<\/span>\r\n      <span style=\"color: #79c0ff;\">]<\/span>,\r\n      <span style=\"color: #a5d6ff;\">\"Resource\"<\/span>: <span style=\"color: #79c0ff;\">[<\/span>\r\n        <span style=\"color: #a5d6ff;\">\"arn:aws:bedrock:us-east-1:613602870156:inference-profile\/global.amazon.nova-2-lite-v1:0\"<\/span>,\r\n        <span style=\"color: #a5d6ff;\">\"arn:aws:bedrock:*::foundation-model\/global.amazon.nova-2-lite-v1:0\"<\/span>\r\n      <span style=\"color: #79c0ff;\">]<\/span>\r\n    <span style=\"color: #79c0ff;\">}<\/span>\r\n  <span style=\"color: #79c0ff;\">]<\/span>\r\n<span style=\"color: #79c0ff;\">}<\/span><\/pre>\n<ul>\n<li>AllowLambdaInvoke<\/li>\n<\/ul>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\"><span style=\"color: #79c0ff;\">{<\/span>\r\n  <span style=\"color: #a5d6ff;\">\"Version\"<\/span>: <span style=\"color: #a5d6ff;\">\"2012-10-17\"<\/span>,\r\n  <span style=\"color: #a5d6ff;\">\"Statement\"<\/span>: <span style=\"color: #79c0ff;\">[<\/span>\r\n    <span style=\"color: #79c0ff;\">{<\/span>\r\n      <span style=\"color: #a5d6ff;\">\"Effect\"<\/span>: <span style=\"color: #a5d6ff;\">\"Allow\"<\/span>,\r\n      <span style=\"color: #a5d6ff;\">\"Action\"<\/span>: <span style=\"color: #a5d6ff;\">\"lambda:InvokeFunction\"<\/span>,\r\n      <span style=\"color: #a5d6ff;\">\"Resource\"<\/span>: <span style=\"color: #a5d6ff;\">\"arn:aws:lambda:us-east-1:613602870156:function:get_cpu_utilization\"<\/span>\r\n    <span style=\"color: #79c0ff;\">}<\/span>\r\n  <span style=\"color: #79c0ff;\">]<\/span>\r\n<span style=\"color: #79c0ff;\">}<\/span><\/pre>\n<ul>\n<li>BedRock<\/li>\n<\/ul>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\"><span style=\"color: #79c0ff;\">{<\/span>\r\n  <span style=\"color: #a5d6ff;\">\"Version\"<\/span>: <span style=\"color: #a5d6ff;\">\"2012-10-17\"<\/span>,\r\n  <span style=\"color: #a5d6ff;\">\"Statement\"<\/span>: <span style=\"color: #79c0ff;\">[<\/span>\r\n    <span style=\"color: #79c0ff;\">{<\/span>\r\n      <span style=\"color: #a5d6ff;\">\"Sid\"<\/span>: <span style=\"color: #a5d6ff;\">\"AllowInvokeNova\"<\/span>,\r\n      <span style=\"color: #a5d6ff;\">\"Effect\"<\/span>: <span style=\"color: #a5d6ff;\">\"Allow\"<\/span>,\r\n      <span style=\"color: #a5d6ff;\">\"Action\"<\/span>: <span style=\"color: #79c0ff;\">[<\/span>\r\n        <span style=\"color: #a5d6ff;\">\"bedrock:InvokeModel\"<\/span>,\r\n        <span style=\"color: #a5d6ff;\">\"bedrock:InvokeModelWithResponseStream\"<\/span>\r\n      <span style=\"color: #79c0ff;\">]<\/span>,\r\n      <span style=\"color: #a5d6ff;\">\"Resource\"<\/span>: <span style=\"color: #a5d6ff;\">\"*\"<\/span>\r\n    <span style=\"color: #79c0ff;\">}<\/span>\r\n  <span style=\"color: #79c0ff;\">]<\/span>\r\n<span style=\"color: #79c0ff;\">}<\/span><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31785\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-72-1024x452.png\" alt=\"\" width=\"1024\" height=\"452\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-72-1024x452.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-72-300x132.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-72-768x339.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-72-1536x678.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-72.png 1875w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>STEP 9 \u2013 Test the Agent<\/h3>\n<p>Open the agent<\/p>\n<p>Go to the <strong>Test<\/strong> tab<br \/>\nIn the input box, type:<\/p>\n<pre style=\"background: #0d1117; color: #c9d1d9; padding: 20px; border-radius: 10px; overflow-x: auto; font-size: 14px; line-height: 1.7; font-family: Consolas,Monaco,'Courier New',monospace; border: 1px solid #30363d;\">check cpu for instance i-05b89d8172f7e0d20 for last 60 minutes<\/pre>\n<p>Click <span class=\"notion-enable-hover\" data-token-index=\"1\">Run <\/span><!-- notionvc: 7910b5f0-2f72-42ab-beea-c82d392dd8ac --><\/p>\n<h3><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-31786\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-73-1024x440.png\" alt=\"\" width=\"1024\" height=\"440\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-73-1024x440.png 1024w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-73-300x129.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-73-768x330.png 768w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-73-1536x659.png 1536w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-73.png 1917w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/h3>\n<h3>EXPECTED OUTPUT (If You See This \u2192 SUCCESS )<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-31787 aligncenter\" src=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-74.png\" alt=\"\" width=\"433\" height=\"806\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-74.png 433w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/image-74-161x300.png 161w\" sizes=\"auto, (max-width: 433px) 100vw, 433px\" \/><\/p>\n<h3><strong>Congratulations!<\/strong><\/h3>\n<p>You are now:<\/p>\n<p>Taking decisions using AI<\/p>\n<p>Triggering Lambda using AI<\/p>\n<p>Successfully implementing a real Nova Act pattern<\/p>\n<h3><span data-ccp-props=\"{}\">Related Searches<\/span><\/h3>\n<ul>\n<li class=\"ekit-heading--title elementskit-section-title \"><a href=\"https:\/\/opstree.com\/case-study\/a-leading-logistics-platform-achieved-30-faster-incident-resolution-with-ai-driven-observability\/\" target=\"_blank\" rel=\"noopener\">A Leading Logistics Platform Achieved 30% Faster Incident Resolution with AI-Driven Observability<\/a><\/li>\n<li class=\"ekit-heading--title elementskit-section-title \"><a href=\"https:\/\/opstree.com\/blog\/aws-for-beginners-what-is-it-how-it-works-and-key-benefits\/\">What is Amazon Web Service (AWS)?<\/a><\/li>\n<li><a href=\"https:\/\/opstree.com\/case-study\/3x-faster-issue-resolution-through-smarter-operational-intelligence\/\" target=\"_blank\" rel=\"noopener\">3\u00d7 Faster Issue Resolution Through Smarter Operational Intelligence<\/a><\/li>\n<li><a href=\"https:\/\/opstree.com\/blog\/top-aws-consulting-partner\/\" target=\"_blank\" rel=\"noopener\">Top AWS Consulting Partner in India 2026<\/a><\/li>\n<\/ul>\n<h3>Related Solutions<\/h3>\n<ul>\n<li><a href=\"https:\/\/opstree.com\/services\/application-platform-security-management\/\" target=\"_blank\" rel=\"noopener\">platform engineering services<\/a><\/li>\n<li><a href=\"https:\/\/opstree.com\/services\/database-and-data-engineering\/\" target=\"_blank\" rel=\"noopener\">Data Migration Services<\/a><\/li>\n<li><a href=\"https:\/\/opstree.com\/services\/observability-sre-production-engineering\/\" target=\"_blank\" rel=\"noopener\">SRE\/Platform Support service<\/a><\/li>\n<li><a href=\"https:\/\/buildpiper.io\/\" target=\"_blank\" rel=\"noopener\">Best platform engineering tools<\/a><\/li>\n<\/ul>\n<p><!-- notionvc: e3741874-f170-43e3-9fd6-073e2d9acbeb --><\/p>\n<p><!-- notionvc: 5c72e582-5eaa-4dc7-9195-879e396cce17 --><\/p>\n<p><!-- notionvc: 16149c03-cef5-402b-9c7e-4c22430c75fa --><\/p>\n<p><!-- notionvc: 9447b1fb-8084-408b-a5b0-cf51f87deb5e --><\/p>\n<p><!-- notionvc: 07d0766a-d448-4431-942b-7227eee7f2ac --><\/p>\n<p><!-- notionvc: 14f228ef-cbaa-4746-a5a0-777aeaa88785 --><\/p>\n<p><!-- notionvc: dde1ad6f-e4a8-4f1a-b9d3-601ebe42d65d --><\/p>\n<p><!-- notionvc: 823d784c-d265-4e87-beb6-702b8f1d8eb1 --><\/p>\n<p><!-- notionvc: 714c0059-03fc-45f8-8fba-a051053627e5 --><\/p>\n<p><!-- notionvc: 6f1363ae-c038-4f3f-aa67-c4e4a0bf2828 --><\/p>\n<p><!-- notionvc: b9cc6dfe-1600-4adc-94ec-bee3229be62e --><\/p>\n<p><!-- notionvc: 12e8461c-fb8b-4c31-a08b-688320c4ca07 --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Objective of This SOP By following this SOP, you will create a basic action-oriented AI workflow using Amazon Nova Act that: Reads CPU usage Checks a condition (CPU &gt; 80%) Executes an action using AWS Lambda Returns a result This is the foundation of Nova Act\u2013style AI. Prerequisites Before starting, ensure you have: An AWS [&hellip;]<\/p>\n","protected":false},"author":244582722,"featured_media":31795,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[36349927],"tags":[768739355,768739618,768739561,768739670,768739671],"class_list":["post-31760","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws-2","tag-amazon-bedrock","tag-amazon-nova-act","tag-aws-services","tag-ec2-instance","tag-lambda-function"],"blocksy_meta":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2026\/07\/Amazon-Nova-Act-1.png","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-8gg","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/31760","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/244582722"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=31760"}],"version-history":[{"count":7,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/31760\/revisions"}],"predecessor-version":[{"id":31793,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/31760\/revisions\/31793"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/31795"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=31760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=31760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=31760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}