監視部署 AWS CloudTrail - AWS CodeDeploy

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

監視部署 AWS CloudTrail

CodeDeploy 與這項服務整合 CloudTrail,可擷取您帳戶 CodeDeploy 中由或代表您 AWS 帳戶發出的 API 呼叫,並將日誌檔案傳送到您指定的 Amazon S3 儲存貯體。 CloudTrail從 CodeDeploy 主控台、透過 CodeDeploy 命令擷取 API 呼叫 AWS CLI,或直接從 API 擷取 CodeDeploy API 呼叫。使用收集的資訊 CloudTrail,您可以判斷向哪個要求提出 CodeDeploy、提出要求的來源 IP 位址、提出要求的人員、提出要求的時間等。若要進一步了解 CloudTrail,包括如何設定和啟用它,請參閱AWS CloudTrail 使用者指南

CodeDeploy 中的資訊 CloudTrail

在您的 AWS 帳戶中啟用 CloudTrail 記錄時,系統會在記錄檔中追蹤對 CodeDeploy 動作進行的 API 呼叫。 CodeDeploy 記錄會與其他 AWS 服務記錄一起寫入記錄檔中。 CloudTrail 根據時間週期和檔案大小決定何時建立和寫入新檔案。

所有 CodeDeploy 動作都會記錄並記錄在AWS CodeDeploy 命令列參考AWS CodeDeploy API 參考中。例如,建立部署、刪除應用程式和註冊應用程式修訂的呼叫會在 CloudTrail 記錄檔中產生項目。

每個日誌項目都會包含產生要求之人員的資訊。記錄檔中的使用者識別資訊可協助您判斷要求是使用根或使用者認證、具有角色或同盟使用者的暫時安全性認證,還是由其他 AWS 服務提出要求。如需詳細資訊,請參閱CloudTrail 事件參考中的 [userIdentity] 欄位。

日誌檔案可存放於儲存貯體任意長時間,但您也可以定義 Amazon S3 生命週期規則,自動封存或刪除日誌檔案。根據預設,Amazon S3 伺服器端加密 (SSE) 是用來加密您的日誌檔。

交付新的日誌檔時,您可以 CloudTrail 發佈 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 ... ] }