教學課程:建立包含可組合PDK藍圖的完整堆疊應用程式 - Amazon CodeCatalyst

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

教學課程:建立包含可組合PDK藍圖的完整堆疊應用程式

Amazon CodeCatalyst 提供許多不同的藍圖,協助您快速開始使用專案。使用藍圖建立的專案包含您所需的資源,包括來源存放庫、原始程式碼範例、CI/CD 工作流程、建置和測試報告,以及整合式問題追蹤工具。不過,有時您可能想要逐步建置專案,或將功能新增至由藍圖建立的現有專案。您也可以使用藍圖來執行此操作。本教學課程示範如何開始使用單一藍圖,該藍圖奠定了基礎,並允許您將所有專案程式碼儲存在單一存放庫中。從那裡,您可以在方便的時候在初始藍圖之上添加其他藍圖,靈活地整合其他資源和基礎結構。通過這種構建塊方法,您可以滿足多個項目中的特定需求。

本教學課程說明如何撰寫多個AWS專案開發套件 (AWSPDK) 藍圖,以建立包含 React 網站、Smithy API 以及要部署到其中的支援CDK基礎結構的應用程式。AWS該AWSPDK提供了常見模式的構建模塊以及用於管理和構建項目的開發工具。如需詳細資訊,請參閱來AWSPDK GitHub 源儲存庫

下列PDK藍圖的設計是為了彼此搭配使用,以組合方式建置應用程式:

  • Monorepo-創建一個根級項目,用於管理 monorepo 中項目之間的相互依賴關係。該項目還提供了構建緩存和依賴可視化。

  • 類型安全 API-創建一API個可以在 SmithyOpen API v3 中定義的,並管理構建時代碼生成以允許您以類型安全的方式實現並與API之交互。販售管理您的API閘道部署並設定自動輸API入驗證的CDK建構。

  • Cloudscape 反應網站-創建一個使用 Cloudscape 構建的基於反應的網站,該網站預先與 Cognito 身份驗證和(可選)您創建的(可選)集成API,從而使您能夠安全地調用。API

  • 基礎架構-建立一個專案,以設定部署應用程式所需的所有CDK相關基礎結構。它還預先配置為在每次構建時根據CDK代碼生成圖表。

  • DevOps-建立與AWS專案開發套件 (AWSPDK) 中的建構相容的 DevOps 工作流程。

本教學課程也包含如何檢視已部署的應用程式、邀請其他使用者使用該應用程式,以及如何在合併提取要求時,透過提取要求來變更程式碼的步驟,這些提取要求會自動建置並部署至連線AWS帳戶中的資源。

當您建立包含PDK藍圖的專案時,會使用專案中的下列資源來建立 CodeCatalyst 專案:

  • 一個配置為一個單一的源存儲庫。

  • 執行靜態程式碼分析和授權檢查的工作流程,以及在對預設分支進行變更時建置和部署範例程式碼。每次您對程式碼進行變更時,都會產生架構圖。

  • 您可以用來規劃和追蹤工作的問題板和待處理項目。

  • 具有自動報告的測試報表套裝。

必要條件

若要建立與更新專案,您必須已完成中的作業,設定並登入 CodeCatalyst如下所示:

第 1 步:創建一個單獨的項目

Monorepo 藍圖開始創建您的 monorepo 代碼庫,該代碼庫充當基礎,允許您添加其他藍圖。PDK PDK

若要使用 PDK-Monorepo 藍圖來建立專案

  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 在主 CodeCatalyst 控台中,導覽至您要建立專案的空間。

  3. 在空間儀表板上,選擇建立專案

  4. 選擇從藍圖開始。

  5. 選擇 PDK-Monorepo 藍圖,然後選擇「下一步」。

  6. 在「為您的專案命名」下,輸入您要指派給專案的名稱及其相關聯的資源名稱。名稱在您的空間中必須是唯一的。

  7. 在「專案資源」下,執行下列操作:

    1. 在 [主要程式設計語言] 下,選擇您要用來開發專案程式碼的語言。您可以選 TypeScript擇 Java 或 Python。

    2. 選擇代碼配置

    3. 在「來源儲存庫」文字輸入欄位中,輸入來源儲存庫的名稱,以建立新存放庫,或從現有的連結儲存庫中選取。現有的存放庫必須是空的。如需詳細資訊,請參閱連結來源儲存庫

    4. (選擇性) 從「Package 件管理員」下拉式選單中,選擇套件管理員。只有當您選擇 TypeScript 作為主要程式設計語言時,才需要這樣做。

  8. (選擇性) 若要預覽將根據您所選取的專案參數產生的程式碼,請從 [產生專案預覽] 中選擇 [檢視程式碼]。

  9. (選擇性) 從藍圖的卡片中選擇檢詳細資料以檢視有關藍圖的特定詳細資料,例如藍圖架構概觀、所需的連線和權限,以及藍圖建立的資源類型。

  10. 選擇創建項目來創建您的 monorepo 項目。創建的根級項目管理 monorepo 中項目之間的相互依賴關係,並提供構建緩存和依賴管理。

    如需專案藍圖的詳細資訊,請參閱使用 CodeCatalyst 藍圖建立全方位專案

