使用 記錄 AWS CodeCommit API通話 AWS CloudTrail - AWS CodeCommit

AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可以繼續正常使用服務。進一步了解"

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

使用 記錄 AWS CodeCommit API通話 AWS CloudTrail

CodeCommit 已與 整合 AWS CloudTrail,此服務提供使用者、角色或服務 AWS in CodeCommit. CloudTrail captures 對 的所有API呼叫 CodeCommit 作為事件所採取動作的記錄,包括從 CodeCommit 主控台、您的 Git 用戶端以及從程式碼呼叫到 的呼叫 CodeCommit APIs。如果您建立追蹤,則可以啟用 CloudTrail 事件持續交付至 Amazon S3 儲存貯體,包括 的事件 CodeCommit。如果您未設定追蹤,仍然可以在 CloudTrail 主控台中檢視事件歷史記錄中的最新事件。使用 收集的資訊 CloudTrail,您可以判斷所提出的請求 CodeCommit、提出請求的 IP 地址、提出請求的人員、提出請求的時間,以及其他詳細資訊。

若要進一步了解 CloudTrail,請參閱 AWS CloudTrail 使用者指南

CodeCommit 中的資訊 CloudTrail

CloudTrail 當您建立帳戶時, 會在 Amazon Web Services 帳戶上啟用 。當活動在 中發生時 CodeCommit,該活動會與 CloudTrail 事件歷史記錄中的其他 AWS 服務事件一起記錄在事件中。您可以檢視、搜尋和下載 Amazon Web Services 帳戶中的最近事件。如需詳細資訊,請參閱使用事件歷史記錄檢視 CloudTrail 事件

如需持續記錄 Amazon Web Services 帳戶中的事件,包括 的事件 CodeCommit,請建立追蹤。線索可讓 CloudTrail 將日誌檔案交付至 Amazon S3 儲存貯體。根據預設,當您在主控台建立權杖時,權杖會套用到所有區域。線索會記錄 AWS 分割區中所有區域的事件,並將日誌檔案交付至您指定的 Amazon S3 儲存貯體。此外,您可以設定其他 AWS 服務,以進一步分析 CloudTrail 日誌中收集的事件資料並對其採取行動。如需詳細資訊,請參閱:

在您的 Amazon Web Services 帳戶中啟用 CloudTrail 記錄時,對 CodeCommit動作發出的API呼叫會在 CloudTrail 日誌檔案中追蹤,而這些呼叫會與其他 AWS 服務記錄一起寫入。 會根據期間和檔案大小 CloudTrail ,決定何時建立新檔案。

所有 CodeCommit 動作都會由 記錄 CloudTrail,包括一些 (例如 GetObjectIdentifier),這些動作目前未記載於AWS CodeCommit API參考中,而是參考為存取許可並記載於 中CodeCommit 許可參考。例如,對 ListRepositories(在 中aws codecommit list-repositories) AWS CLI、 CreateRepository (aws codecommit create-repository) 和 PutRepositoryTriggers(aws codecommit put-repository-triggers) 動作的呼叫會在 CloudTrail 日誌檔案中產生項目,以及對 GitPull和 的 Git 用戶端呼叫GitPush。此外,如果您將 CodeCommit 儲存庫設定為 中管道的來源 CodePipeline,您會看到 CodeCommit 存取許可動作的呼叫,例如UploadArchive來自 CodePipeline。由於 CodeCommit 使用 AWS Key Management Service 來加密和解密儲存庫,因此您也會在 CloudTrail 日誌 AWS KMS 中看到來自 CodeCommit 的呼叫Encrypt和來自 Decrypt的動作。

每個日誌項目都會包含產生要求之人員的資訊。日誌記錄中的使用者身分資訊,可協助您判斷下列事項:

  • 該請求是否使用根或 IAM 使用者登入資料提出

  • 該請求是以角色或聯合身分使用者的臨時安全登入資料提出,還是由擔任的角色提出

  • 該請求是否由其他 AWS 服務提出

如需詳細資訊,請參閱 CloudTrail userIdentity 元素

您可以視需要將日誌檔案存放在 Amazon S3 儲存貯體中,但您也可以定義 Amazon S3 生命週期規則,以自動封存或刪除日誌檔案。根據預設,您的日誌檔案會使用 Amazon S3 伺服器端加密 () 進行加密SSE。

