aws-samples/sample-claimflow-devops-agent-workshop

GitHub: aws-samples/sample-claimflow-devops-agent-workshop

AWS 官方的多服务保险理赔示例应用,结合故障注入场景用于演示和研讨 AWS DevOps Agent 的自主事件检测与调查能力。

Stars: 0 | Forks: 1

# sample-claimflow-devops-agent-workshop AWS 上的示例保险理赔微服务应用,用于通过故障注入演示 AWS DevOps Agent 的事件检测功能。 ## 概述 ClaimFlow 是一个构建在 AWS 上的示例多服务保险理赔应用程序。它支持健康险、车险、财产险和旅游险理赔,并具备自动化欺诈检测(使用 Amazon Bedrock)、文档提取和实时跟踪功能。它配套于 *使用 AWS DevOps Agent 进行自主事件响应* 研讨会,并包含一组可复现的故障注入场景,用于演示 AWS DevOps Agent 如何检测和调查事件。 ## 架构 ``` Frontend (React TS) → CloudFront → API Gateway → VPC Link → internal NLB → ECS Fargate (7 services) │ ┌───────────────────────────────────────────────┼───────────────────────────────┐ │ │ │ │ Auth Service Claim Service Fraud Service Document/Notif/Rules/Analytics JWT / RBAC Lifecycle Amazon Bedrock Textract / SES+SNS / Rules / Aurora │ │ │ DynamoDB DynamoDB DynamoDB + Bedrock ``` 公共入口点是位于 Amazon API Gateway 前面的 Amazon CloudFront。API Gateway 通过 VPC Link 将 `/api/*` 流量路由到内部(非面向互联网)的 Network Load Balancer,该负载均衡器位于 ECS Fargate 服务前端。这些服务无法直接从互联网访问。 ### 技术栈 | 层级 | 技术 | |-------|-----------| | 前端 | React 18, TypeScript, Tailwind CSS | | 后端 | Python 3.12, FastAPI, Uvicorn | | 计算 | Amazon ECS Fargate(7 个服务) | | 数据库 | Amazon DynamoDB + Amazon Aurora PostgreSQL | | 存储 | Amazon S3 + Amazon CloudFront | | AI/ML | Amazon Bedrock (Anthropic Claude Sonnet 4.5) | | 文档处理 | Amazon Textract + Amazon Comprehend | | 通知 | Amazon SES (邮件) + Amazon SNS (短信) | | 路由 | Amazon API Gateway + VPC Link + 内部 NLB + CloudFront | | 基础设施 | AWS CDK (Python) | ## 项目结构 ``` sample-claimflow-devops-agent-workshop/ ├── frontend/ # React TypeScript SPA ├── services/ # Python FastAPI microservices │ ├── auth-service/ # Authentication & RBAC │ ├── claim-service/ # Claim lifecycle management │ ├── fraud-service/ # AI fraud detection (Amazon Bedrock) │ ├── document-service/ # Document upload & OCR │ ├── notification-service/ # Email + SMS notifications │ ├── rules-service/ # Assessment rules engine │ └── analytics-service/ # Data aggregation & dashboards ├── infra/ # AWS CDK infrastructure (Python) ├── scripts/ # Automation + fault-injection scenarios │ └── fault-injection/ # DevOps Agent demo fault scenarios ├── deploy.sh # One-command deployment script ├── LICENSE # MIT-0 ├── THIRD-PARTY-LICENSES # Attribution for third-party dependencies ├── CONTRIBUTING.md ├── CODE_OF_CONDUCT.md └── README.md # This file ``` ## 快速入门 ### 前置条件 - Python 3.12+ - Node.js 18+ - AWS CDK CLI (`npm install -g aws-cdk`) - Finch 或 Docker(用于构建容器镜像) - 已配置目标账户凭证的 AWS CLI - 账户(`us-east-1` 区域)中已启用对 Anthropic Claude Sonnet 4.5 的 Amazon Bedrock 访问权限 ### 部署 ``` ./deploy.sh ``` 默认部署区域为 `us-east-1`。部署将配置 VPC、Aurora PostgreSQL、DynamoDB 表、ECS Fargate 服务、API Gateway 和 CloudFront 分配。 ### 卸载 ``` cd infra source .venv/bin/activate AWS_PROFILE= cdk destroy --all ``` ## 功能 ### 演示用户 首次启动时,auth-service 会以幂等方式注入三个演示账户(受 `SEED_DEFAULT_USERS` 环境变量控制,默认为 `true`)。它们仅用于短期演示和研讨会,应用程序会在日志中对此进行说明。对于任何长期运行的部署,请禁用注入(`SEED_DEFAULT_USERS=false`),并在将应用程序公开到沙箱账户之外之前,轮换或移除这些账户。 | 用户 ID | 密码 | 角色 | |---|---|---| | admin | admin12345 | 系统管理员 | | adjudicator | Adjudicator123 | 理赔裁决员 | | policyholder | PolicyHolder123 | 投保人 | ### 投保人 - 提交理赔(健康险、车险、财产险、旅游险) - 上传支持文档 - 实时跟踪理赔状态 ### 理赔裁决员 - 审查待处理的理赔,批准并确定赔付金额,或附上理由拒绝 - 发起赔付并关闭理赔 ### 系统管理员 - 服务健康监控和 API 响应时间跟踪 - 用户管理和分析仪表板 ## 故障注入(DevOps Agent 演示) `scripts/fault-injection/` 目录包含三个可复现的故障场景,用于演示自主事件检测和诊断(例如使用 AWS DevOps Agent): 1. **Bad Query** — `claim-service` 上的 CPU 飙升 2. **Memory Sidecar** — `fraud-service` 上的 OOM 崩溃循环 3. **DDoS** — 来自恶意 ECS 任务的 HTTP 泛洪 ``` cd scripts/fault-injection ./inject.sh 1 # inject scenario 1 ./recover.sh # recover between scenarios ./recover.sh --verify-only # verify clean state ``` 有关完整详细信息,请参阅 [scripts/fault-injection/README.md](scripts/fault-injection/README.md)。 ### 仅限研讨会的配置 CDK 堆栈启用了一些便于演示或研讨会但不适用于任何长期环境的默认设置。在沙箱账户之外重用此代码之前,请检查并禁用它们: - ECS 服务上的 **`enable_execute_command=True`**。故障注入脚本使用 `aws ecs execute-command` 将故障注入正在运行的容器中。此设置会为每个任务打开一个基于 SSM 的 shell,在研讨会沙箱之外,应将其设置为 `False`(生产工作负载的默认值)。 - auth-service 上的 **`SEED_DEFAULT_USERS=true`**。首次启动时注入三个已知的演示账户。对于能够被您自己的沙箱账户之外访问的任何部署,请设置为 `false`。 - Aurora、DynamoDB 表和前端 S3 存储桶上的 **`removal_policy=DESTROY`**。使销毁成为单命令操作。如果数据具有任何价值,请切换为 `RETAIN`(或先进行备份)。 ## 预估成本 本应用程序仅旨在演示或研讨会期间运行。堆栈运行时在 `us-east-1` 的近似成本: | 组件 | 配置 | 预估成本 | |---|---|---| | ECS Fargate | 7 个服务 × 0.25 vCPU + 0.5 GB,每个服务 1 个任务,24×7 | ~$11 / 天 | | Amazon Aurora PostgreSQL | `db.t3.medium`,单实例,24×7 | ~$3 / 天 | | Amazon DynamoDB | 按需,低流量 | < $0.50 / 天 | | NAT Gateway | 1 个 NAT,24×7 | ~$1.10 / 天 | | Application Load Balancers + API Gateway | 内部 NLB + API Gateway HTTP API | ~$1 / 天 | | Amazon CloudFront + S3 | 演示级流量 | < $0.50 / 天 | | Amazon Bedrock (Claude Sonnet 4.5) | 按调用付费;仅 fraud-service 调用 | 取决于使用量 | | Amazon Textract / Comprehend / SES / SNS | 按调用付费;演示级使用量 | < $0.50 / 天 | **近似总计:堆栈运行期间约 ~$17–20 / 天**,外加单次调用的 Bedrock 费用(在研讨会规模下通常 < $1 / 天)。 为避免演示之间产生费用,请从 `infra/` 目录运行 `cdk destroy --all`。请参阅上方的[卸载](#undeploy)部分。这些数字是近似值,未包含税费,并假定为默认区域(`us-east-1`);请使用 [AWS Pricing Calculator](https://calculator.aws/) 获取权威估算。 ## 理赔生命周期 ``` Draft → Under Review → Approved → Settlement → Closed → Rejected → Closed ``` ## 安全性 有关如何报告安全问题,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md#security-issue-notifications)。这是旨在用于演示和学习的示例代码;在生产使用前,请对其进行审查和强化。 ## 已知限制 这是经过优化以易于阅读和进行短期演示的示例代码。以下内容在该上下文中是已知且可接受的;在任何生产使用之前,请对其进行强化: - **Dockerfile 基础镜像未进行 SHA 锁定。** 每个 `Dockerfile` 都使用浮动标签(例如 `python:3.12-slim`)而不是 `python:3.12-slim@sha256:...`。因此,只要上游标签保持稳定,容器构建就是可复现的。如果您将其 fork 到长期运行的环境中,请固定到摘要 (digest)。 - **某些 shell 脚本使用未加引号的变量扩展。** `deploy.sh` 和 `scripts/fault-injection/inject.sh` 在插入变量时没有一致地使用双引号。输入是受控的(一个 AWS profile 名称和一小部分脚本参数),因此这对于演示是可接受的,但在扩展脚本以接受不受信任的输入之前,请强化引号的使用。 - **`pytest` `tmpdir` 安全公告 (CVE-2025-71176)。** 所有七个服务在开发/测试扩展中均锁定了一个最新的 `pytest`。在撰写本文时,该安全公告在上游尚未修复(参见 [pytest-dev/pytest#13669](https://github.com/pytest-dev/pytest/issues/13669)),并且反映了在多用户 UNIX 主机上针对 `/tmp/pytest-of-{user}` 的本地权限提升竞争条件。`pytest` 仅是一个开发依赖项——它没有安装在生产的容器镜像中——因此该公告不适用于已部署的应用程序。在单用户工作站或 CI 运行器上运行测试,以避免本地攻击者场景。 - **密钥处理。** 应用程序使用 AWS Secrets Manager 来管理 Aurora 密码和运行时生成的 JWT 签名密钥。演示用户密码在启动时被注入,并且是众所周知且公开的(参见[演示用户](#demo-users))。 ## 许可证 本库根据 MIT-0 许可证授权。请参阅 [LICENSE](LICENSE) 文件。
标签:Amazon Bedrock, AWS, DPI, 保险理赔系统, 微服务架构, 故障注入, 运维监控, 逆向工具