PDK-Monorepo 藍圖只生成該項目的基礎。要使用藍圖創建可行的應用程序,您需要添加其他PDK藍圖,例如類型安全API,Cloudscape 反應網站,基礎架構或. DevOps 在下一步中,您將添加一個類型安全API到項目。

第 2 步:將類型安全添加API到項目

類型安全API藍圖允許您定義API使用鐵匠鋪或 OpenAI v3。PDK它從您的API定義生成運行時包,其中包括用於與您的API和服務器端代碼進行交互的客戶端以實現API. 藍圖也會針對每項作業產生具有類型安全API性的CDK建構。您可以將藍圖添加到現有的 PDK monorepo 項目中,以將API功能添加到項目中。

若要新增 PDK-類型安全API藍圖

  1. 在 monorepo 專案的導覽窗格中,選擇 [藍圖],然後選擇 [新增藍圖]。

  2. 選擇 PDK-鍵入安全API藍圖,然後選擇 [下一步]。

  3. 設定藍圖下,設定藍圖參數:

    • 模型語言下,選擇API模型定義的語言。

    • 在「命名空間」文字輸入欄位中,輸入API.

    • 在名API稱文字輸入欄位中,輸入您的API.

    • 在 [CDK語言] 底下,選擇您慣用的語言來撰寫CDK基礎結構以部署API中。

    • 選擇 [處理常式語言] 下拉式功能表,然後選擇您要在其中實API作處理常式的語言。

    • 選擇 [文件格式] 下拉式功能表,然後選擇您要產生API文件的格式。

  4. 在 [程式碼變更] 索引標籤中,檢閱提議的變更。提取請求中顯示的差異顯示了在創建提取請求時對您的項目進行的更改。

  5. 如果對套用藍圖時將進行的提議變更感到滿意,請選擇新增藍圖

    建立提取請求之後,您可以新增註解。註解可以新增至提取請求或檔案中的個別行,以及整體的提取請求。您可以使用@符號 (後面接著檔案名稱) 來新增資源的連結,例如檔案。

    注意

    在核准並合併提取要求之前,不會套用藍圖。如需詳細資訊,請參閱 檢閱提取要求合併提取請求

  6. 從 [狀態] 欄中,選擇 [PDK-類型安全] API 藍圖資料列的擱置提取要求,然後選擇開啟的提取要求的連結。

  7. 選擇「合併」,選擇您偏好的合併策略,然後選擇「合併」以合併套用藍圖中的變更。

    合併提取請求後,在 monorepo 項目中生成一個新packages/apis/mypdkapi文件夾,其中包含了配置 Type Safe API 的所有API相關源代碼。

  8. 在導覽窗格中,選擇 [藍圖] 以確認 [PDK-類型安全] 的 [狀態] API 顯示 [最新]。

第 3 步:為項目添加雲景反應網站

雲景反應網站藍圖生成一個網站。PDK您可以關聯一個可選參數(類型安全APIs),以自動配置您的網站以設置經過身份驗證的類型安全客戶端以及交互式API資源管理器來測試您API的各種。

要添加 PDK-雲景反應網站藍圖

  1. 在 monorepo 專案的導覽窗格中,選擇 [藍圖],然後選擇 [新增藍圖]。

  2. 選擇 PDK-雲景反應網站藍圖,然後選擇下一步

  3. 設定藍圖下,設定藍圖參數:

    • 網站名稱文字輸入欄位中,輸入您網站的名稱。

    • 選擇「類型安全」APIs 下拉式功能表,然後選擇要在網站中整合的API藍圖。傳入API設置經過身份驗證的客戶端,並添加所需的依賴關係,API資源管理器和其他功能。

  4. 在 [程式碼變更] 索引標籤中,檢閱提議的變更。提取請求中顯示的差異顯示了在創建提取請求時對您的項目進行的更改。

  5. 如果對套用藍圖時將進行的提議變更感到滿意,請選擇新增藍圖

    建立提取請求之後,您可以新增註解。註解可以新增至提取請求或檔案中的個別行,以及整體的提取請求。您可以使用@符號 (後面接著檔案名稱) 來新增資源的連結,例如檔案。

    注意

    在核准並合併提取要求之前,不會套用藍圖。如需詳細資訊,請參閱 檢閱提取要求合併提取請求

  6. 從 [狀態] 欄中,選擇 [PDK-Cloudscape React 網站藍圖] 資料列的擱置中提取要求,然後選擇開啟的提取要求的連結。

  7. 選擇「合併」,選擇您偏好的合併策略,然後選擇「合併」以合併套用藍圖中的變更。

    合併提取請求後,在 monorepo 項目中生成一個新packages/websites/my-website-name文件夾,其中包含您新網站的所有源代碼。

  8. 在功能窗格中,選擇「藍圖」以確認「PDK-Cloudscape 反應網站」的狀態顯示為最新狀態。

