内容提要
本文介绍如何将Amazon QuickSight日志持续投递至S3,用于审计与长期留存。支持五类日志(聊天、反馈、用量、索引、文件同步),通过CloudWatch Logs V2 delivery实现,无需创建Log Group。提供CloudFormation和AWS CLI两种部署方式,涵盖权限配置、加密、排障及清理步骤,并强调安全合规与最小权限原则。
延伸解读
日志类型与触发频率差异
五类日志的发布频率差异显著:聊天和反馈日志可快速验证,而用量、索引和文件同步日志依赖实际功能调用或内容变更。例如,INDEX_USAGE_LOGS仅在来源变化时发布,不保证每天有记录;KB_FILE_SYNC_LOGS在每次同步时按文档产生记录。理解这些差异有助于区分“尚无业务事件”和“投递异常”,避免误判。
字段默认不写入的注意事项
官方文档中标记为*的字段(如latency、time_to_first_token等)默认不会写入日志。如需这些字段,必须在CreateDelivery时通过record-fields显式指定,并同时包含该日志类型的必填字段。这提醒读者在规划日志分析需求时,需提前确认所需字段是否默认可用,否则可能影响后续分析。
安全与合规的关键考量
CHAT_LOGS和FEEDBACK_LOGS可能包含用户输入或业务上下文,启用投递前应完成数据分类、隐私评估和访问控制设计。建议对Bucket及日志读取权限实施最小权限原则,按日志类型配置S3 Lifecycle,生产环境使用Customer Managed KMS Key,并确认数据驻留和隐私要求。这些措施有助于满足审计与合规需求。
Q&A
如何将 Amazon QuickSight 日志投递到 S3?
可以通过 CloudWatch Logs V2 delivery 功能,将 Amazon QuickSight 的日志直接投递到 S3。支持五类日志:聊天、反馈、用量、索引和文件同步。部署方式有 CloudFormation 和 AWS CLI 两种,无需创建 Log Group。
Amazon QuickSight 支持哪些日志类型?
支持五类日志:CHAT_LOGS(聊天交互)、FEEDBACK_LOGS(用户反馈)、AGENT_HOURS_LOGS(Agent 和 Research 使用时长)、INDEX_USAGE_LOGS(索引存储用量)、KB_FILE_SYNC_LOGS(知识库文件同步结果)。
使用 CloudFormation 部署日志投递时,需要注意什么?
需要注意:Bucket 名称必须全局唯一,默认名称可能冲突,需修改 BucketNamePrefix;模板不会使用或修改现有 Bucket;删除 Stack 时不会删除 Bucket 和日志对象(DeletionPolicy: Retain);模板不会创建 IAM 角色或 KMS Key,权限需单独管理。
手动部署日志投递需要哪些 IAM 权限?
需要 quicksight:AllowVendedLogDeliveryForResource、logs:PutDeliverySource、logs:CreateDelivery 等 CloudWatch Logs 投递相关权限,以及 s3:ListBucket、s3:GetBucketPolicy、s3:PutBucketPolicy 用于配置 Bucket Policy。
如何验证日志投递是否成功?
分两步:配置验证,使用 describe-deliveries 等命令确认 5 个 Source、1 个 Destination、5 条 Delivery 存在;数据验证,触发对应业务事件(如聊天、反馈、同步等),然后在 S3 中检查是否有日志对象生成。
为什么没有收到 INDEX_USAGE_LOGS 日志?
INDEX_USAGE_LOGS 仅在 Knowledge Base 或 Space 来源发生创建、更新、同步或删除等变化时才会发布事件,不保证每天都有记录。若需重建当前状态,应按 source_arn 选择最新事件。
如何清理日志投递配置?
按顺序删除:先删除 Delivery(delete-delivery),再删除 Source(delete-delivery-source),最后在 Destination 不再被使用时删除 Destination(delete-delivery-destination)。删除前可用 describe-deliveries 查看 Delivery ID。
使用 SSE-KMS 加密时,KMS Key Policy 需要如何配置?
必须使用 Customer Managed Key,并在 KMS Key Policy 中允许服务主体 delivery.logs.amazonaws.com 使用 kms:Encrypt、kms:Decrypt、kms:ReEncrypt*、kms:GenerateDataKey*、kms:DescribeKey 操作,并添加 aws:SourceAccount 和 aws:SourceArn 条件。