本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用监控部署 AWS CloudTrail
CodeDeploy 与一项服务集成 CloudTrail,该服务可捕获由您的账户或代表您的 AWS 账户发出的API呼叫,并将日志文件传输到您指定的 Amazon S3 存储桶。 CodeDeploy CloudTrail捕获来自 CodeDeploy 控制台、 CodeDeploy 命令通过或 CodeDeploy APIs直接从控制台发出的API呼叫。 AWS CLI使用收集到的信息 CloudTrail,您可以确定向哪个请求发出 CodeDeploy、发出请求的源 IP 地址、谁发出了请求、何时发出请求等。要了解更多信息 CloudTrail,包括如何配置和启用它,请参阅AWS CloudTrail 用户指南。
CodeDeploy 信息在 CloudTrail
在您的 AWS 帐户中启用 CloudTrail 日志记录后,API将在日志文件中跟踪对 CodeDeploy 操作的呼叫。 CodeDeploy 记录与其他 AWS 服务记录一起写入日志文件。 CloudTrail 根据时间段和文件大小决定何时创建和写入新文件。
所有 CodeDeploy 操作都记录并记录在《AWS CodeDeploy 命令行参考》和《参考手册》AWS CodeDeploy API中。例如,创建部署、删除应用程序和注册应用程序修订的调用会在 CloudTrail 日志文件中生成条目。
每个日志条目都包含有关生成请求的人员的信息。日志中的用户身份信息可帮助您确定请求是使用根凭证还是用户凭证发出,使用角色或联合用户的临时安全证书,还是由其他 AWS 服务发出的。有关更多信息,请参阅CloudTrail 事件参考中的userIdentity字段。
日志文件可以在存储桶中存储任意长时间,不过您也可以定义 Amazon S3 生命周期规则以自动存档或删除日志文件。默认情况下,Amazon S3 服务器端加密 (SSE) 用于加密您的日志文件。
您可以让在传送新的日志文件时 CloudTrail 发布 Amazon SNS 通知。有关更多信息,请参阅为其配置 Amazon SNS 通知 CloudTrail。
您还可以将来自多个 AWS 区域和多个 AWS 账户的 CodeDeploy 日志文件聚合到单个 Amazon S3 存储桶中。有关更多信息,请参阅接收来自多个区域的 CloudTrail 日志文件。
了解 CodeDeploy 日志文件条目
CloudTrail 日志文件可以包含一个或多个日志条目,其中每个条目由多个JSON格式的事件组成。一个日志条目表示来自任何源的一个请求,包括有关所请求的操作、所有参数以及操作的日期和时间等信息。日志条目不一定具有任何特定顺序。也就是说,它们不是公共API调用的有序堆栈跟踪。
以下示例显示了一个演示 CodeDeploy 创建部署组操作的 CloudTrail 日志条目:
{ "Records": [{ "eventVersion": "1.02", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAI44QH8DHBEXAMPLE:203.0.113.11", "arn": "arn:aws:sts::123456789012:assumed-role/example-role/203.0.113.11", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-27T03:57:36Z" }, "sessionIssuer": { "type": "Role", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::123456789012:role/example-role", "accountId": "123456789012", "userName": "example-role" } } }, "eventTime": "2014-11-27T03:57:36Z", "eventSource": "codedeploy.amazonaws.com", "eventName": "CreateDeploymentGroup", "awsRegion": "us-west-2", "sourceIPAddress": "203.0.113.11", "userAgent": "example-user-agent-string", "requestParameters": { "applicationName": "ExampleApplication", "serviceRoleArn": "arn:aws:iam::123456789012:role/example-instance-group-role", "deploymentGroupName": "ExampleDeploymentGroup", "ec2TagFilters": [{ "value": "CodeDeployDemo", "type": "KEY_AND_VALUE", "key": "Name" }], "deploymentConfigName": "CodeDeployDefault.HalfAtATime" }, "responseElements": { "deploymentGroupId": "7d64e680-e6f4-4c07-b10a-9e117EXAMPLE" }, "requestID": "86168559-75e9-11e4-8cf8-75d18EXAMPLE", "eventID": "832b82d5-d474-44e8-a51d-093ccEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, ... additional entries ... ] }