

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 記錄 CodePipeline API 呼叫 AWS CloudTrail
<a name="monitoring-cloudtrail-logs"></a>

AWS CodePipeline 已與 服務整合 AWS CloudTrail，此服務提供使用者、角色或 CodePipeline AWS 服務 中 所採取動作的記錄。CloudTrail 會將 CodePipeline 的所有 API 呼叫擷取為事件。擷取的呼叫包括來自 CodePipeline 主控台的呼叫，以及對 CodePipeline API 操作的程式碼呼叫。如果您建立線索，則可以將 CloudTrail 事件持續交付至 Amazon S3 儲存貯體，包括 CodePipeline 的事件。即使您未設定追蹤，依然可以透過 CloudTrail 主控台中的**事件歷史記錄**檢視最新事件。您可以使用 CloudTrail 所收集的資訊，判斷對 CodePipeline 提出的請求、提出請求的 IP 地址、提出請求的人員、提出請求的時間，以及其他詳細資訊。

若要進一步了解 CloudTrail，請參閱[「AWS CloudTrail 使用者指南」](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

## CloudTrail 中的 CodePipeline 資訊
<a name="service-name-info-in-cloudtrail"></a>

當您建立帳戶 AWS 帳戶 時，您的 上會啟用 CloudTrail。在 CodePipeline 中發生活動時，該活動會與**事件歷史記錄**中的其他 AWS 服務 事件一起記錄在 CloudTrail 事件中。您可以在 AWS 帳戶中檢視、搜尋和下載最近的事件。如需詳細資訊，請參閱《使用 CloudTrail 事件歷史記錄檢視事件》[https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html](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)
+ [設定 CloudTrail 的 Amazon SNS 通知](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)

CloudTrail 會記錄所有 CodePipeline 動作，並記錄在 [CodePipeline API 參考](https://docs.aws.amazon.com/codepipeline/latest/APIReference)中。例如，對 `CreatePipeline`、`GetPipelineExecution` 和 `UpdatePipeline` 動作發出的呼叫會在 CloudTrail 記錄檔案中產生專案。

每一筆事件或日誌專案都會包含產生請求者的資訊。身分資訊可協助您判斷下列事項：
+ 是否使用根或 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 且帳戶 ID 為 80398EXAMPLE 的使用者編輯。使用者已將管道的來源階段名稱從 `Source` 變更為 `MySourceStage`。由於 CloudTrail 日誌中的 `requestParameters`和 `responseElements`元素都包含已編輯管道的整個結構，因此下列範例中已縮寫這些元素。**Emphasis** 已新增至發生變更之管道的 `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"
	    }
      ]
}
```