

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

# 使用监控部署 AWS CloudTrail
<a name="monitoring-cloudtrail"></a>

CodeDeploy 与一项服务集成 CloudTrail，该服务可捕获由您的账户或代表您的 AWS 账户进行的 API 调用，并将日志文件传输到您指定的 Amazon S3 存储桶。 CodeDeploy CloudTrail捕获来自 CodeDeploy 控制台、通过 CodeDeploy 命令或 CodeDeploy APIs 直接从控制台发出的 API 调用。 AWS CLI使用收集到的信息 CloudTrail，您可以确定向哪个请求发出 CodeDeploy、发出请求的源 IP 地址、谁发出了请求、何时发出请求等。要了解更多信息 CloudTrail，包括如何配置和启用它，请参阅[《AWS CloudTrail 用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

## CodeDeploy 信息在 CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

在您的 AWS 账户中启用 CloudTrail 日志记录后，将在日志文件中跟踪对 CodeDeploy 操作进行的 API 调用。 CodeDeploy 记录与其他 AWS 服务记录一起写入日志文件。 CloudTrail 根据时间段和文件大小决定何时创建和写入新文件。

所有 CodeDeploy 操作都记录并记录在《[AWS CodeDeploy 命令行参考](https://docs.aws.amazon.com/cli/latest/reference/deploy/index.html)》和《[AWS CodeDeploy API 参考](https://docs.aws.amazon.com/codedeploy/latest/APIReference/)》中。例如，创建部署、删除应用程序和注册应用程序修订的调用会在 CloudTrail 日志文件中生成条目。

每个日志条目都包含有关生成请求的人员的信息。日志中的用户身份信息可帮助您确定请求是使用根凭证还是用户凭证发出，使用角色或联合用户的临时安全证书，还是由其他 AWS 服务发出的。有关更多信息，请参阅 [CloudTrail 事件参考](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/event_reference_top_level.html)中的 **userIdentity** 字段。

日志文件可以在存储桶中存储任意长时间，不过您也可以定义 Amazon S3 生命周期规则以自动存档或删除日志文件。默认情况下，将使用 Amazon S3 服务器端加密（SSE）对日志文件进行加密。

您可以让您在传送新的日志文件时 CloudTrail 发布 Amazon SNS 通知。有关更多信息，请参阅[为 CloudTrail 配置 Amazon SNS 通知](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)。

您还可以将来自多个 AWS 区域和多个 AWS 账户的 CodeDeploy 日志文件聚合到单个 Amazon S3 存储桶中。有关更多信息，请参阅[接收来自多个区域的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/aggregating_logs_top_level.html)。

## 了解 CodeDeploy 日志文件条目
<a name="understanding-service-name-entries"></a>

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 ...
    ]
}
```