Skip to content

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 账户相同。
  • 配置如下桶策略(将 bucketNameRegionaccountIdprefix 替换为实际值):
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 用户指南:使用加密保护数据

操作步骤

  1. 打开 Kiro 控制台。
  2. 选择 Settings(设置)
  3. 找到 Kiro Settings > Logging 区域。
  4. 开启 Log Kiro prompts with metadata 开关。
  5. 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用户实际输入的问题或指令。
chatTriggerTypeMANUAL 表示用户手动输入或点击了建议问题;INLINE_CHAT 表示用户使用了代码编辑区的内联聊天。
userId发起 Prompt 的用户 ID。
timeStampPrompt 提交时间,采用 UTC 格式。
generateAssistantResponseEventResponse描述 Kiro 生成的响应内容。
assistantResponseKiro 返回给用户的完整响应文本。
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 密钥会产生少量额外费用。