一个用于监控和跟踪AWS资源创建和删除操作的解决方案,包含Web界面用于查看历史记录。
- 自动捕获AWS资源的创建和删除事件
- 将事件数据存储在DynamoDB中以便长期查询
- 提供简单的Web界面用于查看和筛选资源事件
- 支持按资源ID、资源类型和事件类型进行筛选
resource-tracker-template.yaml: 资源跟踪后端CloudFormation模板resource-tracker-web-ui.yaml: Web界面CloudFormation模板
该解决方案由两个主要部分组成:
-
资源跟踪后端:
- CloudTrail捕获API调用
- EventBridge规则筛选资源创建/删除事件
- Lambda函数处理事件并存储到DynamoDB
-
Web界面:
- S3托管的静态网站
- API Gateway提供REST API
- Lambda函数查询DynamoDB数据
- AWS账户
- AWS CLI已配置
- 启用了CloudTrail
- 部署资源跟踪后端:
aws cloudformation deploy \
--template-file resource-tracker-template.yaml \
--stack-name resource-tracker \
--capabilities CAPABILITY_IAM- 部署Web界面:
# 获取DynamoDB表名
TABLE_NAME=$(aws cloudformation describe-stacks --stack-name resource-tracker --query "Stacks[0].Outputs[?OutputKey=='DynamoDBTableName'].OutputValue" --output text)
# 部署Web界面
aws cloudformation deploy \
--template-file resource-tracker-web-ui.yaml \
--stack-name resource-tracker-web-ui \
--capabilities CAPABILITY_IAM \
--parameter-overrides DynamoDBTableName=$TABLE_NAME- 获取Web界面URL:
aws cloudformation describe-stacks \
--stack-name resource-tracker-web-ui \
--query "Stacks[0].Outputs[?OutputKey=='WebsiteURL'].OutputValue" \
--output text- 访问Web界面URL
- 使用筛选器查找特定资源事件:
- 按资源ID搜索特定资源
- 按资源类型筛选(EC2、RDS、S3等)
- 按事件类型筛选(创建、删除、修改)
编辑Lambda函数中的determine_resource_type和extract_resource_id函数,添加更多资源类型的处理逻辑。
可以通过修改S3存储桶中的HTML/CSS/JavaScript文件来增强Web界面功能。
此示例没有实现身份验证。在生产环境中,建议:
- 添加Amazon Cognito用户池进行身份验证
- 实施更严格的IAM权限
- 考虑加密敏感数据
- 限制API访问
删除CloudFormation堆栈以清理所有资源:
aws cloudformation delete-stack --stack-name resource-tracker-web-ui
aws cloudformation delete-stack --stack-name resource-tracker