← Financial Cloud Cloud Cloud Club · AWS Re:cap

極點宏觀|Financial Cloud Cloud · AWS Re:cap

AWS Re:cap 04: 以 Bedrock AgentCore 打造 Serverless AR 遊戲

講者: Cyrus Wong

場次: 04

場次
Summit Dev Lounge2026 Re:cap
01 把架構寫成 Steering,引導 AI Agent
Summit Dev Lounge2026 Re:cap
02 Agent Harness 才是真正的工程護城河
Summit Dev Lounge2026 Re:cap
03 用白話詢問可觀測性資料
Summit Dev Lounge2026 Re:cap
04 以 Bedrock AgentCore 打造 Serverless AR 遊戲
Summit Dev Lounge2026 Re:cap
05 AgentCore 上的多 Agent 量化回測
Summit Dev Lounge2026 Re:cap
06 三分鐘用 Kiro 把部落格變簡報
Summit Dev Lounge2026 Re:cap
AWS Community Day Hong Kong 2025 Re:cap
02 使用 Terraform 實現 AWS 合規
AWS Community Day Hong Kong 2025 Re:cap
03 從新手到開發者:一段精彩的 AWS 雲端旅程
AWS Community Day Hong Kong 2025 Re:cap
04 以團隊為優先:使用 Laravel 與 Bref 進行無伺服器工程
AWS Community Day Hong Kong 2025 Re:cap
05 活動開幕
AWS Community Day Hong Kong 2025 Re:cap
06 Agent-to-Agent:在 AWS 上打造可互通的 AI
AWS Community Day Hong Kong 2025 Re:cap
07 運用另一種遙測資料,透過 AI Agent 加速改善
AWS Community Day Hong Kong 2025 Re:cap
08 告別 Vibe Coding:運用 Kiro 實踐規格驅動開發(Spec-Driven Development)
AWS Community Day Hong Kong 2025 Re:cap
09 運用 MCP 與 AI 代理進行自動化測試
AWS Community Day Hong Kong 2025 Re:cap
10 以 ML 驅動的方法實現電信安全現代化
AWS Community Day Hong Kong 2025 Re:cap
11 重新思考 GenAI Agent:RAG 與 MCP
AWS Community Day Hong Kong 2025 Re:cap
12 運用 TAK 與 AWS 進行災害及緊急應變
AWS Community Day Hong Kong 2025 Re:cap
13 從測試角度重新思考 Serverless 應用程式工作流程
AWS Community Day Hong Kong 2025 Re:cap
14 運用實務 AWS FinOps 邁向雲端成功
AWS Community Day Hong Kong 2025 Re:cap
15 運用 AWS 打造 AI 驅動的全球 Pure-Alpha 宏觀交易:革新風險調整後資產報酬
AWS Community Day Hong Kong 2025 Re:cap
FSI Recap
01 現代交易生命週期:從交易到結算
FSI Recap
02 Goldman Sachs:透過 Fast Track 將應用程式移至雲端 - AWS Re:cap Q1/2023
FSI Recap
03 Zurich Insurance Group:在 AWS 上建置有效的日誌管理解決方案
FSI Recap
04 FSI Meetup 2025 Q4 - Brex 資料庫災難復原
FSI Recap
05 FSI Meetup 2025 Q4 - Graviton 遷移成功案例
FSI Recap
06 FSI Meetup 2025 Q4 - Stifel 現代化資料平台
FSI Recap
07 FSI Meetup 2025 Q4 - PayPal 金融交易資料對帳器
FSI Recap
08 FSI Meetup 2025 Q4 - 擴展韌性
FSI Recap
09 最大化 AI 推論成本效益:策略性採用 AWS GPU 執行個體
FSI Recap
10 進階代理式 AI 設計模式
FSI Recap
11 在 AWS 上建置全新現代化應用程式
FSI Recap
AWS re:Invent 2025
01 Coinbase re:Invent 回顧 (IND3312)
AWS re:Invent 2025
02 利用 AI 和 AWS 構建未來交易平臺
AWS re:Invent 2025
03 交易創新:Jefferies 在 Amazon Bedrock 上的 AI 助理 (IND3315)
AWS re:Invent 2025
04 FSI 如何運用代理式 AI 徹底改造 HFT 分析 (GBL302)
AWS re:Invent 2025
05 透過 Amazon Time Sync 改善分散式系統,Nasdaq 專題分享
AWS re:Invent 2025
06 Amazon Aurora HA 與 DR 的全球韌性設計模式 (DAT442)
AWS re:Invent 2025
07 建構代理式 AI:Amazon Nova Act 與 Strands Agents 實務應用 (DEV327)
AWS re:Invent 2025
08 深入探討 Amazon Aurora 及其創新 (DAT441)
AWS re:Invent 2025
09 深入探討 Amazon S3 (STG407)
AWS re:Invent 2025
10 Nasdaq:為全球金融服務打造具彈性的基礎設施(HMC327)
AWS re:Invent 2025
11 AWS Lambda 的最新功能 (CNS376)
AWS re:Invent 2025
12 使用 Kiro 進行規格驅動開發 (DEV314)
AWS re:Invent 2025
13 Amazon 的 FinOps:全球電子商務巨擘的雲端成本經驗 (AMZ308)
AWS re:Invent 2025
14 AWS 上的 Tick-to-trade 延遲交易平台
AWS re:Invent 2025
政務資料
01 The AI Era: The Boundary Between Development and Design Is Disappearing
政務資料
02 裝置端多模態 AI 與智慧城市實踐
政務資料
03 大模型能力評測與 AI 專案落地方法論
政務資料
04 基於雲端代理的政府開發全鏈路受控自動化
政務資料
05 從多智能體看 Agent 時代軟體新生態
政務資料
06 AI 驅動的宏觀量化研究與智慧治理
政務資料
07 公共數據授權營運與智慧政務實踐
政務資料
08 数据资产化落地实践:确权合规、工程治理与数字政府案例
政務資料
09 AI技術賦能心理健康公益:可信平台的治理、架構與實踐
政務資料
Amarathon 2025 回顧
01 開發人員的代理架構設計路線圖
Donnie Prakoso
02 Amazon Bedrock 資料自動化
Hafiz Syed Ashir Hassan
03 AgentCore 上的多代理
Tan Xin
04 實務建置代理式 AI:Nova Act 與 Strands Agents
Haowen Huang
04 運用規格驅動開發,以 Kiro 加速移轉專案
Sanchit Dilip Jain
06 從「比對」到「理解」:由 AgentCore Memory 驅動的個人化 AI 搜尋實踐
Liu Cao
07 從觀察到最佳化:從 LLM 可觀測性邁向 AIOps,將即時洞察轉化為智慧自動化
Jimmy Soh
08 部署 TEAM 並打造最佳工程團隊
Yuji Oshima
09 五年來所謂無伺服器資料庫帶來的五個慘痛教訓
Renato Losio
14 如果 AI 替我工作會怎樣:Q Developer CLI 與 Kiro 如何改變我的日常工作
Miguel Angel Muñoz
16 兼顧速度與警覺:Amazon Bedrock Agent 開發的安全要點
Brian Tarbox
26 在單張 H100 上執行 OSS LLM:更聰明、更便宜、更快速
Adit Modi Adit Modi
28 現代化統一中繼資料架構:打破資料孤島的新方法
Shaofeng Shi
29 無伺服器 MediaOps:運用 Amazon Web Services 上的 AI 自動化影片工作流程
Luis Valdivia
30 透過大規模效能測試建構兼具效率與可靠性的架構
Luis Guirigay
31 透過開放原始碼連結世界:技術、社群與全球開發者關係的實踐歷程
Richard Lin
33 建置串流 Iceberg 資料表以進行即時物流分析
Fahad Shah
34 加速大規模機器人策略訓練:以 Kiro、Trainium 與 EKS 為基礎的自動化閉環架構
Junjie Tang
35 透過規格驅動開發,從 Vibe 走向可行方案
Ricardo Sueiras
36 讓雲端成本分析更智慧:使用 Strands 與 AgentCore 建置 FinOps 智慧 Agent
Xiaofei Li
37 使用 CNCF Kagent、K8sGPT 與 Nova Sonic,轉型 K8s 對話式 Agentic AIOps
Shaoyi Li

