選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 GitHub 動作自動化 AWS CDK Python 應用程式的 Amazon CodeGuru 檢閱 - AWS 方案指引

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

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

使用 GitHub 動作自動化 AWS CDK Python 應用程式的 Amazon CodeGuru 檢閱

由 Vanitha Dontireddy (AWS) 和 Sarat Chandra Pothula (AWS) 建立

Summary

此模式展示透過 GitHub 動作協調的 AWS Cloud Development Kit (AWS CDK) Python 應用程式 Amazon CodeGuru 自動化程式碼檢閱的整合。解決方案會部署 AWS CDK Python 中定義的無伺服器架構。透過在開發管道中自動化專家程式碼分析,此方法可以對 AWS CDK Python 專案執行下列動作:

  • 增強程式碼品質。

  • 簡化工作流程。

  • 最大化無伺服器運算的優勢。

先決條件和限制

先決條件

  • 作用中 AWS 帳戶。

  • AWS Command Line Interface (AWS CLI) 2.9.11 版或更新版本,已安裝設定

  • 作用中的 GitHub 帳戶和 GitHub 儲存庫,具有讀取和寫入工作流程許可,以及 GitHub Actions 建立提取請求 (PR),以確保 PR 工作流程正確運作。

  • GitHub 動作中的 OpenID Connect (OIDC) 角色,可在 中部署解決方案 AWS 帳戶。若要建立角色,請使用 AWS CDK 建構

限制

架構

下圖顯示此解決方案的架構。

使用 GitHub 動作整合 AWS CDK Python 應用程式 CodeGuru 程式碼檢閱的工作流程。

如圖表所示,當開發人員建立提取請求 (PR) 以供檢閱時,GitHub 動作會觸發下列步驟:

  1. IAM 角色假設 – 管道使用 GitHub Secrets 中指定的 IAM 角色來執行部署任務。

  2. 程式碼分析

    • CodeGuru Reviewer 會分析存放在 Amazon S3 儲存貯體中的程式碼。它可識別瑕疵,並提供修正和最佳化的建議。

    • CodeGuru Security 會掃描政策違規和漏洞。

  3. 調查結果檢閱

    • 管道會在主控台輸出中列印問題清單儀表板的連結。

    • 如果偵測到關鍵調查結果,管道會立即失敗。

    • 對於高、正常或低嚴重性問題清單,管道會繼續下一個步驟。

  4. PR 核准

    • 檢閱者必須手動核准 PR。

    • 如果 PR 遭拒,管道會失敗並停止進一步的部署步驟。

  5. CDK 部署 – 在 PR 核准後,CDK 部署程序就會開始。它會設定下列 AWS 服務 和資源:

    • CodeGuru Profiler

    • AWS Lambda 函數

    • Amazon Simple Queue Service (Amazon SQS) 佇列

  6. 分析資料產生 – 若要為 CodeGuru Profiler 產生足夠的分析資料:

    • 管道會定期傳送訊息至 Amazon SQS 佇列,多次叫用 Lambda 函數。

工具

AWS 服務

  • AWS Cloud Development Kit (AWS CDK) 是一種軟體開發架構,可協助您在程式碼中定義和佈建 AWS 雲端 基礎設施。

  • CDK Toolkit 是命令列雲端開發套件,可協助您與 AWS CDK 應用程式互動。

  • Amazon CodeGuru Profiler 會從即時應用程式收集執行期效能資料,並提供建議,協助您微調應用程式效能。

  • Amazon CodeGuru Reviewer 使用程式分析和機器學習來偵測開發人員難以找到的潛在瑕疵。然後,CodeGuru Profiler 會提供改善 Java 和 Python 程式碼的建議。

  • Amazon CodeGuru Security 是一種靜態應用程式安全工具,使用機器學習來偵測安全政策違規和漏洞。它提供解決安全風險的建議,並產生指標,以便您可以追蹤應用程式的安全狀態。

  • AWS Identity and Access Management (IAM) 透過控制已驗證並獲授權使用資源的人員,協助您安全地管理對 AWS 資源的存取。

  • AWS Lambda 是一項運算服務,可協助您執行程式碼,無需佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展,因此您只需支付您使用的運算時間。

  • Amazon Simple Queue Service (Amazon SQS) 提供安全、耐用且可用的託管佇列,可協助您整合和分離分散式軟體系統和元件。

  • Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。

