

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

# 使用记录 CodePipeline API 调用 AWS CloudTrail
<a name="monitoring-cloudtrail-logs"></a>

AWS CodePipeline 与 AWS CloudTrail一项服务集成，该服务提供用户、角色或 AWS 服务 中的用户所采取的操作的记录 CodePipeline；。 CloudTrail 将所有 API 调用捕获 CodePipeline 为事件。捕获的调用包括来自 CodePipeline 控制台的调用和对 CodePipeline API 操作的代码调用。如果您创建了跟踪，则可以允许将 CloudTrail 事件持续传输到 Amazon S3 存储桶，包括的事件 CodePipeline。如果您未配置跟踪，您仍然可以在 CloudTrail 控制台的 “事件**历史记录” 中查看最新的事件**。使用收集的信息 CloudTrail，您可以确定向哪个请求发出 CodePipeline、发出请求的 IP 地址、谁发出了请求、何时发出请求以及其他详细信息。

要了解更多信息 CloudTrail，请参阅《[AWS CloudTrail 用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

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

CloudTrail 在您创建账户 AWS 账户 时已在您的账户上启用。当活动发生在中时 CodePipeline，该活动会与其他 CloudTrail 事件一起记录在 AWS 服务 **事件历史**记录中。您可以在自己的 AWS 账户中查看、搜索和下载最近发生的事件。有关更多信息，请参阅[使用事件历史记录查看 CloudTrail 事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

要持续记录您的 AWS 账户 事件（包括的事件） CodePipeline，请创建跟踪。*跟踪*允许 CloudTrail 将日志文件传输到 Amazon S3 存储桶。默认情况下，当您在控制台中创建跟踪时，该跟踪将应用于所有 AWS 区域。跟踪记录 AWS 分区中所有区域的事件，并将日志文件传送到您指定的 Amazon S3 存储桶。此外，您可以配置其他 AWS 服务 ，以进一步分析和处理 CloudTrail 日志中收集的事件数据。有关更多信息，请参阅下列内容：
+ [创建跟踪概述](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 支持的服务和集成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [配置 Amazon SNS 通知 CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [接收来自多个区域的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)和[接收来自多个账户的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

所有 CodePipeline 操作均由《API 参考》记录 CloudTrail 并记录在《[CodePipeline API 参考](https://docs.aws.amazon.com/codepipeline/latest/APIReference)》中。例如，调用`GetPipelineExecution`和`UpdatePipeline`操作会在 CloudTrail 日志文件中生成条目。`CreatePipeline`

每个事件或日志条目都包含有关生成请求的人员信息。身份信息有助于您确定以下内容：
+ 请求是使用根证书还是 AWS Identity and Access Management (IAM) 凭证发出。
+ 请求是使用角色还是联合用户的临时安全凭证发出的。
+ 请求是否由其他 AWS 服务发出。

有关更多信息，请参阅 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

## 了解 CodePipeline 日志文件条目
<a name="monitoring-cloudtrail-logs-log-entries-example"></a>

跟踪是一种配置，允许将事件作为日志文件传输到您指定的 Amazon S3 存储桶。 CloudTrail 日志文件包含一个或多个日志条目。事件代表来自任何来源的单个请求，包括有关请求的操作、操作的日期和时间、请求参数等的信息。 CloudTrail 日志文件不是公共 API 调用的有序堆栈跟踪，因此它们不会按任何特定的顺序出现。

以下示例显示了更新管道事件的 CloudTrail 日志条目，在该事件中，名为的管道 MyFirstPipeline 已由名为 JaneDoe-CodePipeline 的用户编辑，账号为 80398EXAMPLE。该用户将管道的源阶段名称从 `Source` 更改为 `MySourceStage`。由于 CloudTrail 日志中的 `requestParameters` 和 `responseElements` 元素同时包含已编辑管道的整个结构，因此这些元素在下面的示例中已被简化。已着重**强调**发生更改的管道 `requestParameters` 部分、管道的先前版本号和 `responseElements` 部分（显示按 1 递增的版本号）。编辑的部分用省略号 (...) 标记，以说明实际日志条目中将会显示更多数据。

```
{
 "eventVersion":"1.03",
  "userIdentity": {
   "type":"IAMUser",
   "principalId":"AKIAI44QH8DHBEXAMPLE",
   "arn":"arn:aws:iam::80398EXAMPLE:user/JaneDoe-CodePipeline",
   "accountId":"80398EXAMPLE",
   "accessKeyId":"AKIAIOSFODNN7EXAMPLE",
   "userName":"JaneDoe-CodePipeline",
   "sessionContext": {
	  "attributes":{
	   "mfaAuthenticated":"false",
	   "creationDate":"2015-06-17T14:44:03Z"
	   }
	  },
	"invokedBy":"signin.amazonaws.com"},
	"eventTime":"2015-06-17T19:12:20Z",
	"eventSource":"codepipeline.amazonaws.com",
	"eventName":"UpdatePipeline",
	"awsRegion":"us-east-2",
	"sourceIPAddress":"192.0.2.64",
	"userAgent":"signin.amazonaws.com",
	"requestParameters":{
	  "pipeline":{
		 "version":1,
		 "roleArn":"arn:aws:iam::80398EXAMPLE:role/CodePipeline_Service_Role",
		 "name":"MyFirstPipeline",
		 "stages":[
		   {
		   "actions":[
		    {
          "name":"MySourceStage",
		      "actionType":{
			     "owner":"AWS",
			     "version":"1",
			     "category":"Source",
			     "provider":"S3"
			  },
			 "inputArtifacts":[],
			 "outputArtifacts":[
			  {"name":"MyApp"}
			  ],
			 "runOrder":1,
			 "configuration":{
			  "S3Bucket":"amzn-s3-demo-source-bucket",
			  "S3ObjectKey":"sampleapp_linux.zip"
			   }
		    }
		   ],
		     "name":"Source"
		   },
		   (...)
               },
	"responseElements":{
	  "pipeline":{
	    "version":2,
	    (...)
           },
	    "requestID":"2c4af5c9-7ce8-EXAMPLE",
	    "eventID":""c53dbd42-This-Is-An-Example"",
	    "eventType":"AwsApiCall",
	    "recipientAccountId":"80398EXAMPLE"
	    }
      ]
}
```