{"id":7736,"date":"2025-10-01T16:31:06","date_gmt":"2025-10-01T16:31:06","guid":{"rendered":"https:\/\/pokecon.jp\/job\/?p=7736"},"modified":"2025-10-01T16:31:06","modified_gmt":"2025-10-01T16:31:06","slug":"aws-strands-agents%e3%82%92amazon-bedrock-agentcore%e3%81%abcloudformation%e3%81%a7%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f","status":"publish","type":"post","link":"https:\/\/pokecon.jp\/job\/7736\/","title":{"rendered":"AWS Strands Agents\u3092Amazon Bedrock AgentCore\u306bCloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u305f"},"content":{"rendered":"\n<\/p>\n<div>\n<h2 id=\"%E3%81%AF%E3%81%98%E3%82%81\" data-line=\"0\" class=\"code-line\">\n \u306f\u3058\u3081<\/h2>\n<p data-line=\"1\" class=\"code-line\">Fusic\u306e<a target=\"_blank\" href=\"https:\/\/x.com\/xthixsl_ml\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\u30ec\u30aa\u30ca<\/a>\u3067\u3059\u3002\u4eca\u56de\u306f\u3001Amazon Bedrock AgentCore\u306bStrands Agents\u3092CloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3001Strands Agents\u3092\u52d5\u4f5c\u3055\u305b\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059<\/p>\n<blockquote data-line=\"3\" class=\"code-line\">\n<p data-line=\"3\" class=\"code-line\"><strong>\u6ce8\u610f<\/strong>\uff1a\u672c\u30d6\u30ed\u30b0\u306f 2025\u5e7410\u67081\u65e5\u6642\u70b9\u306e\u6a5f\u80fd\u3092\u57fa\u306b\u57f7\u7b46\u3057\u3066\u3044\u307e\u3059\u3002Amazon Bedrock AgentCore\u306f\u30d7\u30ec\u30d3\u30e5\u30fc\u7248\u3067\u3059\u3002<\/p>\n<\/blockquote>\n<hr data-line=\"4\" class=\"code-line\"\/>\n<h2 id=\"strands-agents%E3%81%A8%E3%81%AF\" data-line=\"6\" class=\"code-line\">\n Strands Agents\u3068\u306f<\/h2>\n<p data-line=\"7\" class=\"code-line\">Strands Agents\u306f\u3001AWS\u304c2025\u5e745\u6708\u306b\u516c\u958b\u3057\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306eAI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u69cb\u7bc9SDK\u3067\u30012025\u5e747\u6708\u306b\u30d0\u30fc\u30b8\u30e7\u30f31.0\u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\u3002\u6570\u884c\u306ePython\u30b3\u30fc\u30c9\u3067AI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u4f5c\u6210\u3067\u304d\u308b\u30e2\u30c7\u30eb\u99c6\u52d5\u578b\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002<\/p>\n<p data-line=\"9\" class=\"code-line\">\u30d9\u30fc\u30bf\u7248\u306eStrands Agents\u306b\u3064\u3044\u3066\u57f7\u7b46\u3057\u305f\u4ee5\u4e0b\u306e\u30d6\u30ed\u30b0\u3082\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br style=\"display:none\"\/><br \/>\n<span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__37d2a76810675\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__37d2a76810675\" data-content=\"https%3A%2F%2Fzenn.dev%2Ffusic%2Farticles%2F8dd670c37a8d68\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/zenn.dev\/fusic\/articles\/8dd670c37a8d68\" style=\"display:none\" target=\"_blank\">https:\/\/zenn.dev\/fusic\/articles\/8dd670c37a8d68<\/a><\/p>\n<p data-line=\"12\" class=\"code-line\">\u307e\u305f\u672c\u30d6\u30ed\u30b0\u3067\u306fStrands Agents\u306eTools\uff08\u30c4\u30fc\u30eb\uff09\u3092\u7528\u3044\u3066\u52d5\u4f5c\u78ba\u8a8d\u3092\u884c\u3044\u307e\u3059\u3002Tools\u306f\u3001\u30d9\u30fc\u30b9\u306eLLM\u5358\u4f53\u3067\u306f\u3067\u304d\u306a\u3044\u51e6\u7406\u3092\u547c\u3073\u51fa\u305b\u308b\u6a5f\u80fd\u3067\u3059\u3002AI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304cAPI\u3092\u901a\u3057\u3066\u5916\u90e8\u6a5f\u80fd\u3084\u30b5\u30fc\u30d3\u30b9\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p data-line=\"14\" class=\"code-line\">\u4eca\u56de\u306f\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u88fd\u306e<code>Calculator<\/code>\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<p data-line=\"16\" class=\"code-line\"><span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__6cf00eeca5864\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__6cf00eeca5864\" data-content=\"https%3A%2F%2Fstrandsagents.com%2Flatest%2Fdocumentation%2Fdocs%2Fuser-guide%2Fconcepts%2Ftools%2Fcommunity-tools-package%2F\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/strandsagents.com\/latest\/documentation\/docs\/user-guide\/concepts\/tools\/community-tools-package\/\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/strandsagents.com\/latest\/documentation\/docs\/user-guide\/concepts\/tools\/community-tools-package\/<\/a><br style=\"display:none\"\/><br \/>\n<span class=\"embed-block zenn-embedded zenn-embedded-github\"><iframe id=\"zenn-embedded__2ced36ef9f65c\" src=\"https:\/\/embed.zenn.studio\/github#zenn-embedded__2ced36ef9f65c\" data-content=\"https%3A%2F%2Fgithub.com%2Fstrands-agents%2Ftools%2Fblob%2Fmain%2Fsrc%2Fstrands_tools%2Fcalculator.py\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/github.com\/strands-agents\/tools\/blob\/main\/src\/strands_tools\/calculator.py\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/strands-agents\/tools\/blob\/main\/src\/strands_tools\/calculator.py<\/a><\/p>\n<h2 id=\"amazon-bedrock-agentcore%E3%81%A8%E3%81%AF\" data-line=\"19\" class=\"code-line\">\n Amazon Bedrock AgentCore\u3068\u306f<\/h2>\n<p data-line=\"20\" class=\"code-line\">Amazon\u00a0Bedrock\u00a0AgentCore\u306f2025\u5e747\u6708\u306b\u30d7\u30ec\u30d3\u30e5\u30fc\u7248\u304c\u516c\u958b\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u3067\u3001AI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092 AWS\u4e0a\u306b\u30db\u30b9\u30c8\u3059\u308b\u30d5\u30eb\u30de\u30cd\u30fc\u30b8\u30c9\u5b9f\u884c\u74b0\u5883\u3067\u3059\u3002<br style=\"display:none\"\/><br \/>\n<span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__1c980eb90a2d7\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__1c980eb90a2d7\" data-content=\"https%3A%2F%2Faws.amazon.com%2Fjp%2Fbedrock%2Fagentcore%2F\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/aws.amazon.com\/jp\/bedrock\/agentcore\/\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/aws.amazon.com\/jp\/bedrock\/agentcore\/<\/a><\/p>\n<h2 id=\"%E5%AE%9F%E8%A3%85\" data-line=\"24\" class=\"code-line\">\n \u5b9f\u88c5<\/h2>\n<p data-line=\"25\" class=\"code-line\">\u4eca\u56de\u4f5c\u6210\u3059\u308b\u30ea\u30dd\u30b8\u30c8\u30ea\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u69cb\u6210\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"26\">calc-agent\/\n\u251c\u2500\u2500 src\/\n\u2502   \u251c\u2500\u2500 agent.py          # Strands Agent\u5b9a\u7fa9\n\u2502   \u2514\u2500\u2500 server.py         # BedrockAgentCoreApp\n\u251c\u2500\u2500 cfn\/\n\u2502   \u2514\u2500\u2500 template.yaml     # CloudFormation\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\n\u251c\u2500\u2500 .env                  # \u74b0\u5883\u5909\u6570\uff08\u81ea\u52d5\u751f\u6210\uff09\n\u251c\u2500\u2500 .gitignore\n\u251c\u2500\u2500 deploy.sh             # \u30c7\u30d7\u30ed\u30a4\u30b9\u30af\u30ea\u30d7\u30c8\n\u251c\u2500\u2500 Dockerfile            # ARM64\u30b3\u30f3\u30c6\u30ca\n\u251c\u2500\u2500 requirements.txt      # ECR\u306bPush\u3055\u308c\u308b\u3000Python\u4f9d\u5b58\u95a2\u4fc2\n\u2514\u2500\u2500 test_calc_agent.py    # \u30c6\u30b9\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\n<\/code><\/pre>\n<\/div>\n<h3 id=\"%E4%BA%8B%E5%89%8D%E6%BA%96%E5%82%99\" data-line=\"40\" class=\"code-line\">\n \u4e8b\u524d\u6e96\u5099<\/h3>\n<ul data-line=\"41\" class=\"code-line\">\n<li data-line=\"41\" class=\"code-line\">AWS CLI <code>v2.31.5<\/code>\u4ee5\u964d\uff08<code>aws --version<\/code>\u3067\u78ba\u8a8d\uff09<\/li>\n<li data-line=\"42\" class=\"code-line\">Docker<\/li>\n<li data-line=\"43\" class=\"code-line\">\n<code>Python3.11<\/code>\u4ee5\u964d\u3068\u52d5\u304b\u3059\u74b0\u5883(uv\u7b49)<\/p>\n<ul data-line=\"44\" class=\"code-line\">\n<li data-line=\"44\" class=\"code-line\">\n<code>pip install boto3 python-dotenv<\/code>\u3067\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/p>\n<ul data-line=\"45\" class=\"code-line\">\n<li data-line=\"45\" class=\"code-line\">Amazon Bedrock AgentCore\u306b\u30c7\u30d7\u30ed\u30a4\u3057\u305fStrands Agents\u3092\u30ed\u30fc\u30ab\u30eb\u304b\u3089\u547c\u3073\u51fa\u3059\u305f\u3081\u306b\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"1.-src%2Fagent.py\" data-line=\"48\" class=\"code-line\">\n 1. src\/agent.py<\/h3>\n<p data-line=\"49\" class=\"code-line\">Strands\u00a0Agents\u306eAgent\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002Calculator\u30c4\u30fc\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u3001\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<p><span class=\"code-block-filename\">agent.py<\/span><\/p>\n<pre class=\"language-python\"><code class=\"language-python code-line\" data-line=\"51\"><span class=\"token keyword\">from<\/span> strands <span class=\"token keyword\">import<\/span> Agent\n<span class=\"token keyword\">from<\/span> strands_tools <span class=\"token keyword\">import<\/span> calculator\n\nSYSTEM_PROMPT <span class=\"token operator\">=<\/span> <span class=\"token triple-quoted-string string\">\"\"\"You are a precise math assistant.\nUse the calculator tool for any non-trivial arithmetic.\nReturn a short final answer. Include units if provided.\"\"\"<\/span>\n\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">create_agent<\/span><span class=\"token punctuation\">(<\/span>model_id<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">|<\/span> <span class=\"token boolean\">None<\/span> <span class=\"token operator\">=<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">-<\/span><span class=\"token operator\">&gt;<\/span> Agent<span class=\"token punctuation\">:<\/span>\n    model <span class=\"token operator\">=<\/span> model_id <span class=\"token keyword\">or<\/span> <span class=\"token boolean\">None<\/span>\n    <span class=\"token keyword\">return<\/span> Agent<span class=\"token punctuation\">(<\/span>system_prompt<span class=\"token operator\">=<\/span>SYSTEM_PROMPT<span class=\"token punctuation\">,<\/span> tools<span class=\"token operator\">=<\/span><span class=\"token punctuation\">[<\/span>calculator<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> model<span class=\"token operator\">=<\/span>model<span class=\"token punctuation\">)<\/span>\n<\/code><\/pre>\n<\/div>\n<h3 id=\"2.-src%2Fserver.py\" data-line=\"65\" class=\"code-line\">\n 2. src\/server.py<\/h3>\n<p data-line=\"66\" class=\"code-line\">Amazon\u00a0Bedrock\u00a0AgentCore\u306eHTTP\u30d7\u30ed\u30c8\u30b3\u30eb\u3067\u306f\u3001\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3060\u3051\u5b9f\u88c5\u3059\u308c\u3070\u540c\u671f\u547c\u3073\u51fa\u3057\u304c\u53ef\u80fd\u3067\u3059\u3002\u3053\u3053\u3067\u306f<code>BedrockAgentCoreApp<\/code>\u3092\u4f7f\u3063\u3066Strands Agents\u3092\u547c\u3073\u51fa\u3057\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<p><span class=\"code-block-filename\">server.py<\/span><\/p>\n<pre class=\"language-python\"><code class=\"language-python code-line\" data-line=\"67\"><span class=\"token keyword\">import<\/span> os\n<span class=\"token keyword\">from<\/span> bedrock_agentcore <span class=\"token keyword\">import<\/span> BedrockAgentCoreApp\n<span class=\"token keyword\">from<\/span> src<span class=\"token punctuation\">.<\/span>agent <span class=\"token keyword\">import<\/span> create_agent\n\napp <span class=\"token operator\">=<\/span> BedrockAgentCoreApp<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\nagent <span class=\"token operator\">=<\/span> create_agent<span class=\"token punctuation\">(<\/span>model_id<span class=\"token operator\">=<\/span>os<span class=\"token punctuation\">.<\/span>environ<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">\"MODEL_ID\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n\n\n<span class=\"token decorator annotation punctuation\">@app<span class=\"token punctuation\">.<\/span>entrypoint<\/span>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">invoke<\/span><span class=\"token punctuation\">(<\/span>payload<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token triple-quoted-string string\">\"\"\"\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\"\"\"<\/span>\n    prompt <span class=\"token operator\">=<\/span> payload<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">\"prompt\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"\"<\/span><span class=\"token punctuation\">)<\/span>\n    result <span class=\"token operator\">=<\/span> agent<span class=\"token punctuation\">(<\/span>prompt<span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">\"response\"<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span>\n\n\n<span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">==<\/span> <span class=\"token string\">\"__main__\"<\/span><span class=\"token punctuation\">:<\/span>\n    app<span class=\"token punctuation\">.<\/span>run<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n<\/code><\/pre>\n<\/div>\n<h3 id=\"3.-cfn%2Ftemplate.yaml\" data-line=\"88\" class=\"code-line\">\n 3. cfn\/template.yaml<\/h3>\n<p data-line=\"89\" class=\"code-line\">\u5b9f\u884c\u30ed\u30fc\u30eb\u3068\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30e9\u30f3\u30bf\u30a4\u30e0\u30ea\u30bd\u30fc\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code>ContainerUri<\/code>\u306bECR\u306e\u30a4\u30e1\u30fc\u30b8URI\u3092\u6e21\u3059\u3053\u3068\u3067\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<p><span class=\"code-block-filename\">template.yaml<\/span><\/p>\n<pre class=\"language-yaml\"><code class=\"language-yaml code-line\" data-line=\"90\"><span class=\"token key atrule\">AWSTemplateFormatVersion<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'2010-09-09'<\/span>\n<span class=\"token key atrule\">Description<\/span><span class=\"token punctuation\">:<\/span> Strands Calculator Agent on Amazon Bedrock AgentCore (HTTP)\n\n<span class=\"token key atrule\">Parameters<\/span><span class=\"token punctuation\">:<\/span>\n  <span class=\"token key atrule\">AgentName<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token key atrule\">Type<\/span><span class=\"token punctuation\">:<\/span> String\n    <span class=\"token key atrule\">Default<\/span><span class=\"token punctuation\">:<\/span> strands_calc\n    <span class=\"token key atrule\">Description<\/span><span class=\"token punctuation\">:<\/span> Name of the agent runtime (alphanumeric and underscore only)\n  <span class=\"token key atrule\">ContainerUri<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token key atrule\">Type<\/span><span class=\"token punctuation\">:<\/span> String\n    <span class=\"token key atrule\">Description<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"<account-id>.dkr.ecr.<region>.amazonaws.com\/<repo>:<tag> or @sha256:...\"<\/tag><\/repo><\/region><\/account-id><\/span>\n\n<span class=\"token key atrule\">Resources<\/span><span class=\"token punctuation\">:<\/span>\n  <span class=\"token key atrule\">AgentCoreExecutionRole<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token key atrule\">Type<\/span><span class=\"token punctuation\">:<\/span> AWS<span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">:<\/span>IAM<span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">:<\/span>Role\n    <span class=\"token key atrule\">Properties<\/span><span class=\"token punctuation\">:<\/span>\n      <span class=\"token key atrule\">RoleName<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token tag\">!Sub<\/span> $<span class=\"token punctuation\">{<\/span>AgentName<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">-<\/span>runtime<span class=\"token punctuation\">-<\/span>role\n      <span class=\"token key atrule\">AssumeRolePolicyDocument<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token key atrule\">Version<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'2012-10-17'<\/span>\n        <span class=\"token key atrule\">Statement<\/span><span class=\"token punctuation\">:<\/span>\n          <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">Effect<\/span><span class=\"token punctuation\">:<\/span> Allow\n            <span class=\"token key atrule\">Principal<\/span><span class=\"token punctuation\">:<\/span>\n              <span class=\"token key atrule\">Service<\/span><span class=\"token punctuation\">:<\/span> bedrock<span class=\"token punctuation\">-<\/span>agentcore.amazonaws.com\n            <span class=\"token key atrule\">Action<\/span><span class=\"token punctuation\">:<\/span> sts<span class=\"token punctuation\">:<\/span>AssumeRole\n      <span class=\"token key atrule\">Policies<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">PolicyName<\/span><span class=\"token punctuation\">:<\/span> EcrLogsBedrockInvoke\n          <span class=\"token key atrule\">PolicyDocument<\/span><span class=\"token punctuation\">:<\/span>\n            <span class=\"token key atrule\">Version<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'2012-10-17'<\/span>\n            <span class=\"token key atrule\">Statement<\/span><span class=\"token punctuation\">:<\/span>\n              \n              <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">Effect<\/span><span class=\"token punctuation\">:<\/span> Allow\n                <span class=\"token key atrule\">Action<\/span><span class=\"token punctuation\">:<\/span> ecr<span class=\"token punctuation\">:<\/span>GetAuthorizationToken\n                <span class=\"token key atrule\">Resource<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"*\"<\/span>\n              <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">Effect<\/span><span class=\"token punctuation\">:<\/span> Allow\n                <span class=\"token key atrule\">Action<\/span><span class=\"token punctuation\">:<\/span>\n                  <span class=\"token punctuation\">-<\/span> ecr<span class=\"token punctuation\">:<\/span>BatchGetImage\n                  <span class=\"token punctuation\">-<\/span> ecr<span class=\"token punctuation\">:<\/span>GetDownloadUrlForLayer\n                <span class=\"token key atrule\">Resource<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token tag\">!Sub<\/span> arn<span class=\"token punctuation\">:<\/span>aws<span class=\"token punctuation\">:<\/span>ecr<span class=\"token punctuation\">:<\/span>$<span class=\"token punctuation\">{<\/span>AWS<span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">:<\/span>Region<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">:<\/span>$<span class=\"token punctuation\">{<\/span>AWS<span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">:<\/span>AccountId<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">:<\/span>repository\/*\n              \n              <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">Effect<\/span><span class=\"token punctuation\">:<\/span> Allow\n                <span class=\"token key atrule\">Action<\/span><span class=\"token punctuation\">:<\/span>\n                  <span class=\"token punctuation\">-<\/span> logs<span class=\"token punctuation\">:<\/span>CreateLogGroup\n                  <span class=\"token punctuation\">-<\/span> logs<span class=\"token punctuation\">:<\/span>CreateLogStream\n                  <span class=\"token punctuation\">-<\/span> logs<span class=\"token punctuation\">:<\/span>PutLogEvents\n                  <span class=\"token punctuation\">-<\/span> logs<span class=\"token punctuation\">:<\/span>DescribeLogGroups\n                  <span class=\"token punctuation\">-<\/span> logs<span class=\"token punctuation\">:<\/span>DescribeLogStreams\n                <span class=\"token key atrule\">Resource<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token tag\">!Sub<\/span> arn<span class=\"token punctuation\">:<\/span>aws<span class=\"token punctuation\">:<\/span>logs<span class=\"token punctuation\">:<\/span>$<span class=\"token punctuation\">{<\/span>AWS<span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">:<\/span>Region<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">:<\/span>$<span class=\"token punctuation\">{<\/span>AWS<span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">:<\/span>AccountId<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">:<\/span>log<span class=\"token punctuation\">-<\/span>group<span class=\"token punctuation\">:<\/span>\/aws\/bedrock<span class=\"token punctuation\">-<\/span>agentcore\/runtimes\/<span class=\"token important\">*:*<\/span>\n              \n              <span class=\"token punctuation\">-<\/span> <span class=\"token key atrule\">Effect<\/span><span class=\"token punctuation\">:<\/span> Allow\n                <span class=\"token key atrule\">Action<\/span><span class=\"token punctuation\">:<\/span>\n                  <span class=\"token punctuation\">-<\/span> bedrock<span class=\"token punctuation\">:<\/span>InvokeModel\n                  <span class=\"token punctuation\">-<\/span> bedrock<span class=\"token punctuation\">:<\/span>InvokeModelWithResponseStream\n                <span class=\"token key atrule\">Resource<\/span><span class=\"token punctuation\">:<\/span>\n                  <span class=\"token punctuation\">-<\/span> arn<span class=\"token punctuation\">:<\/span>aws<span class=\"token punctuation\">:<\/span>bedrock<span class=\"token punctuation\">:<\/span><span class=\"token important\">*::foundation-model\/*<\/span>\n                  <span class=\"token punctuation\">-<\/span> arn<span class=\"token punctuation\">:<\/span>aws<span class=\"token punctuation\">:<\/span>bedrock<span class=\"token punctuation\">:<\/span><span class=\"token important\">*:*:inference-profile\/*<\/span>\n\n  <span class=\"token key atrule\">CalcAgentRuntime<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token key atrule\">Type<\/span><span class=\"token punctuation\">:<\/span> AWS<span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">:<\/span>BedrockAgentCore<span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">:<\/span>Runtime\n    <span class=\"token key atrule\">Properties<\/span><span class=\"token punctuation\">:<\/span>\n      <span class=\"token key atrule\">AgentRuntimeName<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token tag\">!Ref<\/span> AgentName\n      <span class=\"token key atrule\">AgentRuntimeArtifact<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token key atrule\">ContainerConfiguration<\/span><span class=\"token punctuation\">:<\/span>\n          <span class=\"token key atrule\">ContainerUri<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token tag\">!Ref<\/span> ContainerUri\n      <span class=\"token key atrule\">ProtocolConfiguration<\/span><span class=\"token punctuation\">:<\/span> HTTP\n      <span class=\"token key atrule\">RoleArn<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token tag\">!GetAtt<\/span> AgentCoreExecutionRole.Arn\n      <span class=\"token key atrule\">NetworkConfiguration<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token key atrule\">NetworkMode<\/span><span class=\"token punctuation\">:<\/span> PUBLIC\n      <span class=\"token key atrule\">EnvironmentVariables<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token key atrule\">MODEL_ID<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"us.anthropic.claude-sonnet-4-20250514-v1:0\"<\/span>\n        <span class=\"token key atrule\">CALCULATOR_PRECISION<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"10\"<\/span>\n\n<span class=\"token key atrule\">Outputs<\/span><span class=\"token punctuation\">:<\/span>\n  <span class=\"token key atrule\">AgentRuntimeId<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token key atrule\">Value<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token tag\">!GetAtt<\/span> CalcAgentRuntime.AgentRuntimeId\n    <span class=\"token key atrule\">Description<\/span><span class=\"token punctuation\">:<\/span> The ID of the agent runtime\n  <span class=\"token key atrule\">AgentRuntimeArn<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token key atrule\">Value<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token tag\">!GetAtt<\/span> CalcAgentRuntime.AgentRuntimeArn\n    <span class=\"token key atrule\">Description<\/span><span class=\"token punctuation\">:<\/span> The ARN of the agent runtime\n  <span class=\"token key atrule\">AgentRuntimeVersion<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token key atrule\">Value<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token tag\">!GetAtt<\/span> CalcAgentRuntime.AgentRuntimeVersion\n    <span class=\"token key atrule\">Description<\/span><span class=\"token punctuation\">:<\/span> The version of the agent runtime\n<\/code><\/pre>\n<\/div>\n<h3 id=\"4.-deploy.sh\" data-line=\"175\" class=\"code-line\">\n 4. deploy.sh<\/h3>\n<p data-line=\"176\" class=\"code-line\">ECR\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u4f5c\u6210\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u30d3\u30eb\u30c9\u3068\u30d7\u30c3\u30b7\u30e5\u3001CloudFormation\u30b9\u30bf\u30c3\u30af\u306e\u30c7\u30d7\u30ed\u30a4\u3092\u307e\u3068\u3081\u3066\u884c\u3046\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u306a\u308a\u307e\u3059\u3002\u6700\u5f8c\u306b<code>.env<\/code>\u30d5\u30a1\u30a4\u30eb\u306b ARN \u306a\u3069\u3092\u4fdd\u5b58\u3057\u307e\u3059<br \/>\u307e\u305f<code>deploy.sh<\/code>\u3067\u306fAWS CLI\u3092\u4f7f\u3044\u307e\u3059\u3002<code>PROFILE<\/code>\u3092\u81ea\u5206\u306e\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p data-line=\"179\" class=\"code-line\">\u4ee5\u4e0b\u306e\u4f5c\u696d\u304c<code>.\/deploy.sh<\/code>\u3067\u884c\u308f\u308c\u307e\u3059\u3002<\/p>\n<ol data-line=\"180\" class=\"code-line\">\n<li data-line=\"180\" class=\"code-line\">ECR\u30ea\u30dd\u30b8\u30c8\u30ea\u4f5c\u6210 : <code>strands-calc<\/code>\u3068\u3044\u3046\u540d\u524d\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f5c\u6210<\/li>\n<li data-line=\"181\" class=\"code-line\">Docker\u30a4\u30e1\u30fc\u30b8\u30d3\u30eb\u30c9 : ARM64\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5411\u3051\u306b\u30d3\u30eb\u30c9<\/li>\n<li data-line=\"182\" class=\"code-line\">ECR\u30ed\u30b0\u30a4\u30f3 : AWS\u8a8d\u8a3c\u60c5\u5831\u3067ECR\u306b\u30ed\u30b0\u30a4\u30f3<\/li>\n<li data-line=\"183\" class=\"code-line\">\u30a4\u30e1\u30fc\u30b8\u30d7\u30c3\u30b7\u30e5 : \u30d3\u30eb\u30c9\u3057\u305f\u30a4\u30e1\u30fc\u30b8\u3092ECR\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<br \/>5.CloudFormation\u30c7\u30d7\u30ed\u30a4 : <code>cfn\/template.yaml<\/code>\u3092\u4f7f\u3063\u3066\u30a4\u30f3\u30d5\u30e9\u3092\u30c7\u30d7\u30ed\u30a4<\/li>\n<li data-line=\"185\" class=\"code-line\">\u74b0\u5883\u5909\u6570\u30d5\u30a1\u30a4\u30eb\u751f\u6210 : \u30c7\u30d7\u30ed\u30a4\u5f8c\u306eARN\u306a\u3069\u3092<code>.env<\/code>\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58<\/li>\n<li data-line=\"186\" class=\"code-line\">\n<\/li>\n<\/ol>\n<div class=\"code-block-container\">\n<p><span class=\"code-block-filename\">deploy.sh<\/span><\/p>\n<pre class=\"language-shell\"><code class=\"language-shell code-line\" data-line=\"187\"><span class=\"token shebang important\">#!\/bin\/bash<\/span>\n<span class=\"token builtin class-name\">set<\/span> <span class=\"token parameter variable\">-e<\/span>\n\n\n<span class=\"token assign-left variable\">PROFILE<\/span><span class=\"token operator\">=<\/span><span class=\"token string\">\"\"<\/span> \n<span class=\"token assign-left variable\">REGION<\/span><span class=\"token operator\">=<\/span><span class=\"token string\">\"us-west-2\"<\/span>\n<span class=\"token assign-left variable\">ACCOUNT_ID<\/span><span class=\"token operator\">=<\/span><span class=\"token variable\"><span class=\"token variable\">$(<\/span>aws sts get-caller-identity <span class=\"token parameter variable\">--profile<\/span> $PROFILE <span class=\"token parameter variable\">--query<\/span> Account <span class=\"token parameter variable\">--output<\/span> text<span class=\"token variable\">)<\/span><\/span>\n<span class=\"token assign-left variable\">REPO_NAME<\/span><span class=\"token operator\">=<\/span><span class=\"token string\">\"strands-calc\"<\/span>\n<span class=\"token assign-left variable\">AGENT_NAME<\/span><span class=\"token operator\">=<\/span><span class=\"token string\">\"strands_calc\"<\/span>\n<span class=\"token assign-left variable\">STACK_NAME<\/span><span class=\"token operator\">=<\/span><span class=\"token string\">\"strands-calc-agent\"<\/span>\n\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">\"=== ECR \u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u4f5c\u6210 ===\"<\/span>\naws ecr create-repository --repository-name <span class=\"token variable\">$REPO_NAME<\/span> <span class=\"token parameter variable\">--region<\/span> <span class=\"token variable\">$REGION<\/span> <span class=\"token parameter variable\">--profile<\/span> <span class=\"token variable\">$PROFILE<\/span> <span class=\"token operator\">||<\/span> <span class=\"token boolean\">true<\/span>\n\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">\"=== Docker \u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9\uff08ARM64\uff09 ===\"<\/span>\n<span class=\"token function\">docker<\/span> buildx build <span class=\"token parameter variable\">--platform<\/span> linux\/arm64 <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">--progress<\/span><span class=\"token operator\">=<\/span>plain <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">-t<\/span> <span class=\"token variable\">$ACCOUNT_ID<\/span>.dkr.ecr.<span class=\"token variable\">$REGION<\/span>.amazonaws.com\/<span class=\"token variable\">$REPO_NAME<\/span>:latest <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token builtin class-name\">.<\/span>\n\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">\"=== ECR \u30ed\u30b0\u30a4\u30f3 ===\"<\/span>\naws ecr get-login-password <span class=\"token parameter variable\">--region<\/span> <span class=\"token variable\">$REGION<\/span> <span class=\"token parameter variable\">--profile<\/span> <span class=\"token variable\">$PROFILE<\/span> <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token operator\">|<\/span> <span class=\"token function\">docker<\/span> login <span class=\"token parameter variable\">--username<\/span> AWS --password-stdin <span class=\"token variable\">$ACCOUNT_ID<\/span>.dkr.ecr.<span class=\"token variable\">$REGION<\/span>.amazonaws.com\n\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">\"=== Docker \u30a4\u30e1\u30fc\u30b8\u306e\u30d7\u30c3\u30b7\u30e5 ===\"<\/span>\n<span class=\"token function\">docker<\/span> push <span class=\"token variable\">$ACCOUNT_ID<\/span>.dkr.ecr.<span class=\"token variable\">$REGION<\/span>.amazonaws.com\/<span class=\"token variable\">$REPO_NAME<\/span>:latest\n\n\n<span class=\"token assign-left variable\">CONTAINER_URI<\/span><span class=\"token operator\">=<\/span><span class=\"token string\">\"<span class=\"token variable\">$ACCOUNT_ID<\/span>.dkr.ecr.<span class=\"token variable\">$REGION<\/span>.amazonaws.com\/<span class=\"token variable\">$REPO_NAME<\/span>:latest\"<\/span>\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">\"Container URI: <span class=\"token variable\">$CONTAINER_URI<\/span>\"<\/span>\n\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">\"=== CloudFormation \u30b9\u30bf\u30c3\u30af\u306e\u30c7\u30d7\u30ed\u30a4 ===\"<\/span>\naws cloudformation deploy <span class=\"token punctuation\">\\<\/span>\n  --template-file cfn\/template.yaml <span class=\"token punctuation\">\\<\/span>\n  --stack-name <span class=\"token variable\">$STACK_NAME<\/span> <span class=\"token punctuation\">\\<\/span>\n  --parameter-overrides <span class=\"token punctuation\">\\<\/span>\n    <span class=\"token assign-left variable\">AgentName<\/span><span class=\"token operator\">=<\/span><span class=\"token variable\">$AGENT_NAME<\/span> <span class=\"token punctuation\">\\<\/span>\n    <span class=\"token assign-left variable\">ContainerUri<\/span><span class=\"token operator\">=<\/span><span class=\"token variable\">$CONTAINER_URI<\/span> <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">--capabilities<\/span> CAPABILITY_NAMED_IAM <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">--region<\/span> <span class=\"token variable\">$REGION<\/span> <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">--profile<\/span> <span class=\"token variable\">$PROFILE<\/span>\n\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">\"=== \u30c7\u30d7\u30ed\u30a4\u5b8c\u4e86 ===\"<\/span>\naws cloudformation describe-stacks <span class=\"token punctuation\">\\<\/span>\n  --stack-name <span class=\"token variable\">$STACK_NAME<\/span> <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">--region<\/span> <span class=\"token variable\">$REGION<\/span> <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">--profile<\/span> <span class=\"token variable\">$PROFILE<\/span> <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">--query<\/span> <span class=\"token string\">'Stacks[0].Outputs'<\/span>\n\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">\"\"<\/span>\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">\"=== \u74b0\u5883\u5909\u6570\u30d5\u30a1\u30a4\u30eb\u751f\u6210 ===\"<\/span>\n<span class=\"token assign-left variable\">AGENT_ARN<\/span><span class=\"token operator\">=<\/span><span class=\"token variable\"><span class=\"token variable\">$(<\/span>aws cloudformation describe-stacks <span class=\"token punctuation\">\\<\/span>\n  --stack-name $STACK_NAME <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">--region<\/span> $REGION <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">--profile<\/span> $PROFILE <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">--query<\/span> <span class=\"token string\">'Stacks[0].Outputs[?OutputKey==`AgentRuntimeArn`].OutputValue'<\/span> <span class=\"token punctuation\">\\<\/span>\n  <span class=\"token parameter variable\">--output<\/span> text<span class=\"token variable\">)<\/span><\/span>\n\n<span class=\"token function\">cat<\/span> <span class=\"token operator\">&gt;<\/span> .env <span class=\"token operator\"> <span class=\"token string\">EOF\n# Bedrock AgentCore Calculator Agent \u74b0\u5883\u5909\u6570\u8a2d\u5b9a\n# \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f deploy.sh \u306b\u3088\u3063\u3066\u81ea\u52d5\u751f\u6210\u3055\u308c\u307e\u3059\n\n# Agent Runtime ARN\nAGENT_RUNTIME_ARN=<span class=\"token variable\">$AGENT_ARN<\/span>\n\n# AWS\u30ea\u30fc\u30b8\u30e7\u30f3\nAWS_REGION=<span class=\"token variable\">$REGION<\/span>\n\n# AWS\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\nAWS_PROFILE=<span class=\"token variable\">$PROFILE<\/span>\nEOF<\/span>\n\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token string\">\"\u2705 .env \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\"<\/span>\n<\/span><\/code><\/pre>\n<\/div>\n<h3 id=\"5.-dockerfile\" data-line=\"263\" class=\"code-line\">\n 5. Dockerfile<\/h3>\n<div class=\"code-block-container\">\n<p><span class=\"code-block-filename\">Dockerfile<\/span><\/p>\n<pre class=\"language-docker\"><code class=\"language-docker code-line\" data-line=\"264\"><span class=\"token instruction\"><span class=\"token keyword\">FROM<\/span> python:3.11-slim<\/span>\n<span class=\"token instruction\"><span class=\"token keyword\">ENV<\/span> PYTHONUNBUFFERED=1<\/span>\n<span class=\"token instruction\"><span class=\"token keyword\">WORKDIR<\/span> \/app<\/span>\n<span class=\"token instruction\"><span class=\"token keyword\">COPY<\/span> requirements.txt .<\/span>\n<span class=\"token instruction\"><span class=\"token keyword\">RUN<\/span> pip install --no-cache-dir -r requirements.txt<\/span>\n<span class=\"token instruction\"><span class=\"token keyword\">COPY<\/span> src\/ .\/src\/<\/span>\n<span class=\"token instruction\"><span class=\"token keyword\">EXPOSE<\/span> 8080<\/span>\n<span class=\"token instruction\"><span class=\"token keyword\">CMD<\/span> [<span class=\"token string\">\"python\"<\/span>, <span class=\"token string\">\"-m\"<\/span>, <span class=\"token string\">\"src.server\"<\/span>]<\/span>\n\n<\/code><\/pre>\n<\/div>\n<h3 id=\"6.-requirements.txt\" data-line=\"276\" class=\"code-line\">\n 6. requirements.txt<\/h3>\n<p data-line=\"277\" class=\"code-line\">ECR\u306bPush\u3055\u308c\u308b<code>requirements.txt<\/code>Python\u4f9d\u5b58\u95a2\u4fc2\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<p><span class=\"code-block-filename\">requirements.txt<\/span><\/p>\n<pre class=\"language-plaintext\"><code class=\"language-plaintext code-line\" data-line=\"278\">bedrock-agentcore\nstrands-agents&gt;=1.0.0\nstrands-agents-tools&gt;=0.2.0\n<\/code><\/pre>\n<\/div>\n<h3 id=\"7.-test_calc_agent.py\" data-line=\"285\" class=\"code-line\">\n 7. test_calc_agent.py<\/h3>\n<p data-line=\"286\" class=\"code-line\">\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u547c\u3073\u51fa\u3057\u3066\u52d5\u4f5c\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3059\u3002<code>.env<\/code>\u3092\u8aad\u307f\u8fbc\u307f\u3001\u8a08\u7b97\u3055\u305b\u305f\u3044\u5f0f\u3092\u30d7\u30ed\u30f3\u30d7\u30c8\u3068\u3057\u3066\u9001\u4fe1\u3057\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<p><span class=\"code-block-filename\">test_calc_agent.py<\/span><\/p>\n<pre class=\"language-python\"><code class=\"language-python code-line\" data-line=\"287\"><span class=\"token keyword\">import<\/span> boto3\n<span class=\"token keyword\">import<\/span> json\n<span class=\"token keyword\">import<\/span> sys\n<span class=\"token keyword\">import<\/span> os\n<span class=\"token keyword\">import<\/span> uuid\n<span class=\"token keyword\">from<\/span> dotenv <span class=\"token keyword\">import<\/span> load_dotenv\nload_dotenv<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n\n    agent_runtime_arn <span class=\"token operator\">=<\/span> os<span class=\"token punctuation\">.<\/span>environ<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">\"AGENT_RUNTIME_ARN\"<\/span><span class=\"token punctuation\">)<\/span>\n    region <span class=\"token operator\">=<\/span> os<span class=\"token punctuation\">.<\/span>environ<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">\"AWS_REGION\"<\/span><span class=\"token punctuation\">)<\/span>\n    profile <span class=\"token operator\">=<\/span> os<span class=\"token punctuation\">.<\/span>environ<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">\"AWS_PROFILE\"<\/span><span class=\"token punctuation\">)<\/span>\n\n    prompt <span class=\"token operator\">=<\/span> <span class=\"token string\">\" \"<\/span><span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span>sys<span class=\"token punctuation\">.<\/span>argv<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>\n    session <span class=\"token operator\">=<\/span> boto3<span class=\"token punctuation\">.<\/span>Session<span class=\"token punctuation\">(<\/span>profile_name<span class=\"token operator\">=<\/span>profile<span class=\"token punctuation\">,<\/span> region_name<span class=\"token operator\">=<\/span>region<span class=\"token punctuation\">)<\/span>\n    client <span class=\"token operator\">=<\/span> session<span class=\"token punctuation\">.<\/span>client<span class=\"token punctuation\">(<\/span><span class=\"token string\">'bedrock-agentcore'<\/span><span class=\"token punctuation\">)<\/span>\n\n    response <span class=\"token operator\">=<\/span> client<span class=\"token punctuation\">.<\/span>invoke_agent_runtime<span class=\"token punctuation\">(<\/span>\n        agentRuntimeArn<span class=\"token operator\">=<\/span>agent_runtime_arn<span class=\"token punctuation\">,<\/span>\n        runtimeSessionId<span class=\"token operator\">=<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"session-<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>uuid<span class=\"token punctuation\">.<\/span>uuid4<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\"<\/span><\/span><span class=\"token punctuation\">,<\/span>\n        payload<span class=\"token operator\">=<\/span>json<span class=\"token punctuation\">.<\/span>dumps<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><span class=\"token string\">\"prompt\"<\/span><span class=\"token punctuation\">:<\/span> prompt<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>encode<span class=\"token punctuation\">(<\/span><span class=\"token string\">'utf-8'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n        qualifier<span class=\"token operator\">=<\/span><span class=\"token string\">\"DEFAULT\"<\/span>\n    <span class=\"token punctuation\">)<\/span>\n\n    response_body <span class=\"token operator\">=<\/span> response<span class=\"token punctuation\">[<\/span><span class=\"token string\">'response'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>read<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>decode<span class=\"token punctuation\">(<\/span><span class=\"token string\">'utf-8'<\/span><span class=\"token punctuation\">)<\/span>\n    response_data <span class=\"token operator\">=<\/span> json<span class=\"token punctuation\">.<\/span>loads<span class=\"token punctuation\">(<\/span>response_body<span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>response_data<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">'response'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">''<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>strip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n\n\n<span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">==<\/span> <span class=\"token string\">\"__main__\"<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token triple-quoted-string string\">\"\"\"\n    Usage: python test_calc_agent.py \"Calculate 5 * 5\"\n    \"\"\"<\/span>\n    main<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n<\/code><\/pre>\n<\/div>\n<h2 id=\"%E5%AE%9F%E8%A1%8C%E4%BE%8B\" data-line=\"326\" class=\"code-line\">\n \u5b9f\u884c\u4f8b<\/h2>\n<p data-line=\"327\" class=\"code-line\">\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3002`<\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"328\">.\/deploy.sh 2&gt;&amp;1 | tee deploy.log\n<\/code><\/pre>\n<\/div>\n<p data-line=\"332\" class=\"code-line\">\u30c7\u30d7\u30ed\u30a4\u304c\u5b8c\u4e86\u3057\u305f\u3089<code>test_calc_agent.py<\/code>\u3067AgentCore\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305fStrands Agents\u3092\u547c\u3073\u51fa\u3057\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-bash\"><code class=\"language-bash code-line\" data-line=\"333\">test_calc_agent.py <span class=\"token string\">\"Calculate 5 * 5\"<\/span>\n<\/code><\/pre>\n<\/div>\n<h2 id=\"%E7%B5%90%E6%9E%9C\" data-line=\"336\" class=\"code-line\">\n \u7d50\u679c<\/h2>\n<h2 id=\"%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"341\" class=\"code-line\">\n \u307e\u3068\u3081<\/h2>\n<p data-line=\"342\" class=\"code-line\">\u4eca\u56de\u306fCloudFormation\u3092\u4f7f\u3063\u3066Strands Agents\u3092Amazon Bedrock AgentCore\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\u3002IaC\u3067Amazon Bedrock AgentCore\u306b\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u308b\u306e\u304c\u3068\u3066\u3082\u826f\u3044\u611f\u3058\u307e\u3057\u305f\u3002<\/p>\n<\/div>\n\n<br \/><a href=\"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c\">\u5143\u306e\u8a18\u4e8b\u3092\u78ba\u8a8d\u3059\u308b <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\u306f\u3058\u3081 Fusic\u306e\u30ec\u30aa\u30ca\u3067\u3059\u3002\u4eca\u56de\u306f\u3001Amazon Bedrock AgentCore\u306bStrands Agents\u3092CloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3001Strands Agents\u3092\u52d5\u4f5c\u3055\u305b\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057 [&hellip;]","protected":false},"author":1,"featured_media":7737,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-7736","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-company-tec"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AWS Strands Agents\u3092Amazon Bedrock AgentCore\u306bCloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u305f - \u30dd\u30b1\u30b3\u30f3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AWS Strands Agents\u3092Amazon Bedrock AgentCore\u306bCloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u305f - \u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"og:description\" content=\"\u306f\u3058\u3081 Fusic\u306e\u30ec\u30aa\u30ca\u3067\u3059\u3002\u4eca\u56de\u306f\u3001Amazon Bedrock AgentCore\u306bStrands Agents\u3092CloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3001Strands Agents\u3092\u52d5\u4f5c\u3055\u305b\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c\" \/>\n<meta property=\"og:site_name\" content=\"\u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-01T16:31:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1759336266_og-base-w1200-v2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"info@pokecon.jp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"info@pokecon.jp\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/fusic\\\/articles\\\/6f019a35ffa03c#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/7736\\\/\"},\"author\":{\"name\":\"info@pokecon.jp\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"headline\":\"AWS Strands Agents\u3092Amazon Bedrock AgentCore\u306bCloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u305f\",\"datePublished\":\"2025-10-01T16:31:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/7736\\\/\"},\"wordCount\":169,\"image\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/fusic\\\/articles\\\/6f019a35ffa03c#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1759336266_og-base-w1200-v2.png\",\"articleSection\":[\"\u4f01\u696d\u30c6\u30c3\u30af\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/7736\\\/\",\"url\":\"https:\\\/\\\/zenn.dev\\\/fusic\\\/articles\\\/6f019a35ffa03c\",\"name\":\"AWS Strands Agents\u3092Amazon Bedrock AgentCore\u306bCloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u305f - \u30dd\u30b1\u30b3\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/fusic\\\/articles\\\/6f019a35ffa03c#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/fusic\\\/articles\\\/6f019a35ffa03c#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1759336266_og-base-w1200-v2.png\",\"datePublished\":\"2025-10-01T16:31:06+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/fusic\\\/articles\\\/6f019a35ffa03c#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zenn.dev\\\/fusic\\\/articles\\\/6f019a35ffa03c\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/fusic\\\/articles\\\/6f019a35ffa03c#primaryimage\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1759336266_og-base-w1200-v2.png\",\"contentUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1759336266_og-base-w1200-v2.png\",\"width\":1200,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/fusic\\\/articles\\\/6f019a35ffa03c#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AWS Strands Agents\u3092Amazon Bedrock AgentCore\u306bCloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u305f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\",\"name\":\"\u30dd\u30b1\u30b3\u30f3\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\",\"name\":\"info@pokecon.jp\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"caption\":\"info@pokecon.jp\"},\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/author\\\/infopokecon-jp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AWS Strands Agents\u3092Amazon Bedrock AgentCore\u306bCloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u305f - \u30dd\u30b1\u30b3\u30f3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c","og_locale":"ja_JP","og_type":"article","og_title":"AWS Strands Agents\u3092Amazon Bedrock AgentCore\u306bCloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u305f - \u30dd\u30b1\u30b3\u30f3","og_description":"\u306f\u3058\u3081 Fusic\u306e\u30ec\u30aa\u30ca\u3067\u3059\u3002\u4eca\u56de\u306f\u3001Amazon Bedrock AgentCore\u306bStrands Agents\u3092CloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3001Strands Agents\u3092\u52d5\u4f5c\u3055\u305b\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057 [&hellip;]","og_url":"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c","og_site_name":"\u30dd\u30b1\u30b3\u30f3","article_published_time":"2025-10-01T16:31:06+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1759336266_og-base-w1200-v2.png","type":"image\/png"}],"author":"info@pokecon.jp","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"info@pokecon.jp","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"5\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c#article","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/7736\/"},"author":{"name":"info@pokecon.jp","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"headline":"AWS Strands Agents\u3092Amazon Bedrock AgentCore\u306bCloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u305f","datePublished":"2025-10-01T16:31:06+00:00","mainEntityOfPage":{"@id":"https:\/\/pokecon.jp\/job\/7736\/"},"wordCount":169,"image":{"@id":"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1759336266_og-base-w1200-v2.png","articleSection":["\u4f01\u696d\u30c6\u30c3\u30af"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/pokecon.jp\/job\/7736\/","url":"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c","name":"AWS Strands Agents\u3092Amazon Bedrock AgentCore\u306bCloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u305f - \u30dd\u30b1\u30b3\u30f3","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c#primaryimage"},"image":{"@id":"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1759336266_og-base-w1200-v2.png","datePublished":"2025-10-01T16:31:06+00:00","author":{"@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"breadcrumb":{"@id":"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c#primaryimage","url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1759336266_og-base-w1200-v2.png","contentUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1759336266_og-base-w1200-v2.png","width":1200,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/zenn.dev\/fusic\/articles\/6f019a35ffa03c#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/pokecon.jp\/job\/"},{"@type":"ListItem","position":2,"name":"AWS Strands Agents\u3092Amazon Bedrock AgentCore\u306bCloudFormation\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u305f"}]},{"@type":"WebSite","@id":"https:\/\/pokecon.jp\/job\/#website","url":"https:\/\/pokecon.jp\/job\/","name":"\u30dd\u30b1\u30b3\u30f3","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pokecon.jp\/job\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997","name":"info@pokecon.jp","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","caption":"info@pokecon.jp"},"url":"https:\/\/pokecon.jp\/job\/author\/infopokecon-jp\/"}]}},"_links":{"self":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/7736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/comments?post=7736"}],"version-history":[{"count":1,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/7736\/revisions"}],"predecessor-version":[{"id":7738,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/7736\/revisions\/7738"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media\/7737"}],"wp:attachment":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media?parent=7736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/categories?post=7736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/tags?post=7736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}