接下來,您將新增 PDK-基礎結構藍圖以產生基礎結構,以將您的網站部署到AWS雲端。

步驟 4:產生基礎結構以將應用程式部署到AWS雲端

基礎結構藍圖會設定包含所有CDK程式碼的套件,以部署您的網站和API. PDK 它還提供了圖生成和一致性的原型 nag 包默認情況下。

若要新增 PDK-基礎結構藍圖

  1. 在 monorepo 專案的導覽窗格中,選擇 [藍圖],然後選擇 [新增藍圖]。

  2. 選擇 PDK-基礎結構藍圖,然後選擇 [下一步]。

  3. 設定藍圖下,設定藍圖參數:

    • 在 [CDK語言] 底下,選擇您要用來開發基礎結構的語言。

    • 在 [堆疊名稱] 文字輸入欄位中,輸入為藍圖產生的 CloudFormation 堆疊名稱。

      注意

      在下一個步驟中記下此堆疊名稱,您將在其中設定 DevOps 工作流程。

    • 選擇「類型安全」APIs 下拉式功能表,然後選擇要在網站中整合的API藍圖。

    • 選擇雲景反應 TS 網站下拉菜單,然後選擇要在基礎設施中部署的網站藍圖(例如 PDK-雲景反應網站)。

  4. 在 [程式碼變更] 索引標籤中,檢閱提議的變更。提取請求中顯示的差異顯示了在創建提取請求時對您的項目進行的更改。

  5. 如果對套用藍圖時將進行的提議變更感到滿意,請選擇新增藍圖

    建立提取請求之後,您可以新增註解。註解可以新增至提取請求或檔案中的個別行,以及整體的提取請求。您可以使用@符號 (後面接著檔案名稱) 來新增資源的連結,例如檔案。

    注意

    在核准並合併提取要求之前,不會套用藍圖。如需詳細資訊,請參閱 檢閱提取要求合併提取請求

  6. 從 [狀態] 欄中,選擇 [PDK-基礎結構藍圖] 資料列的擱置提取要求,然後選擇開啟提取要求的連結。

  7. 選擇「合併」,選擇您偏好的合併策略,然後選擇「合併」以合併套用藍圖中的變更。

    合併提取請求後,在 monorepo 項目中生成一個新packages/infra文件夾,其中包含將您的項目部署到AWS雲中的基礎設施。

  8. 在瀏覽窗格中,選擇 [藍圖] 以確認 [PDK-基礎結構] 的 [狀態] 顯示 [最新]。

接下來,您將新增 DevOps藍圖以部署應用程式。PDK

步驟 5:設定 DevOps 工作流程以部署專案

DevOps藍圖會產生必要的 DevOps 工作流程,以便使用組態中指定的AWS帳戶和角色來建置和部署專案。PDK

若要新增 PDK- DevOps 藍圖

  1. 在 monorepo 專案的導覽窗格中,選擇 [藍圖],然後選擇 [新增藍圖]。

  2. 選擇 [PDK- DevOps 藍圖],然後選擇 [下一步]。

  3. 設定藍圖下,設定藍圖參數:

    • 在當前環境CDK中選擇引導程序。

    • 在「堆疊名稱」文字輸入欄位中,輸入您要部署的 CloudFormation 堆疊名稱。這應該與基礎結構藍圖中設定步驟 4:產生基礎結構以將應用程式部署到AWS雲端的PDK堆疊名稱相符。

    • 選擇AWS帳戶連線下拉式功能表,然後選擇要用於資源的AWS帳號。如需詳細資訊,請參閱新增 AWS 帳戶 至空間

    • 選擇用於部署應用程式下拉式功能表的IAM角色,然後選擇要用於部署專案應用程式的角色。

      注意

      建立IAM角色時,SourceArn請限制在專案設定中目前ProjectID找到的項目。如需詳細資訊,請參閱了解服CodeCatalystWorkflowDevelopmentRole-spaceName務角色

    • 選擇「地區」下拉式選單,然後選擇您要部署 monorepo 專案的區域。部署僅適用於所需AWS服務存在的區域。如需詳細資訊,請參閱按地區分類的AWS服務

  4. 在 [程式碼變更] 索引標籤中,檢閱提議的變更。提取請求中顯示的差異顯示了在創建提取請求時對您的項目進行的更改。

  5. 如果對套用藍圖時將進行的提議變更感到滿意,請選擇新增藍圖

    建立提取請求之後,您可以新增註解。註解可以新增至提取請求或檔案中的個別行,以及整個提取請求。您可以使用@符號 (後面接著檔案名稱) 來新增資源的連結,例如檔案。

    注意

    在核准並合併提取要求之前,不會套用藍圖。如需詳細資訊,請參閱 檢閱提取要求合併提取請求

  6. 從 [狀態] 欄中,選擇 [PDK-基礎結構藍圖] 資料列的擱置提取要求,然後選擇開啟提取要求的連結。

  7. 選擇「合併」,選擇您偏好的合併策略,然後選擇「合併」以合併套用藍圖中的變更。

    合併提取請求後,在 monorepo 項目中生成一個新的.codecatalyst/workflows文件夾。

  8. 在導覽窗格中,選擇 [藍圖] 以確認 [PDK-] 的 [狀態] DevOps 顯示 [最新]。