了解 CodeCommit 日誌檔案項目

CloudTrail 日誌檔案可以包含一或多個日誌項目。每個項目都會列出多個 JSON格式化的事件。一個日誌事件為任何來源提出的單一請求,並包含請求動作、動作的日期和時間、請求參數等資訊。日誌項目不是公開API呼叫的排序堆疊追蹤,因此它們不會以任何特定順序顯示。

注意

此範例已格式化,以提升可讀性。在 CloudTrail 日誌檔案中,所有項目和事件會串連成一行。此範例也限制為單一 CodeCommit 項目。在真實 CloudTrail 日誌檔案中,您會看到來自多個 AWS 服務的項目和事件。

範例:列出 CodeCommit 儲存庫的日誌項目

下列範例顯示示範 ListRepositories動作的 CloudTrail 日誌項目。

注意

雖然 ListRepositories會傳回儲存庫清單,但不會在 CloudTrail 日誌中記錄不可變的回應,因此 responseElements 會顯示在日誌檔案中,如 null 所示。

{ "eventVersion":"1.05", "userIdentity": { "type":"IAMUser", "principalId":"AIDACKCEVSQ6C2EXAMPLE", "arn":"arn:aws:iam::444455556666:user/Mary_Major", "accountId":"444455556666", "accessKeyId":"AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime":"2016-12-14T17:57:36Z", "eventSource":"codecommit.amazonaws.com", "eventName":"ListRepositories", "awsRegion":"us-east-1", "sourceIPAddress":"203.0.113.12", "userAgent":"aws-cli/1.10.53 Python/2.7.9 Windows/8 botocore/1.4.43", "requestParameters":null, "responseElements":null, "requestID":"cb8c167e-EXAMPLE", "eventID":"e3c6f4ce-EXAMPLE", "readOnly":true, "eventType":"AwsApiCall", "apiVersion":"2015-04-13", "recipientAccountId":"444455556666" }

範例:建立 CodeCommit 儲存庫的日誌項目

下列範例顯示 CloudTrail 日誌項目,示範美國東部 (俄亥俄) 區域中CreateRepository的動作。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "CreateRepository", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "aws-cli/1.10.53 Python/2.7.9 Windows/8 botocore/1.4.43", "requestParameters": { "repositoryDescription": "Creating a demonstration repository.", "repositoryName": "MyDemoRepo" }, "responseElements": { "repositoryMetadata": { "arn": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "creationDate": "Dec 14, 2016 6:19:14 PM", "repositoryId": "8afe792d-EXAMPLE", "cloneUrlSsh": "ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo", "repositoryName": "MyDemoRepo", "accountId": "111122223333", "cloneUrlHttp": "https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo", "repositoryDescription": "Creating a demonstration repository.", "lastModifiedDate": "Dec 14, 2016 6:19:14 PM" } }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": false, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "apiVersion": "2015-04-13", "recipientAccountId": "111122223333" }

範例:對 CodeCommit 儲存庫執行 Git 提取呼叫的日誌項目

下列範例顯示 CloudTrail 日誌項目,示範本機儲存庫所在的GitPull動作 up-to-date。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "GitPull", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.11.0.windows.1", "requestParameters": null, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "dataTransferred": false, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": true, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }

下列範例顯示 CloudTrail 日誌項目,示範本機儲存庫未 up-to-date執行GitPull的動作,因此資料會從 CodeCommit 儲存庫傳輸到本機儲存庫。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "GitPull", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.10.1", "requestParameters": null, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "capabilities": [ "multi_ack_detailed", "side-band-64k", "thin-pack" ], "dataTransferred": true, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", "shallow": false }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": true, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }

範例:成功推送至 CodeCommit 儲存庫的日誌項目

下列範例顯示一個 CloudTrail 日誌項目,示範成功的GitPush動作。GitPush 動作在日誌項目中顯示兩次表示推送成功。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "GitPush", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.10.1", "requestParameters": null, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "dataTransferred": false, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": false, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }, { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "GitPush", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.10.1", "requestParameters": { "references": [ { "commit": "100644EXAMPLE", "ref": "refs/heads/main" } ] }, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "capabilities": [ "report-status", "side-band-64k" ], "dataTransferred": true, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": false, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }