Appearance
Kiro 管理员可以开启 Prompt 日志功能,将用户的内联代码补全请求和聊天对话记录存储到指定的 Amazon S3 存储桶。日志同时记录用户输入和 Kiro 响应,数据保存在管理员自己的 AWS 账户内。开启该功能除 S3 存储费用外无额外收费,可选配 KMS 密钥加密。配置前需先创建符合要求的 S3 存储桶并设置正确的桶策略,授予 Kiro 服务主体写入权限。
Kiro 管理员可以开启对所有内联补全建议和聊天对话的日志记录。这些日志有助于审计、调试、数据分析以及合规要求。
关于 Prompt 日志
开启后,Kiro 会同时记录用户输入的 Prompt 和 Kiro 的响应内容,并将日志存储在管理员指定的 Amazon S3 存储桶中(位于您自己的 AWS 账户内)。
除 S3 存储费用外,Prompt 日志功能本身不产生额外收费;如需使用 KMS 密钥加密存储桶,会有少量密钥管理费用。
开启 Prompt 日志
前提条件
创建一个用于存放 Prompt 日志的 Amazon S3 存储桶,该存储桶须满足以下条件:
- 与 Kiro Profile 所在的 AWS Region 相同(该 Profile 在首次为用户订阅 Kiro Pro 时创建,详见 概念说明 和 支持的 Region)。
- 与用户订阅所在的 AWS 账户相同。
- 配置如下桶策略(将
bucketName、Region、accountId、prefix替换为实际值):
json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "KiroLogsWrite",
"Effect": "Allow",
"Principal": {
"Service": "q.amazonaws.com"
},
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::bucketName/prefix/*"
],
"Condition": {
"StringEquals": {
"aws:SourceAccount": "111122223333"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:codewhisperer:us-east-1:111122223333:*"
}
}
}
]
}关于 S3 数据加密保护,请参阅 Amazon S3 用户指南:使用加密保护数据。
操作步骤
- 打开 Kiro 控制台。
- 选择 Settings(设置)。
- 找到 Kiro Settings > Logging 区域。
- 开启 Log Kiro prompts with metadata 开关。
- 在 Amazon S3 location 字段中输入 S3 URI,例如:
s3://amzn-s3-demo-bucket/kiro-prompt-logs/
日志示例
内联补全日志示例
用户接受一条内联代码建议时,Kiro 会生成如下格式的日志:
json
{
"records": [
{
"generateCompletionsEventRequest": {
"leftContext": "import * cdk from 'aws-cdk-lib';\r\nimport * s3 from 'aws-cdk-lib/aws-s3';\r\n...",
"rightContext": "",
"fileName": "cdk-modified.ts",
"customizationArn": null,
"userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6",
"timeStamp": "2025-01-06T15:09:16.412719Z"
},
"generateCompletionsEventResponse": {
"completions": ["synth() {\n return cdk.App.prototype.synth.apply(this, arguments);\n }"],
"requestId": "797c70ee-abc9-4cc7-a148-b9df17f6ce48"
}
}
]
}内联补全日志字段说明:
| 字段名 | 说明 |
|---|---|
| records | 顶层字段,包含一组内联补全记录。 |
| generateCompletionsEventRequest | 描述 Kiro 代表用户发起的内联补全请求。 |
| leftContext | 光标左侧的代码上下文,Kiro 用于生成补全建议。 |
| rightContext | 光标右侧的代码上下文,Kiro 用于生成补全建议。 |
| fileName | 发生内联补全请求的文件名。 |
| userId | 发起请求的用户 ID。 |
| timeStamp | 请求时间,采用 UTC 格式。 |
| generateCompletionsEventResponse | 描述 Kiro 生成的内联补全结果。 |
| completions | 用户实际接受的补全代码内容。 |
| requestId | 唯一标识本次内联请求的 ID。 |
聊天对话日志示例
用户在 Kiro IDE 中发起聊天时,会生成如下格式的日志:
json
{
"records": [
{
"generateAssistantResponseEventRequest": {
"prompt": "Can you explain how to set up object-level access control in an S3 bucket using AWS CDK?",
"chatTriggerType": "MANUAL",
"customizationArn": null,
"userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6",
"timeStamp": "2025-01-06T15:05:56.313070Z"
},
"generateAssistantResponseEventResponse": {
"assistantResponse": "I'll explain how to set up object-level access control for an S3 bucket using AWS CDK...",
"followupPrompts": "How can you implement multi-factor authentication for S3 bucket access using AWS CDK?",
"messageMetadata": {
"conversationId": "491bd3cd-d70d-40c0-a452-5ef3f0878422",
"utteranceId": null
},
"requestId": "dad38fc0-815c-45f7-970a-db916cb7f131"
}
}
]
}聊天日志字段说明:
| 字段名 | 说明 |
|---|---|
| records | 顶层字段,包含一组 Prompt-响应对记录。 |
| generateAssistantResponseEventRequest | 描述用户在聊天窗口中输入的 Prompt。 |
| prompt | 用户实际输入的问题或指令。 |
| chatTriggerType | MANUAL 表示用户手动输入或点击了建议问题;INLINE_CHAT 表示用户使用了代码编辑区的内联聊天。 |
| userId | 发起 Prompt 的用户 ID。 |
| timeStamp | Prompt 提交时间,采用 UTC 格式。 |
| generateAssistantResponseEventResponse | 描述 Kiro 生成的响应内容。 |
| assistantResponse | Kiro 返回给用户的完整响应文本。 |
| followupPrompts | 响应末尾展示给用户的后续建议问题。 |
| conversationId | 对话 ID,将同一会话中的多条消息归为一组。 |
| utteranceId | 单条话语 ID,在对话数据集中区分不同的 Prompt。 |
| codeReferenceEvents | 响应中引用的代码来源链接。 |
| supplementaryWebLinksEvent | 响应末尾展示给用户的参考网页链接。 |
| requestId | 唯一标识本次响应的 ID。 |
常见问题
Q:Prompt 日志会记录哪些内容?
会同时记录用户输入的 Prompt(包括内联补全的代码上下文和聊天消息)以及 Kiro 返回的响应。日志中包含用户 ID 和时间戳,但不包含 AWS 账号密码等凭证信息。
Q:S3 存储桶必须和 Kiro Profile 在同一 Region 吗?
是的,S3 存储桶必须与 Kiro Profile 所在的 AWS Region 相同,跨 Region 存储不受支持。
Q:如何加密日志文件中的敏感内容?
建议为 S3 存储桶启用服务端加密(SSE),可使用 AWS 管理的密钥(SSE-S3)或客户自管理的 KMS 密钥(SSE-KMS)。KMS 密钥会产生少量额外费用。