AWS Hong Kong Summit 2026 · Developer Lounge 精華回顧 · 第 4 / 6 篇

AWS Magazine · 維多利亞港現場報導


現場:中環 swagger 遇上 Serverless 咒術

過去六十年追蹤科技變遷,我站過數百個展場,但很少有地方能媲美 AWS Hong Kong Summit 2026 Developer Lounge 那股電流般的脈動。

倚著維多利亞港壯闊天際,Developer Lounge 是香港奢華與 AWS 高科技工藝的正面碰撞。想像一下:創投與新創創辦人邊喝精品手沖咖啡邊談七位數交易,國際講者交換架構圖,私人開發者聚會裡高風險創投話題此起彼落。資金進進出出,合作即興成形;在霓虹閃爍與中環能量之中,工程師圍在螢幕前,見證純粹的 serverless 咒術。

Lounge 最吸睛的展示?Cyrus Wong 把奢華娛樂與雲端工程合而為一的 demo:咒術迴戰領域展開 AR 遊戲。

「唔錯喎!反應好似我去搶購減價化妝品噉快!當堂順眼好多!」 (Not bad! Your reaction is almost as fast as me grabbing a limited-edition bag in Shibuya!)

對著鏡頭比出五條悟的 Unlimited Void(無量空處)或兩面宿儺的 Malevolent Shrine(伏魔御廚子)手勢,螢幕立刻爆開 3D 粒子特效,真實(或模擬)人形機器人擺出功夫架式——全程由 AI 評論員以時髦、愛時尚的本地粵語即時解說。

