选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

Amazon Q 开发者中的提示日志示例

聚焦模式
Amazon Q 开发者中的提示日志示例 - Amazon Q 开发者版

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本节提供了 Amazon Q 开发者生成的提示日志的示例。

每个示例后面都有一个描述日志文件字段的表。

有关提示日志的更多信息,请参阅在 Amazon Q 开发者中启用提示登录

内联建议日志示例

以下示例显示了用户接受内联建议时生成的日志文件。

{ "records": [ { "generateCompletionsEventRequest": { "leftContext": "import * cdk from 'aws-cdk-lib';\r\nimport * s3 from 'aws-cdk-lib/aws-s3';\r\nimport { Stack, StackProps } from 'constructs';\r\nexport class MyStack extends Stack {\r\n constructor(scope: cdk.App, id: string, props?: StackProps) {\r\n super(scope, id, props);\r\n\r\n new s3.Bucket(this, 'XXXXXXXX', {\r\n versioned: true\r\n });\r\n }\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

描述对内联代码建议的请求。该请求由 Amazon Q 代表用户提出。

leftContext

指示 Amazon Q 用于生成内联建议的上下文的光标前面的代码。

rightContext

指示 Amazon Q 用于生成内联建议的上下文的光标后面的代码。

fileName

表示请求内联建议的文件的名称。

customizationArn

表示应用于内联建议的自定义项的 Amazon 资源名称 (ARN)。在此示例中,没有自定义。有关自定义的更多信息,请参阅自定义建议

userId

表示请求内联建议的用户的用户 ID。

timeStamp

表示请求内联建议的日期和时间。时间戳采用协调世界时 (UTC)。

generateCompletionsEventResponse

描述由 Amazon Q 生成的内联建议

completions

表示 Amazon Q 提供的内联建议,且用户已接受。

requestId

唯一标识事件的内联请求的 ID。

聊天日志示例

以下示例显示了用户在其 IDE 中使用 Amazon Q 聊天时生成的日志文件。

{ "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. Here's how you can implement different access control configurations: [[1]](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ManageACLs_section.html)\n\n1. Using Bucket Owner Enforced (Recommended Modern Approach):\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_ENFORCED,\n blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL\n});\n```\n\n2. Using Public Access Block Configuration:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n blockPublicAccess: new s3.BlockPublicAccess({\n blockPublicAcls: true,\n blockPublicPolicy: true,\n ignorePublicAcls: true,\n restrictPublicBuckets: true\n })\n});\n```\n\n3. Setting Access Control for Specific Use Cases:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport * as iam from 'aws-cdk-lib/aws-iam';\n\nconst bucket = new s3.Bucket(this, 'XXXXXXXX', {\n // Enable versioning for object-level recovery\n versioned: true,\n \n // Enforce encryption\n encryption: s3.BucketEncryption.S3_MANAGED,\n \n // Block all public access\n blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,\n \n // Enforce object ownership\n objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_ENFORCED,\n \n // Enable server access logs\n serverAccessLogsPrefix: 'logs/'\n});\n\n// Grant read access to specific IAM role\nconst role = new iam.Role(this, 'MyRole', {\n assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),\n});\nbucket.grantRead(role);\n\n// Grant write access to specific objects with prefix\nbucket.addToResourcePolicy(new iam.PolicyStatement({\n actions: ['s3:PutObject'],\n resources: [bucket.arnForObjects('uploads/*')],\n principals: [new iam.AccountRootPrincipal()]\n}));\n```\n\n4. Setting up Lifecycle Rules for Objects:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n lifecycle: [\n {\n transitions: [\n {\n storageClass: s3.StorageClass.INFREQUENT_ACCESS,\n transitionAfter: cdk.Duration.days(30)\n },\n {\n storageClass: s3.StorageClass.GLACIER,\n transitionAfter: cdk.Duration.days(90)\n }\n ],\n expiration: cdk.Duration.days(365)\n }\n ]\n});\n```\n\nKey points to remember:\n- Always use the principle of least privilege\n- Block public access by default unless explicitly required\n- Use BUCKET_OWNER_ENFORCED for object ownership when possible\n- Consider implementing lifecycle rules for cost optimization\n- Use versioning for sensitive data\n- Implement server-side encryption\n- Use resource policies and IAM roles for access control instead of ACLs\n- Monitor access patterns using server access logging\n\nThese configurations help create a secure and well-managed S3 bucket with appropriate access controls at both bucket and object levels.", "followupPrompts": "How can you implement multi-factor authentication for S3 bucket access using AWS CDK?What are the best practices for setting up object-level versioning in AWS S3 using CDK?How can you use AWS CDK to create a custom error message for unauthorized access attempts on an S3 bucket?", "messageMetadata": { "conversationId": "491bd3cd-d70d-40c0-a452-5ef3f0878422", "utteranceId": null }, "codeReferenceEvents": [], "supplementaryWebLinksEvent": [ { "uri": "https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ManageACLs_section.html", "title": "[1] Manage access control lists (ACLs) for Amazon S3 buckets using an AWS SDK - Amazon Simple Storage Service", "snippet": "The following code example shows how to manage access control lists (ACLs) for Amazon S3 buckets.\n\n.NET\n\n**AWS SDK for .NET**\n\n```\n using System;\n using System.Collections.Generic;\n using System.Threading.Tasks;\n using Amazon.S3;\n using Amazon.S3.Model;\n\n /// <summary>\n /// This example shows how to manage Amazon Simple Storage Service\n /// (Amazon S3) access control lists (ACLs) to control Amazon S3 bucket\n /// access.\n /// </summary>\n public class ManageACLs\n {\n public static async Task Main()\n {\n string bucketName = \"amzn-s3-demo-bucket1\";\n string newBucketName = \"amzn-s3-demo-bucket2\";\n string keyName = \"sample-object.txt\";\n string emailAddress = \"someone@example.com\";\n\n // If the AWS Region where your bucket is located is different from\n // the Region defined for the default user, pass the Amazon S3 bucket's\n // name to the client constructor. It should look like this:\n // RegionEndpoint bucketRegion = RegionEndpoint.USEast1;\n IAmazonS3 client = new AmazonS3Client();\n\n await TestBucketObjectACLsAsync(client, bucketName, newBucketName, keyName, emailAddress);\n }\n\n /// <summary>\n /// Creates a new Amazon S3 bucket with a canned ACL, then retrieves the ACL\n /// information and then adds a new ACL to one of the objects in the\n /// Amazon S3 bucket.\n /// </summary>\n /// <param name=\"client\">The initialized Amazon S3 client object used to call\n /// methods to create a bucket, get an ACL, and add a different ACL to\n /// one of the objects.</param>\n /// <param name=\"bucketName\">A string representing the original Amazon S3\n /// bucket name.</param>\n /// <param name=\"newBucketName\">A string representing the name of the\n /// new bucket that will be created.</param>\n /// <param name=\"keyName\">A string representing the key name of an Amazon S3\n /// object for which we will change the ACL.</param>\n /// <param name=\"emailAddress\">A string representing the email address\n /// belonging to the person to whom access to the Amazon S3 bucket will be\n /// granted.</param>\n public static async Task TestBucketObjectACLsAsync(\n IAmazonS3 client,\n string bucketName,\n string newBucketName,\n string keyName,\n string emailAddress)\n {\n try\n {\n // Create a new Amazon S3 bucket and specify canned ACL.\n var success = await CreateBucketWithCannedACLAsync(client, newBucketName);\n\n // Get the ACL on a bucket.\n await GetBucketACLAsync(client, bucketName);\n\n // Add (replace) the ACL on an object in a bucket.\n await AddACLToExistingObjectAsync(client, bucketName, keyName, emailAddress);\n }\n catch (AmazonS3Exception amazonS3Exception)\n {\n Console.WriteLine($\"Exception: {amazonS3Exception.Message}\");\n }\n }\n\n /// <summary>\n /// Creates a new Amazon S3 bucket with a canned ACL attached.\n /// </summary>\n /// <param name=\"client\">The initialized client object used to call\n /// PutBucketAsync.</param>\n /// <param name=\"newBucketName\">A string representing the name of the\n /// new Amazon S3 bucket.</param>\n /// <returns>Returns a boolean value indicating success or failure.</returns>\n public static async Task<bool> CreateBucketWithCannedACLAsync(IAmazonS3 client, string newBucketName)\n {\n var request = new PutBucketRequest()\n {\n BucketName = newBucketName,\n BucketRegion = S3Region.EUWest1,\n\n // Add a canned ACL.\n CannedACL = S3CannedACL.LogDeliveryWrite,\n };\n\n var response = await client.PutBucketAsync(request);\n return response.HttpStatusCode == System.Net.HttpStatusCode.OK;\n }\n\n\n /// <summary>\n /// Retrieves the ACL associated with the Amazon S3 bucket name in the\n /// bucketName parameter.\n /// </summary>\n /// <param name=\"client\">The initialized client object used to call\n /// PutBucketAsync.</param>\n /// <param name=\"bucketName\">The Amazon S3 bucket for which we want to get the\n /// ACL list.</param>\n /// <returns>Returns an S3AccessControlList returned from the call to\n /// GetACLAsync.</returns>\n public static async Task<S3AccessControlList> GetBucketACLAsync(IAmazonS3 client, string bucketName)\n {\n GetACLResponse response = await client.GetACLAsync(new GetACLRequest\n {\n BucketName = bucketName,\n });\n\n return response.AccessControlList;\n }\n\n\n\n /// <summary>\n /// Adds a new ACL to an existing object in the Amazon S3 bucket.\n /// </summary>\n /// <param name=\"client\">The initialized client object used to call\n /// PutBucketAsync.</param>\n /// <param name=\"bucketName\">A string representing the name of the Amazon S3\n /// bucket containing the object to which we want to apply a new ACL.</param>\n /// <param name=\"keyName\">A string representing the name of the object\n /// to which we want to apply the new ACL.</param>\n /// <param name=\"emailAddress\">The email address of the person to whom\n /// we will be applying to whom access will be granted.</param>\n public static async Task AddACLToExistingObjectAsync(IAmazonS3 client, string bucketName, string keyName, string emailAddress)\n {\n // Retrieve the ACL for an object.\n GetACLResponse aclResponse = await client.GetACLAsync(new GetACLRequest\n {\n BucketName = bucketName,\n Key = keyName,\n });\n\n S3AccessControlList acl = aclResponse.AccessControlList;\n\n // Retrieve the owner.\n Owner owner = acl.Owner;\n\n // Clear existing grants.\n acl.Grants.Clear();\n\n // Add a grant to reset the owner's full permission\n // (the previous clear statement removed all permissions).\n var fullControlGrant = new S3Grant\n {\n Grantee = new S3Grantee { CanonicalUser = acl.Owner.Id },\n };\n acl.AddGrant(fullControlGrant.Grantee, S3Permission.FULL_CONTROL);\n\n // Specify email to identify grantee for granting permissions.\n var grantUsingEmail = new S3Grant\n {\n Grantee = new S3Grantee { EmailAddress = emailAddress },\n Permission = S3Permission.WRITE_ACP,\n };\n\n // Specify log delivery group as grantee.\n var grantLogDeliveryGroup = new S3Grant\n {\n Grantee = new S3Grantee { URI = \"http://acs.amazonaws.com/groups/s3/LogDelivery\" },\n Permission = S3Permission.WRITE,\n };\n\n // Create a new ACL.\n var newAcl = new S3AccessControlList\n {\n Grants = new List<S3Grant> { grantUsingEmail, grantLogDeliveryGroup },\n Owner = owner,\n };\n\n // Set the new ACL. We're throwing away the response here.\n _ = await client.PutACLAsync(new PutACLRequest\n {\n BucketName = bucketName,\n Key = keyName,\n AccessControlList = newAcl,\n });\n }\n\n }\n\n\n```\n\n* For API details, see the following topics in _AWS SDK for .NET API Reference_.\n \n * GetBucketAcl\n\n* GetObjectAcl\n\n* PutBucketAcl\n\n* PutObjectAcl\n\nFor a complete list of AWS SDK developer guides and code examples, see Developing with Amazon S3 using the AWS SDKs. This topic also includes information about getting started and details about previous SDK versions.\n" } ], "requestId": "dad38fc0-815c-45f7-970a-db916cb7f131" } } ] }
字段名称 描述

records

包含一组提示和响应的顶级字段。

generateAssistantResponseEventRequest

描述用户在其 IDE 的聊天窗口中输入的提示。

prompt

表示用户在聊天窗口中输入的提示。

chatTriggerType

MANUAL表示用户在聊天窗口中输入了提示,或者在聊天窗口中点击了其中一个建议的问题。 INLINE_CHAT表示用户在主编码窗口的小输入屏幕中输入了提示。有关内联聊天的更多信息,请参阅与 Amazon Q 开发者在线聊天

customizationArn

表示应用于聊天的自定义项的 Amazon 资源名称 (ARN)。在此示例中,没有自定义。有关自定义的更多信息,请参阅自定义建议

userId

表示输入提示的用户的用户 ID。

timeStamp

表示用户输入提示的日期和时间。时间戳采用世界时间 (UTC)。

generateAssistantResponseEventResponse

描述由 Amazon Q 生成的回复

assistantResponse

表示 Amazon Q 对用户提示提供的响应。

followupPrompts

表示在响应结束时向用户显示的后续示例提示。

messageMetadata

描述与响应相关的元数据。

conversationId

表示响应的会话 ID。对话 ID 将聊天会话中的消息分组在一起。

utteranceId

表示响应的话语 ID。话语 ID 是一个标签,用于区分对话或数据集中的一个提示和另一个提示。

codeReferenceEvents

描述指向响应中包含的代码参考的链接。

supplementaryWebLinksEvent

表示在响应结束时向用户显示的链接。

requestId

唯一标识事件的响应的 ID。

/dev 日志示例

以下示例显示了用户在其 IDE 的 Amazon Q 聊天中输入/dev命令时生成的日志文件。

{ "records": [ { "startTaskAssistCodeGenerationEventRequest": { "prompt": "write a python application that prints 'hello world!' text to the screen and format it in red bold text", "chatTriggerType": "MANUAL", "conversationId": "da1c95b6-84e1-46a2-9ef9-fe92f5ee169e", "customizationArn": null, "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6", "timeStamp": "2025-01-13T15:40:27.808027101Z" }, "startTaskAssistCodeGenerationEventResponse": { "requestId": "e504f126-7197-4e3c-a046-1a10d5a3f3e0" } } ] }
字段名称 描述

records

包含一组提示和响应的顶级字段。

startTaskAssistCodeGenerationEventRequest

描述用户在其 IDE 的聊天窗口中输入的/dev提示。

prompt

表示用户在聊天窗口中输入的/dev提示。

chatTriggerType

MANUAL表示用户在聊天窗口中输入了提示,或者在聊天窗口中点击了其中一个建议的问题。 INLINE_CHAT表示用户在主编码窗口的小输入屏幕中输入了提示。有关内联聊天的更多信息,请参阅与 Amazon Q 开发者在线聊天

conversationId

表示响应的会话 ID。对话 ID 将聊天会话中的消息分组在一起。

customizationArn

表示应用于聊天的自定义项的 Amazon 资源名称 (ARN)。在此示例中,没有自定义。有关自定义的更多信息,请参阅自定义建议

userId

表示输入提示的用户的用户 ID。

timeStamp

表示用户输入提示的日期和时间。时间戳采用世界时间 (UTC)。

startTaskAssistCodeGenerationEventResponse

描述 Amazon Q 生成的响应。目前,不支持记录对/dev命令的响应,因此该字段不包含响应。

assistantResponse

表示 Amazon Q 对用户提示提供的响应。

requestId

唯一标识事件的响应的 ID。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。