監視部署AWS CloudTrail - AWS CodeDeploy

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

監視部署AWS CloudTrail

CodeDeploy 與此服務整合 CloudTrail,可擷取AWS帳戶發出或代表發出的 CodeDeploy 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 CodeDeployAPI 參考中。例如,建立部署、刪除應用程式及註冊應用程式修訂的呼叫,會在 CloudTrail 日誌檔中產生項目。

每個日誌項目都會包含產生要求之人員的資訊。日誌中的使用者身分資訊可協助您判斷該要求是以根或使用者憑證發出、以角色或聯合身分使用者的暫時性安全憑證發出,或是由另一個AWS服務發出。如需詳細資訊,請參閱 CloudTrail 事件參考中的 userIdentity 欄位。

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

您可以在傳送新的日誌檔案時 CloudTrail 發佈 Amazon SNS 通知。如需詳細資訊,請參閱設定 CloudTrail 的 Amazon SNS​ 通知

您也可以將來自多個AWS區域和多個AWS帳目的 CodeDeploy 日誌檔案,彙總至單一 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 ... ] }