以下是這款同人應用如何以 AWS Bedrock AgentCore、AWS CDK 與 serverless 編排建構的深入實戰架構拆解。


全場焦點:AI 評論員釘崎野薔薇

體驗核心是仿 Kugisaki Nobara(釘崎野薔薇) 打造的 AI 評論員。多模態 AI 視覺驅動,她即時吐槽玩家的手勢、穿搭、姿勢,甚至凌亂的房間。

多語支援與視覺智慧

● 語言:本地粵語、台灣華語、日語與英語。

● 個性:中環高級時尚 × 動畫咒術。

● 模型堆疊:moonshotai.kimi-k2.5 在 Bedrock 自訂 ECR 容器內執行,搭配 AWS Polly 高保真神經語音合成。

系統架構總覽

介面 / 功能 模型與基礎設施實作 關鍵服務堆疊
AI 評論員(Nobara) 透過 moonshotai.kimi-k2.5 進行視覺感知文字推理 AWS Bedrock AgentCore Runtime
語音合成(TTS) 神經粵語、華語、日語、英語 AWS Polly & Amazon S3
手勢追蹤 60 FPS 的 21 個 3D 地標點 Google MediaPipe Hands(Client JS)
機器人控制 硬體與 3D 模擬器 MQTT 架式 AWS IoT Core & AWS Lambda
基礎設施 100% 基礎設施即程式碼 AWS CDK(TypeScript)

逐步實戰執行流程

+-----------------------------------------------------------------------------------+
端到端手勢到語音流程

1. [ Browser Client ] -- MediaPipe 60FPS --> [ API Gateway ]
2. [ API Gateway ] -- Cognito JWT --> [ Monolithic Lambda ]
3. [ Monolithic Lambda ] -- XML multimodal payload --> [ AgentCore Runtime ]
4. [ AgentCore Runtime ] --> [ AWS Polly ] neural speech
5. [ AWS Polly ] --> [ S3 Audio Bucket ] --> browser playback
+-----------------------------------------------------------------------------------+