注意

從此開始, DevOps藍圖和對PDK藍圖的所有後續變更將會大幅減慢,因為會產生幕後鎖定檔案,以確保 future 可重複建置和部署。PDK它將為任何支持的語言中的所有軟件包生成鎖定文件。

步驟 6:確認發布工作流程並查看您的網站

完成前面的步驟後,您可以確認發行工作流程,以確保專案正在建置中。

確認發行工作流程並檢視您的網站

  1. 在 monorepo 專案的導覽窗格中,選擇 CI/CD,然後選擇「工作流程」。

  2. 對於核發工作流程,請選擇最新的工作流程執行以檢視詳細資訊。如需詳細資訊,請參閱檢視單次執行的狀態和詳細資訊

  3. 順利完成工作流程執行後,選擇工作流程中的最後一個動作 (例如,部署-B eta-ap-souteast -2,然後選擇 [變數]。

    PDK藍圖工作流程。
  4. 複製並貼上「變數」表格中的連結,以檢視已部署的網站 (例如,MyPDKApiwebsiteDistributionDomain名稱 XXXXX)進入一個新的瀏覽器窗口。

    工作流程動作的「變數」表格。

    您需要一個 Amazon Cognito 帳戶才能登錄到您的網站。根據預設,使用者集區不會設定為允許自我註冊。

    1. 瀏覽至 AWSCognito 主控台

    2. 從「使用者集區」表格中,選擇與 PDK- DevOps 藍圖建立的使用者集區相符的使用者集區名稱,該名稱可在「變數」表格中找到 (例如,inra)calculatebetaUserIdentityinfracalculatebetaUserIdentityIdentityPoolIdXXXXX。如需詳細資訊,請參閱使用者集區入門

      使用者集區建立者 PDK- DevOps 藍圖。
    3. 選擇 Create user (建立使用者)。

    4. 設定使用者資訊參數:

      • 在「邀請訊息」下,選擇「傳送電子郵件邀請

      • 在 [使用者名稱] 文字輸入欄位中,輸入使用者名稱。

      • 在 [電子郵件地址] 文字輸入欄位中,輸入使用者名稱。

      • 在 [暫時密碼] 下方,選擇 [產生密碼]。

    5. 選擇 Create user (建立使用者)。

    6. 導航到您為用戶信息參數輸入的電子郵件帳戶,打開一封帶有臨時密碼的電子郵件。請記下密碼。

    7. 瀏覽回部署的網站,輸入您建立的使用者名稱和收到的暫時密碼,然後選擇 [登入]。

  5. (選擇性) 順利完成工作流程執行之後,您也可以檢視產生的圖表。在中選擇「成品」標籤 CodeCatalyst,為「表」列選擇「下載」,然後開啟下載的檔案。

    工作流程的人工因素標籤
    通過PDK藍圖生成的圖表。

在PDK專案上協同合作和重複執行

專案設定完成後,您可以對原始程式碼進行變更。您也可以邀請其他 Space 成員來處理專案。PDK藍圖可讓您反覆建置應用程式,只在需要時新增所需的應用程式,同時保留對每個藍圖組態的完整控制權。

第 1 步:邀請成員加入您的項目

您可以使用主控台邀請使用者加入您的專案。您可以邀請您的空間成員,或從空間外部新增名稱。

若要邀請使用者加入您的專案,您必須以專案管理員或 Space 管理角色登入。

您不需要邀請具有 S pace 管理員角色的使用者加入您的專案,因為他們已經具有對空間中所有專案的隱含存取權。

當您邀請使用者加入您的專案時 (未指派 S pace 系統管理員角色),使用者將顯示在專案底下的 [專案成員] 表格中,以及顯示在 [專案成員] 表格中的空間下。

若要從 [專案設定] 索引標籤邀請成員加入您的專案
  1. 導航到您的項目。

    提示

    您可以選擇要在頂部導航欄中查看的項目。

  2. 在導覽窗格中,選擇 [專案設定]。

  3. 選擇「成員」頁標。

  4. 在 [專案成員] 中,選擇 [邀請新成員]。

  5. 輸入新成員的電子郵件地址,選擇此成員的角色,然後選擇 [邀請]。如需角色的詳細資訊,請參閱授予使用者角色的存取權

若要從專案概述頁面邀請成員加入您的專案
  1. 導航到您的項目。

    提示

    您可以選擇要在頂部導航欄中查看的項目。

  2. 選擇「成員 +」按鈕。

  3. 輸入新成員的電子郵件地址,選擇此成員的角色,然後選擇 [邀請]。如需角色的詳細資訊,請參閱授予使用者角色的存取權

步驟 2:建立問題以協同合作和追蹤工作

CodeCatalyst 幫助您跟踪功能,任務,錯誤以及與問題相關的項目的任何其他工作。您可以創建問題以跟踪所需的工作和想法。默認情況下,當您創建問題時,它會添加到您的積壓。您可以將問題移至追蹤進行中工作的看板。您也可以將問題指派給特定專案成員。在此步驟中,請建立問題以對PDK專案進行變更。

若要建立問題

  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 導航到您要創建問題的 monorepo 項目。

  3. 在專案首頁上,選擇 [建立問題]。或者,在導覽窗格中,選擇「問題」。

  4. 選擇 [建立問題]。

    注意

    您也可以在使用網格檢視時以內嵌方式新增問題。

  5. 輸入問題的標題。

  6. (選擇性) 輸入「說明」。針對此問題,請輸入下列說明:a change in the src/mysfit_data.json file.。您可以使用降價來添加格式。

  7. (選擇性) 選擇問題的 [狀態]、[優先順序] 和 [估計]。

  8. (選擇性) 新增現有標籤或建立新標籤,然後選擇 + 新增標籤來加入標籤

    1. 若要新增現有標示,請從清單中選擇標示。您可以在欄位中輸入搜尋字詞,以搜尋專案中包含該字詞的所有標籤。

    2. 若要建立新標籤並新增標籤,請在搜尋欄位中輸入要建立的標籤名稱,然後按 Enter 鍵。

  9. (選擇性) 選擇 + 新增工作負責人以新增工作負責人。您可以選擇 + 加入我,快速將自己新增為受指派人。

    提示

    您可以選擇將問題分配給 Amazon Q,讓 Amazon Q 嘗試解決問題。如需詳細資訊,請參閱教學課程:使用 CodeCatalyst 生成式 AI 功能加速開發工作

    此功能需要為空間啟用生成 AI 功能。如需詳細資訊,請參閱管理生成 AI 功能

  10. (選擇性) 新增現有的自訂欄位或建立新的自訂欄位。問題可以有多個自定義字段。

    1. 若要新增現有的自訂欄位,請從清單中選擇自訂欄位。您可以在欄位中輸入搜尋字詞,以搜尋專案中包含該字詞的所有自訂欄位。

    2. 要創建一個新的自定義字段並添加它,請在搜索字段中輸入要創建的自定義字段的名稱,然後按 Enter 鍵。然後選擇要創建的自定義字段的類型並設置一個值。

  11. 選擇 [建立問題]。右下角會顯示通知:如果問題已成功建立,便會顯示確認訊息,指出問題已成功建立。如果問題未成功建立,則會顯示錯誤訊息,其中包含失敗原因。然後,您可以選擇「重試」以編輯並重試建立問題,或選擇「捨棄」以捨棄問題。這兩個選項都會關閉通知。

    注意

    您無法在建立提取要求時將其連結至問題。不過,您可以在建立後對其進行編輯,以新增提取請求的連結。

如需詳細資訊,請參閱跟踪和組織有關問題的工作 CodeCatalyst

步驟 3:檢視您的來源儲存庫

您可以在 Amazon 中檢視與專案關聯的來源儲存庫 CodeCatalyst。對於中的來源儲存庫 CodeCatalyst,儲存庫的概觀頁面會提供該儲存區域中資訊和活動的快速概觀,包括:

  • 存放庫的描述 (如果有的話)

  • 儲存庫中的分支數

  • 儲存庫的開啟提取要求數目

  • 儲存庫的相關工作流程數

  • 預設分支或您選擇的分支中的檔案和資料夾

  • 上次提交到顯示分支的標題,作者和日期

  • 如果包含任何 README .md 文件,則在降價中呈現的 README .md 文件的內容

此頁面也提供儲存區域認可、分支和提取要求的連結,以及開啟、檢視和編輯個別檔案的快速方法。

注意

您無法在控制台中查看有關鏈接存儲庫的此信 CodeCatalyst 息。若要檢視連結儲存區域的相關資訊,請選擇儲存區域清單中的連結,以便在代管該儲存區域的服務中開啟該儲存區域。

若要導覽至專案的來源儲存庫
  1. 導覽至您的專案,然後執行下列其中一項作業:

    • 在專案的摘要頁面上,從清單中選擇所需的存放庫,然後選擇 [檢視存放庫]。

    • 在瀏覽窗格中,選擇 [程式碼],然後選擇 [原始碼儲存庫]。在來源儲存庫中,從清單中選擇存放庫的名稱。您可以在篩選列中輸入部分存放庫名稱來篩選儲存庫清單。

  2. 在儲存區域的首頁上,檢視儲存區域的內容以及相關資源的相關資訊,例如提取要求數目和工作流程。依預設,會顯示預設分支的內容。您可以從下拉式清單中選擇不同的分支來變更檢視。

提示

您也可以從專案摘要頁面中選擇 [查看專案程式碼],快速瀏覽至專案的儲存庫。

步驟 4:建立開發環境並變更程式碼

在此步驟中,創建一個開發環境並進行代碼更改,然後合併到主分支中。雖然本教程將引導您完成一個簡單的AWSPDK項目,但您也可以按照AWSPDK GitHub 存儲庫中提供的更複雜的示例進行操作。

使用新分支建立開發環境

  1. 在 monorepo 項目的導航窗格中,執行以下操作之一:

    • 選擇 [概觀],然後瀏覽至 [我的開發環境] 區段。

    • 選擇 [程式碼],然後選擇 [開發環境]。

    • 選擇 [程式碼],選擇 [原始碼儲存庫],然後選擇您要建立開發環境的 monorepo 儲存庫。

  2. 從下拉式功能表IDE中選擇支援的項目。如需更多資訊,請參閱支援開發環境的整合式開發環境

  3. 選擇複製儲存庫

  4. 選擇要複製的存放庫,選擇在新分支中工作,在「分支名稱」欄位中輸入分支名稱,然後從「建立分支來源」下拉式功能表中選擇要從中建立新分支的分支。

    注意

    如果您從 [來源儲存庫] 頁面或特定來源儲存庫建立開發環境,則不需要選擇存放庫。開發環境將從您從「來源儲存庫」頁面選擇的來源儲存庫建立。

  5. (選擇性) 在別名-選擇性中,輸入開發環境的別名。

  6. (選擇性) 選擇開發環境設定編輯按鈕,以編輯開發環境的運算、儲存或逾時設定。

  7. (選用) 在 Amazon Virtual Private Cloud (AmazonVPC) 中-選用,從下拉式功能表中選取您要與開發環境建立關聯的VPC連線。

    如果為您的空間設置了默認VPC設置,則您的開發環境將運行連接到該空間VPC。您可以透過關聯不同的連線來覆寫此VPC連線。另外,請注意VPC連接的開發環境不支持AWS工具包。

    注意

    當您建立具有VPC連線的開發環境時,會在VPC. CodeCatalyst 使用關聯的VPC角色與此接口進行交互。另外,請確保您的IPv4CIDR塊配置為 172.16.0.0/12 IP 地址範圍。

  8. 選擇 Create (建立)。建立您的開發環境時,開發環境狀態欄會顯示 [開始],而且建立開發環境後,狀態欄會顯示 [執行中]。

在您的開發環境執行之後,您可以在中 CodeCatalyst 使用產生的範例應用程式,方法是變更具有提取要求的程式碼,這些請求會在合併提取要求時自動建置並部署至連線AWS帳戶中的資源。monorepo 提供了一個開發文件,因此所有必需的全局依賴關係和運行時都會自動出現。

若要變更專案中的程式碼

  1. 在開發環境的工作終端中,導航到您的 monorepo 項目,然後通過運行以下命令來安裝項目依賴項:

    npx projen install
  2. 瀏覽至定packages/apis/mypdkapi/model/src/main/smithy/operations/say-hello.smithy義範例API作業的「」。在本教程中,您將構建一個簡單的Calculate操作,將兩個數字相加在一起。變更程式碼以定義此作業,包括其輸入和輸出。

    範例:

    $version: "2" namespace com.aws @http(method: "POST", uri: "/calculate") @handler(language: "typescript") operation Calculate { input := { @required numberA: Integer @required numberB: Integer } output := { @required result: Integer } }

    @handler特徵告訴類型安全API,您將實現此操作作為寫入的 AWS Lambda 處理程序 TypeScript。類型安全API將為此操作生成存根,以便您在中 TypeScript實現。添加了@required特徵,這意味著它將在運行時由部署的API網關強制執行。如需詳細資訊,請參閱 S mithy 文件

  3. 使用與程式碼變更對齊的/say-hello.smithy檔案名稱重新命名 (例如,calculate.smithy)。

  4. 導覽至packages/apis/mypdkapi/model/src/main/smithy/main.smithy,然後變更程式碼以連接作業。您可以透過在此檔案的operations欄位中列/calculate.smithy出該Calculate作業來公開中定義的作業。

    範例:

    $version: "2" namespace com.aws use aws.protocols#restJson1 /// A sample smithy api @restJson1 service MyPDKApi { version: "1.0" operations: [Calculate] errors: [ BadRequestError NotAuthorizedError InternalFailureError ] }
  5. 執行下列命令來建置變更:

    npx projen build
    注意

    或者,您可以傳入--parallel X標誌,這將跨X核心分配構建。

    由於添加了@handler特徵,因此在構建完成後會生成以下文件:

    • /packages/apis/mypdkapi/handlers/typescript/src/calculate.ts

    • /packages/apis/mypdkapi/handlers/typescript/test/calculate.test.ts

  6. 瀏覽至packages/apis/mypdkapi/handlers/typescript/src/calculate.ts,然後變更程式碼。此檔案是為呼叫的伺服器處理常式API。

    import { calculateHandler, CalculateChainedHandlerFunction, INTERCEPTORS, Response, LoggingInterceptor, } from 'mypdkapi-typescript-runtime'; /** * Type-safe handler for the Calculate operation */ export const calculate: CalculateChainedHandlerFunction = async (request) => { LoggingInterceptor.getLogger(request).info('Start Calculate Operation'); const { input } = request; return Response.success({ result: input.body.numberA + input.body.numberB, }); }; /** * Entry point for the AWS Lambda handler for the Calculate operation. * The calculateHandler method wraps the type-safe handler and manages marshalling inputs and outputs */ export const handler = calculateHandler(...INTERCEPTORS, calculate);
  7. 導航到該/packages/apis/mypdkapi/handlers/typescript/test/calculate.test.ts文件,並對代碼進行更改以更新單元測試。

    範例:

    import { CalculateChainedRequestInput, CalculateResponseContent, } from 'mypdkapi-typescript-runtime'; import { calculate, } from '../src/calculate'; // Common request arguments const requestArguments = { chain: undefined as never, event: {} as any, context: {} as any, interceptorContext: { logger: { info: jest.fn(), }, }, } satisfies Omit<CalculateChainedRequestInput, 'input'>; describe('Calculate', () => { it('should return correct sum', async () => { const response = await calculate({ ...requestArguments, input: { requestParameters: {}, body: { numberA: 1, numberB: 2 } }, }); expect(response.statusCode).toBe(200); expect((response.body as CalculateResponseContent).result).toEqual(3); }); });
  8. 導覽至/packages/infra/main/src/constructs/apis/mypdkapi.ts檔案,然後變更程式碼,為CDK基礎結構中的Calculate作業新增整合。該API構造具有集成屬性,您可以在其中傳入之前添加的實施。由於您正在使用 Smithy 模型中的@handler特徵進Calculate行操作,因此可以使用已預先配置的生成CalculateFunctionCDK構造來指向處理程序實現。

    範例:

    import { UserIdentity } from "@aws/pdk/identity"; import { Authorizers, Integrations } from "@aws/pdk/type-safe-api"; import { Stack } from "aws-cdk-lib"; import { Cors } from "aws-cdk-lib/aws-apigateway"; import { AccountPrincipal, AnyPrincipal, Effect, PolicyDocument, PolicyStatement, } from "aws-cdk-lib/aws-iam"; import { Construct } from "constructs"; import { Api, CalculateFunction } from "calculateapi-typescript-infra"; /** * Api construct props. */ export interface CalculateApiProps { /** * Instance of the UserIdentity. */ readonly userIdentity: UserIdentity; } /** * Infrastructure construct to deploy a Type Safe API. */ export class CalculateApi extends Construct { /** * API instance */ public readonly api: Api; constructor(scope: Construct, id: string, props?: CalculateApiProps) { super(scope, id); this.api = new Api(this, id, { defaultAuthorizer: Authorizers.iam(), corsOptions: { allowOrigins: Cors.ALL_ORIGINS, allowMethods: Cors.ALL_METHODS, }, integrations: { calculate: { integration: Integrations.lambda(new CalculateFunction(this, "CalculateFunction")) } }, policy: new PolicyDocument({ statements: [ // Here we grant any AWS credentials from the account that the prototype is deployed in to call the api. // Machine to machine fine-grained access can be defined here using more specific principals (eg roles or // users) and resources (ie which api paths may be invoked by which principal) if required. // If doing so, the cognito identity pool authenticated role must still be granted access for cognito users to // still be granted access to the API. new PolicyStatement({ effect: Effect.ALLOW, principals: [new AccountPrincipal(Stack.of(this).account)], actions: ["execute-api:Invoke"], resources: ["execute-api:/*"], }), // Open up OPTIONS to allow browsers to make unauthenticated preflight requests new PolicyStatement({ effect: Effect.ALLOW, principals: [new AnyPrincipal()], actions: ["execute-api:Invoke"], resources: ["execute-api:/*/OPTIONS/*"], }), ], }), }); // Grant authenticated users access to invoke the api props?.userIdentity.identityPool.authenticatedRole.addToPrincipalPolicy( new PolicyStatement({ effect: Effect.ALLOW, actions: ["execute-api:Invoke"], resources: [this.api.api.arnForExecuteApi("*", "/*", "*")], }), ); } }
  9. 執行下列命令來建置變更:

    npx projen build

專案完成建置後,您可以檢視已更新產生的圖表,您可以在中找到/packages/infra/main/cdk.out/cdkgraph/diagram.png。該圖顯示了如何添加功能並連接到API創建的功能。作為代CDK碼被修改,這個圖表也被更新。

現在,您可以通過將更改推送和合併到存儲庫的主分支來部署更改。

步驟 5:推送和合併程式碼變更

提交並推送您的代碼更改,然後可以將其合併到源代碼庫的主分支中。

將變更推送至特徵分支

  • 通過運行以下命令將更改提交並推送到功能分支:

    git add .
    git commit -m "my commit message"
    git push

推送變更會觸發針對功能分支執行的新工作流程,您可以在 CodeCatalyst 主控台中檢視該工作流程。然後,您可以創建一個提取請求,將更改合併到源存儲庫的主分支。將功能分支合併到主分支會觸發發行工作流程。您也可以將提取請求鏈接到您的問題。

若要建立提取請求並將其連結至您的問題

  1. 在您的壟斷項目中,執行以下操作之一:

    • 在瀏覽窗格中,選擇 [程式],選擇 [提取要求],然後選擇 [建立提取要求]。

    • 在儲存區域首頁上,選擇 [他],然後選擇 [建立提取要求]。

    • 在專案頁面上,選擇 [建立提取要求]。

  2. 源存儲庫中,確保指定的源存儲庫是包含提交代碼的存儲庫。只有在您未從存放庫的主頁面建立提取要求時,才會顯示此選項。

  3. 在「目標」分支中,選擇在檢閱程式碼之後將其合併到的主要分支。

  4. 原始碼分支中,選擇包含已提交程式碼的功能分支。

  5. 提取請求標題中,輸入一個標題,以幫助其他用戶了解需要審查的內容以及原因。

  6. (選擇性) 在提取要求說明中,提供問題連結或變更說明等資訊。

    提示

    您可以選擇 [為我撰寫說明], CodeCatalyst 自動產生提取要求中所包含變更的描述。您可以在將自動產生的描述新增至提取請求後,對其進行變更。

    此功能需要為空間啟用生成 AI 功能。如需詳細資訊,請參閱在 Amazon 中管理生成 AI 功能 CodeCatalyst

  7. 在 [問題] 中,選擇 [連結問題],然後選擇您在中建立的問題步驟 2:建立問題以協同合作和追蹤工作。若要取消連結問題,請選擇「取消連結」圖示。

  8. (選擇性) 在 [必要的複查者] 中,選擇 [新增必要的審核者]。從專案成員清單中選擇要新增的專案成員。必要的審核者必須先核准變更,才能將提取請求合併到目的地分支。

    注意

    您無法同時將審核者新增為必要的審核者和選用的審核者。您無法將自己新增為審核者。

  9. (選擇性) 在 [選擇性複查者] 中,選擇 [新增選用複查者]。從專案成員清單中選擇要新增的專案成員。選用審核者不需要核准變更作為需求,才能將提取請求合併到目的地分支。

  10. 您的提取請求必須由審核者或您自己審核並合併到主要分支中。如需詳細資訊,請參閱合併提取請求

    當您的變更合併到來源儲存庫的主分支時,會自動觸發新的工作流程。

  11. 合併完後,您可以將問題移至「完成」。

    1. 在導覽窗格中,選擇 [問題]。

    2. 選擇建立於中的問題步驟 2:建立問題以協同合作和追蹤工作,選擇 [狀態] 下拉式清單,然後選擇 [完成]。

發行工作流程會在成功執行後部署您的應用程式,以便您檢視變更。

確認發行工作流程並檢視您的網站

  1. 在 monorepo 專案的導覽窗格中,選擇 CI/CD,然後選擇「工作流程」。

  2. 對於核發工作流程,請選擇最新的工作流程執行以檢視詳細資訊。如需詳細資訊,請參閱檢視單次執行的狀態和詳細資訊

  3. 順利完成工作流程執行後,選擇工作流程中的最後一個動作 (部署-B eta-ap-souteast -2),然後選擇 [變數]。

  4. 複製並貼上連結,以檢視已部署的網站 MyPDKApiwebsiteDistributionDomain將XXXXX行命名到新的瀏覽器窗口中。

  5. 輸入您在中建立的使用者名稱和密碼步驟 6:確認發布工作流程並查看您的網站,然後選擇 [登入]。

  6. (選擇性) 測試應用程式中的變更。

    1. 選擇下POST拉菜單。

    2. 輸入和的兩個值number BnumberA然後選擇「執行」。

    3. 確認回應內文中的結果。

隨著時間的推移,PDK藍圖的目錄版本可能會改變。您可以將專案的藍圖變更為目錄版本,以隨時掌握最新變更。您可以在變更專案的藍圖版本之前檢視程式碼變更和受影響的環境。如需詳細資訊,請參閱變更專案中的藍圖版本