使用监视部署Amazon CloudTrail - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用监视部署Amazon CloudTrail

CodeDeploy 与 CloudTrail 集成,后者是一项服务,可用于捕获由 CodeDeploy 或代表 CodeDeploy 发出的 API 调用。Amazon账户,并将日志文件传送到您指定的 Amazon S3 存储桶。CloudTrail 可捕获来自 CodeDeploy 控制台的 API 调用,从 CodeDeploy 命令通过Amazon CLI,或直接从 CodeDeploy API 中获取。通过 CloudTrail 收集的信息,您可以确定向 CodeDeploy 发出了什么请求、发出请求的源 IP 地址、何人发出的请求以及发出请求的时间等。要了解有关 CloudTrail 的更多信息,包括如何配置和启用 CloudTrail,请参阅Amazon CloudTrail用户指南

代码在 CloudTrail 中部署信息

CloudTrail 您在Amazon帐户,则将在日志文件中跟踪对 CodeDeploy 操作执行的 API 调用。CodeDeploy 记录与其他Amazon日志文件中的服务记录。CloudTrail 基于时间段和文件大小来确定何时创建并写入新文件。

所有 CodeDeploy 操作都会记录并正式记载到Amazon CodeDeploy命令行参考Amazon CodeDeployAPI 参考。例如,对于创建部署、删除应用程序和注册应用程序修订的调用会在 CloudTrail 日志文件中生成条目。

每个日志条目都包含有关生成请求的人员的信息。日志中的用户身份信息有助于确定请求是由根或 IAM 用户凭证发出,通过某个角色或联合用户的临时安全凭证发出,还是由其他 Amazon 服务发出。有关更多信息,请参阅 。userIdentity字段中的CloudTrail 事件参考

日志文件可以在存储桶中存储任意长时间,不过您也可以定义 Amazon S3 生命周期规则以自动存档或删除日志文件。

您可以让 CloudTrail 在传送新日志文件时发布 Amazon SNS 通知。有关更多信息,请参阅为 CloudTrail 配置 Amazon SNS 通知

您还可以将 CodeDeploy 日志文件从多个Amazon区域和多个Amazon账户存储到单个 Amazon S3 存储桶。有关更多信息,请参阅 。从多个区域中接收 CloudTrail 日志文件

了解 CodeDeploy 日志文件条目

CloudTrail 日志文件可包含一个或多个日志条目,每个条目由多个 JSON 格式的事件组成。一个日志条目表示来自任何源的一个请求,包括有关所请求的操作、所有参数以及操作的日期和时间等信息。日志条目不一定具有任何特定顺序。也即,它们不是公用 API 调用的有序堆栈跟踪。

下面的示例显示了一个 CloudTrail 日志条目,该条目演示了 CodeDeploy 创建部署组操作:

{ "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 ... ] }