步驟 A:用戶端手勢偵測與 API 信號

瀏覽器執行 hand_tracker.js,以 Google MediaPipe Hands 分析 21 個 3D 地標點、60 FPS。手勢(例如 Malevolent Shrine)驗證後,battle.js 帶 Cognito Bearer JWT 向 Amazon API Gateway 送出 POST 請求:

// battle.js: Dispatching recognized gesture to API Gateway[cite: 1]
async function triggerCursedTechnique(techniqueName) {
    const token = await getCognitoAccessToken(); // High-security Bearer Token[cite: 1]
    try {
        const response = await fetch("/api/trigger-technique", {
            method: "POST",
            headers: {
                "Content-Type": "application/json",
                "Authorization": `Bearer ${token}`
            },
            body: JSON.stringify({
                technique: techniqueName, // e.g. "malevolent_shrine"[cite: 1]
                robotId: "all",
                sessionId: "mcpserver"
            })
        });
        const result = await response.json();
        playCommentaryAudio(result.audioUrl); // Play resulting neural voice track[cite: 1]
    } catch (err) {
        console.error("Failed to execute server-side technique orchestration:", err); //[cite: 1]
    }
}

步驟 B:Cognito 授權與 XML Base64 繞道

API Gateway 驗證 token 後,將請求轉發至單體 Flask Lambda(lambda_function.py)。

為避免企業網路代理在傳輸中剝除二進位 multipart 影像資料,commentary.py 將網路攝影機快照嵌入文字 payload 的自訂 XML 標籤:

# commentary.py: Packaging snapshots inside XML text tags[cite: 1]
def generate_ai_commentary(content_block, session_id="mcpserver", image_base64_p1=""):
    if image_base64_p1:
        content_block += f"\n<p1_webcam_base64_jpeg>{image_base64_p1}</p1_webcam_base64_jpeg>" #[cite: 1]

    agent_client = boto3.client("bedrock-agentcore", region_name="us-east-1") #[cite: 1]

    payload_dict = {
        "prompt": content_block,
        "session_id": session_id
    }

    response = agent_client.invoke_agent_runtime(
        agentRuntimeArn=os.environ.get("AGENTCORE_RUNTIME_ARN"),
        runtimeSessionId=session_id,
        payload=json.dumps(payload_dict).encode("utf-8")
    )
    return response.get("response").read().decode("utf-8") #[cite: 1]

步驟 C:Serverless AgentCore Runtime 執行

AWS Bedrock AgentCore Runtime 透過 IAM SigV4 將呼叫路由至自訂容器(domain_commentator_agentcore)。容器內 FastAPI 服務(commentator_agent.py)以 regex 擷取 base64 XML 區塊,重建 Bedrock 的二進位多模態 payload:

# commentator_agent.py: Unwrapping XML image parts inside container[cite: 1]
@app.post("/invocations")
async def invoke_agent(request: Request):
    body = await request.json()
    prompt_text = body.get("prompt", "")

    p1_pattern = re.compile(r"<p1_webcam_base64_jpeg>(.*?)</p1_webcam_base64_jpeg>", re.DOTALL) #[cite: 1]
    p1_match = p1_pattern.search(prompt_text)

    image_b64_p1 = ""
    if p1_match:
        image_b64_p1 = p1_match.group(1).strip()
        prompt_text = p1_pattern.sub("", prompt_text).strip() # Clean text prompt[cite: 1]

    img_bytes_p1 = base64.b64decode(image_b64_p1)
    message_content = [
        {"text": "Player 1 webcam snapshot:"},
        {"image": {"format": "jpeg", "source": {"bytes": img_bytes_p1}}},
        {"text": prompt_text}
    ]

    response = await strands_agent.invoke_async(message_content) #[cite: 1]
    return JSONResponse(content={"response": str(response)}, status_code=200) #[cite: 1]

步驟 D:透過 AgentCore Tool Gateway 派發硬體指令