其他工具

  • GitHub Actions 是與 GitHub 儲存庫緊密整合的持續整合和持續交付 (CI/CD) 平台。您可以使用 GitHub 動作來自動化建置、測試和部署管道。

程式碼儲存庫

此模式的程式碼可在 GitHub amazon-codeguru-suite-cdk-python 儲存庫中使用。

最佳實務

史詩

任務描述所需的技能

設定 AWS 登入資料。

若要匯出定義 的變數, AWS 帳戶 以及您要部署堆疊 AWS 區域 的位置,請執行下列命令:

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number>
export CDK_DEFAULT_REGION=<AWS Region>

的 AWS 登入資料 AWS CDK 是透過環境變數提供。

AWS DevOps,DevOps 工程師

複製儲存庫。

若要複製本機電腦上的儲存庫,請執行下列命令:

git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git
AWS DevOps,DevOps 工程師

安裝 CDK Toolkit。

若要確認已安裝 CDK Toolkit 並檢查版本,請執行下列命令: 

cdk --version

如果 CDK Toolkit 版本早於 2.27.0,請輸入下列命令將其更新至 2.27.0 版:

npm install -g aws-cdk@2.27.0

如果安裝 CDK Toolkit,請執行下列命令來安裝它:

npm install -g aws-cdk@2.27.0 --force
AWS DevOps,DevOps 工程師

安裝所需的依存項目。

若要安裝所需的專案相依性,請執行下列命令:

python -m pip install --upgrade pip pip install -r requirements.txt
AWS DevOps,DevOps 工程師

引導 CDK 環境。

若要引導 AWS CDK 環境,請執行下列命令:

npm install npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"

成功引導環境後,應該會顯示下列輸出:

⏳ Bootstrapping environment aws://{account}/{region}... ✅ Environment aws://{account}/{region} bootstrapped
AWS DevOps,DevOps 工程師

設定您的環境

任務描述所需的技能

設定 AWS 登入資料。

若要匯出定義 的變數, AWS 帳戶 以及您要部署堆疊 AWS 區域 的位置,請執行下列命令:

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number>
export CDK_DEFAULT_REGION=<AWS Region>

的 AWS 登入資料 AWS CDK 是透過環境變數提供。

AWS DevOps,DevOps 工程師

複製儲存庫。

若要複製本機電腦上的儲存庫,請執行下列命令:

git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git
AWS DevOps,DevOps 工程師

安裝 CDK Toolkit。

若要確認已安裝 CDK Toolkit 並檢查版本,請執行下列命令: 

cdk --version

如果 CDK Toolkit 版本早於 2.27.0,請輸入下列命令將其更新至 2.27.0 版:

npm install -g aws-cdk@2.27.0

如果安裝 CDK Toolkit,請執行下列命令來安裝它:

npm install -g aws-cdk@2.27.0 --force
AWS DevOps,DevOps 工程師

安裝所需的依存項目。

若要安裝所需的專案相依性,請執行下列命令:

python -m pip install --upgrade pip pip install -r requirements.txt
AWS DevOps,DevOps 工程師

引導 CDK 環境。

若要引導 AWS CDK 環境,請執行下列命令:

npm install npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"

成功引導環境後,應該會顯示下列輸出:

⏳ Bootstrapping environment aws://{account}/{region}... ✅ Environment aws://{account}/{region} bootstrapped
AWS DevOps,DevOps 工程師
任務描述所需的技能

合成 AWS CDK 應用程式。

若要合成 AWS CDK 應用程式,請執行下列命令:

cdk synth

如需此命令的詳細資訊,請參閱 AWS CDK 文件中的 cdk 合成

AWS DevOps,DevOps 工程師

部署 資源。

若要部署 資源,請執行下列命令:

cdk deploy --require-approval never
注意

--require-approval never 標記表示 CDK 將自動核准和執行所有變更。這包括 CDK 通常會標記為需要手動檢閱的變更 (例如 IAM 政策變更或資源移除)。在生產環境中使用--require-approval never標記之前,請確定您的 CDK 程式碼和 CI/CD 管道已經過良好測試且安全。

AWS DevOps,DevOps 工程師

部署 CDK 應用程式

任務描述所需的技能

合成 AWS CDK 應用程式。

若要合成 AWS CDK 應用程式,請執行下列命令:

cdk synth

如需此命令的詳細資訊,請參閱 AWS CDK 文件中的 cdk 合成

AWS DevOps,DevOps 工程師