模型觸發實體動作時,runtime 呼叫 AgentCore Tool Gateway(bedrockagentcore.Gateway),再透過 IAM SigV4 呼叫 robot_tool_lambda.py,向 AWS IoT Core 發布 MQTT 指令:

# robot_tool_lambda.py: Stripping tool prefix and invoking IoT Core[cite: 1]
def lambda_handler(event, context):
    full_tool_name = event.get("tool_name", "") # e.g., "robot-only-mcp-lambda___robot_wave"[cite: 1]
    local_tool_name = full_tool_name.split("___")[-1] if "___" in full_tool_name else full_tool_name #[cite: 1]

    if local_tool_name == "robot_wave":
        iot_client = boto3.client("iot-data")
        iot_client.publish(
            topic="arn:aws:iot:us-east-1:123456789012:topic/robot_1/topic",
            qos=1,
            payload=json.dumps({"action": "wave_hand", "timestamp": int(time.time())})
        )
        return {"status": "SUCCESS", "message": "Robot hand wave triggered."} #[cite: 1]


基礎設施即程式碼:CDK 核心模式

為讓基礎設施可重複、現代且乾淨,整個系統以 AWS CDK 建模。

1. 集中式 Tool Gateway Construct(robot-tool-gateway.ts)

// Constructing the Tool Gateway with IAM SigV4 security[cite: 1]
export class RobotToolGatewayConstruct extends Construct {
  public readonly robotToolFunction: PythonFunction;
  public readonly gateway: bedrockagentcore.Gateway;

  constructor(scope: Construct, id: string, props: RobotToolGatewayConstructProps) {
    super(scope, id);

    this.robotToolFunction = new PythonFunction(this, "RobotToolFunction", {
      entry: path.join(__dirname, "../../../mcp_server"),
      runtime: SHARED_PYTHON_RUNTIME,
      index: "robot_tool_lambda.py",
      handler: "lambda_handler",
      timeout: Duration.seconds(30),
    });

    this.gateway = new bedrockagentcore.Gateway(this, "RobotToolGateway", {
      description: "AgentCore gateway fronting the robot Lambda tools",
      authorizerConfiguration: bedrockagentcore.GatewayAuthorizer.usingAwsIam(), // SigV4 Auth[cite: 1]
    });

    this.gateway.addLambdaTarget("RobotToolLambdaTarget", {
      gatewayTargetName: "robot-only-mcp-lambda",
      lambdaFunction: this.robotToolFunction,
      toolSchema: bedrockagentcore.ToolSchema.fromLocalAsset(materializeRobotToolSchemaAsset()),
    });
  }
}

2. Serverless AgentCore 評論員 Runtime(domain-expansion-serverless.ts)

// Deploying commentator runtime with cost-aware lifecycles[cite: 1]
const runtime = new agentcore.Runtime(this, "Runtime", {
  runtimeName: "domain_commentator_agentcore",
  agentRuntimeArtifact: agentcore.AgentRuntimeArtifact.fromAsset(
    path.join(__dirname, "../../../domain-expansion-commentator-agentcore"),
    { platform: Platform.LINUX_ARM64 }
  ),
  authorizerConfiguration: agentcore.RuntimeAuthorizerConfiguration.usingIAM(),
  lifecycleConfiguration: {
    idleRuntimeSessionTimeout: Duration.seconds(120), // 2 min idle timeout[cite: 1]
    maxLifetime: Duration.seconds(900),              // 15 min max session[cite: 1]
  },
  tracingEnabled: true,
  environmentVariables: {
    BEDROCK_MODEL_ID: "moonshotai.kimi-k2.5",
  },
});


分流式 API Gateway 安全模型

團隊實作分流 REST 模型,解決經典 Web 衝突:標準瀏覽器元素(<img src="...">)無法帶 Bearer header,但寫入操作會消耗 LLM 費用。

// Public vs Protected Endpoint Configuration[cite: 1]
const restApi = new apigateway.RestApi(this, "DomainExpansionRestApi", {
  restApiName: "Domain Expansion Serverless REST API",
});

const restAuthorizer = new apigateway.CognitoUserPoolsAuthorizer(this, "DomainExpansionRestApiAuthorizer", {
  cognitoUserPools: [props.userPool],
});

// 🔓 PUBLIC READ-ONLY ENDPOINTS (No Cognito Token required)[cite: 1]
apiResource.addResource("get-snapshot").addMethod("GET", lambdaIntegration, {
  authorizationType: apigateway.AuthorizationType.NONE, //[cite: 1]
});

// 🔒 PROTECTED WRITE ENDPOINTS (Strict Cognito Validation)[cite: 1]
apiResource.addResource("trigger-technique").addMethod("POST", lambdaIntegration, {
  authorizationType: apigateway.AuthorizationType.COGNITO, // Edge validation[cite: 1]
  authorizer: restAuthorizer,
});


可觀測性與企業級追蹤

可觀測性透過 CloudWatch Vended Logs 命名空間與 AWS X-Ray 處理:

// Configuring Vended Logs namespace for AgentCore[cite: 1]
const applicationLogGroup = new logs.LogGroup(scope, `${id}ApplicationLogGroup`, {
  logGroupName: `/aws/vendedlogs/bedrock-agentcore/gateway/APPLICATION_LOGS/${gateway.gatewayId}`, //[cite: 1]
  retention: logs.RetentionDays.THREE_DAYS,
});

這確保在單一 X-Ray 地圖上進行端到端分散式追蹤:

Browser Gesture → API Gateway → Lambda Router → AgentCore Container → Strands LLM → AWS Polly TTS。


智慧用戶端防護與角色工程

1. 成本防護工作階段邏輯(auth-check.js)

為避免閒置分頁維持 AgentCore socket 連線造成帳單外洩,用戶端每 30 秒在裝置上檢查 Cognito JWT:

Session Expired = currentTime >= jwt.exp

若已過期,立即關閉作用中的 WebSocket:

function checkSessionGuard() {
    const token = getCognitoToken();
    if (isTokenExpired(token)) {
        if (webSocketConnection) webSocketConnection.close(); // Prevent billing leaks[cite: 1]
        triggerLocalLogout();
    }
}
setInterval(checkSessionGuard, 30000); // 0 cloud compute overhead[cite: 1]

2. 語音文字清理(commentary_tts.py)

將模型輸出交給 AWS Polly 前,以 BeautifulSoup 把 Markdown 符號(**bold**、#)轉成乾淨純文字,避免 Polly 唸出語法:

import markdown
from bs4 import BeautifulSoup

def sanitize_text_for_tts(raw_text):
    html_formatted = markdown.markdown(raw_text)
    return BeautifulSoup(html_formatted, "html.parser").get_text() # Clean plain text[cite: 1]

3. Soul as Code 設定

角色身分完全解耦為標準 Markdown 檔,在 runtime 載入:

● IDENTITY.md:嗆辣粵語風格與氣質指引。

● SOUL.md:戰鬥 lore 規則(例如如何吐槽五條悟玩家)。


架構經濟學與隨用隨付

架構選擇 成本與效率影響
零閒置計費 無對戰進行時 $0.00;無需持續運行的 EC2/ECS 伺服器。
S3 生命週期規則 網路攝影機快照與 Polly MP3 音訊串流 7 天後自動刪除。
P2P 視訊 WebRTC 視訊串流點對點直連;API Gateway WebSocket 僅處理輕量遙測。

結語:Developer Lounge 的氛圍

Cyrus Wong 與團隊在 AWS Hong Kong Summit 2026 Developer Lounge 展示的,不只是一款有趣的同人遊戲,更是現代 serverless 設計的實戰課:高時尚、高科技、低延遲、零閒置成本。

夕陽照進中環、點亮維多利亞港時,開發者仍圍在攤位前掃 CDK 儲存庫、測試手勢。這才是 AWS Developer Lounge 真正的精神——把世界級工程、在地文化活力與 serverless 力量,聚在同一個屋簷下。