部署 資源。

若要部署 資源,請執行下列命令:

cdk deploy --require-approval never
注意

--require-approval never 標記表示 CDK 將自動核准和執行所有變更。這包括 CDK 通常會標記為需要手動檢閱的變更 (例如 IAM 政策變更或資源移除)。在生產環境中使用--require-approval never標記之前,請確定您的 CDK 程式碼和 CI/CD 管道已經過良好測試且安全。

AWS DevOps,DevOps 工程師
任務描述所需的技能

在 GitHub 中建立所需的秘密。

若要允許 GitHub Actions 工作流程安全地存取 AWS 資源,而不會在儲存庫的程式碼中公開敏感資訊,請建立秘密。若要在 GitHub 中為 ROLE_TO_ASSUMECodeGuruReviewArtifactBucketName和 建立秘密AWS_ACCOUNT_ID,請遵循 GitHub 動作文件中為儲存庫建立秘密中的指示。

以下是有關變數的詳細資訊:

  • AWS_ACCOUNT_ID – 執行管道的 AWS 帳戶 ID。

  • CodeGuruReviewArtifactBucketName – 存放 CodeGuru Reviewer 成品的 S3 儲存貯體名稱。此模式使用儲存貯體名稱 codeguru-reviewer-build-artifacts-<ACCOUNT_ID>-<REGION>

  • AWS_REGION – AWS 區域 資源所在的 。

  • ROLE_TO_ASSUME – 管道擔任的 IAM 角色名稱。此模式使用角色名稱 githubActionsDeployRole

AWS DevOps,DevOps 工程師

建立 GitHub 個人存取字符。

若要為您的 GitHub 動作工作流程設定安全的方式來驗證 GitHub 並與之互動,請執行下列動作:

  1. 若要建立對儲存庫具有讀取和寫入存取權的 GitHub 個人存取字符,請遵循 GitHub 文件中管理個人存取字符的指示。

  2. 若要將此字符儲存為 GitHub 動作的儲存庫秘密,請遵循 GitHub 動作文件中為儲存庫建立秘密的指示。

AWS DevOps,DevOps 工程師

建立 GitHub 秘密和個人存取權杖

任務描述所需的技能

在 GitHub 中建立所需的秘密。

若要允許 GitHub Actions 工作流程安全地存取 AWS 資源,而不會在儲存庫的程式碼中公開敏感資訊,請建立秘密。若要在 GitHub 中為 ROLE_TO_ASSUMECodeGuruReviewArtifactBucketName和 建立秘密AWS_ACCOUNT_ID,請遵循 GitHub 動作文件中為儲存庫建立秘密中的指示。

以下是有關變數的詳細資訊:

  • AWS_ACCOUNT_ID – 執行管道的 AWS 帳戶 ID。

  • CodeGuruReviewArtifactBucketName – 存放 CodeGuru Reviewer 成品的 S3 儲存貯體名稱。此模式使用儲存貯體名稱 codeguru-reviewer-build-artifacts-<ACCOUNT_ID>-<REGION>

  • AWS_REGION – AWS 區域 資源所在的 。

  • ROLE_TO_ASSUME – 管道擔任的 IAM 角色名稱。此模式使用角色名稱 githubActionsDeployRole

AWS DevOps,DevOps 工程師

建立 GitHub 個人存取字符。

若要為您的 GitHub 動作工作流程設定安全的方式來驗證 GitHub 並與之互動,請執行下列動作:

  1. 若要建立對儲存庫具有讀取和寫入存取權的 GitHub 個人存取字符,請遵循 GitHub 文件中管理個人存取字符的指示。

  2. 若要將此字符儲存為 GitHub 動作的儲存庫秘密,請遵循 GitHub 動作文件中為儲存庫建立秘密的指示。

AWS DevOps,DevOps 工程師
任務描述所需的技能

清除資源。

若要清除 AWS CDK Python 應用程式,請執行下列命令:

cdk destroy --all
DevOps 工程師

清除

任務描述所需的技能

清除資源。

若要清除 AWS CDK Python 應用程式,請執行下列命令:

cdk destroy --all
DevOps 工程師

故障診斷

問題解決方案

顯示儀表板問題清單的連結。

在 CI/CD 管道期間,無法列印問題清單。反之,此模式會使用 GitHub 動作做為替代方法來處理和顯示問題清單。

相關資源

AWS resources

GitHub 文件

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。