選取您的 Cookie 偏好設定

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

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

AWS SAM 使用 AWS Toolkit

焦點模式
AWS SAM 使用 AWS Toolkit - AWS Cloud9

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

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

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

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

Toolkit AWS 支援無伺服器應用程式。使用 AWS Toolkit,您可以建立包含 AWS Lambda函數的無伺服器應用程式,然後將應用程式部署到 AWS CloudFormation 堆疊。

建立無伺服器應用程式

此範例說明如何使用 AWS Toolkit 來建立無伺服器應用程式。如需了解如何執行與除錯無伺服器應用程式,請參閱 執行與除錯無伺服器應用程式

建立無伺服器應用程式的必要先決條件包含 AWS SAM CLIAWS CLI。這些包含在 中 AWS Cloud9。如果未安裝 AWS SAM CLI,或者如果它已過期,您可能需要執行安裝或升級。如需如何安裝 AWS SAM CLI 的指示,請參閱安裝 AWS SAM CLI,如需如何升級 CLI AWS SAM 的指示,請參閱升級 AWS SAM CLI

使用 AWS Toolkit 建立無伺服器應用程式

此範例說明如何使用 AWS Toolkit 建立無伺服器應用程式,方法是使用 AWS Serverless Application Model (AWS SAM)

  1. AWS Explorer 中,開啟 (按一下右鍵) Lambda 節點的內容選單,然後選擇 Create Lambda SAM Application (建立 Lambda SAM 應用程式)。

    注意

    或者,您也可以在 AWS: Explorer 標題中選取選單圖示,然後選擇 Create Lambda SAM Application (建立 Lambda SAM 應用程式)。

  2. 選擇您 SAM 應用程式的執行時間。在此範例中,請選擇 nodejs12.x

    注意

    如果您選取了包含「(Image)」的執行時間,您的應用程式就是 Image 套件類型。如果您選取了不包含「(Image)」的執行時間,您的應用程式就是 Zip 類型。如需詳細了解 ImageZip 套件類型的差異,請參閱 AWS Lambda 開發人員指南中的 Lambda 部署套件

  3. 為您的無伺服器應用程式選擇下列其中一個範本:

    • AWS SAM Hello World:具有 Lambda 函數的基本範本,會傳回傳統 "Hello World" 訊息。

    • AWS Step Functions 範例應用程式:執行股票交易工作流程的範例應用程式。Step Functions 會協調 Lambda 函數有參與的互動。

  4. 您可以選擇新專案的位置。若已存在,您可以選取現有的工作空間資料夾。否則,請瀏覽其他資料夾。如果選擇 Select a different folder (選取其他資料夾),畫面會顯示一個對話方塊,您可以從中選取資料夾位置。

  5. 輸入新應用程式的名稱。在此範例中,使用 my-sam-app-nodejs。按 Enter 鍵後, AWS Toolkit 需要一些時間來建立專案。

建立專案時,您可以在「Environment」(環境) 視窗中檢視應用程式的檔案。列於 Explorer 視窗中。

顯示 SAM 應用程式可用執行時間的螢幕擷取畫面。

執行與除錯無伺服器應用程式

您可以使用 AWS Toolkit 來設定如何偵錯無伺服器應用程式,並在開發環境中於本機執行這些應用程式。您可以偵錯由 AWS Serverless Application Model (AWS SAM) 範本定義的無伺服器應用程式。此範本使用簡單的 YAML 語法來描述函數、API、資料庫和事件來源對應等組成無伺服器應用程式的資源。

如需進一步了解 AWS SAM 範本,請參閱《 開發人員指南》中的AWS SAM 範本剖析AWS Serverless Application Model

或者,您可以對尚未經認可使用於 SAM 範本的無伺服器應用程式進行快速除錯。

您開始使用內嵌動作來識別合格的 AWS Lambda 函數,以開始設定偵錯行為。若要使用 SAM 範本所定義的基礎架構,請在使用相關 YAML 格式檔案中的內嵌動作。若要在不使用範本的情況下直接測試函數,請使用應用程式檔案中 Lambda 處理常式的內容感知連結。

注意

在此範例中,我們使用 JavaScript 來除錯應用程式。但是,您可以使用 AWS Toolkit 中提供的偵錯功能搭配下列語言和執行時間:

  • JavaScript – Node.js 10.x、12.x、14.x

  • Python – 3.7、3.8、3.9、3.10 (Python 2.7 和 3.6 無伺服器應用程式可以執行,但無法由 AWS Toolkit 偵錯。)

您的語言選擇也會在內容感知連結指出符合資格的 Lambda 處理常式時產生影響。如需詳細資訊,請參閱直接從程式碼執行和除錯無伺服器函數

使用 SAM 範本執行並除錯無伺服器應用程式

應用程式透過 SAM 範本來執行和除錯時,它的行為和所使用的資源會由 YAML 格式的檔案所描述。如果您使用 AWS Toolkit 建立無伺服器應用程式,template.yaml系統會自動為您的專案產生名為 的檔案。

在此程序中,請使用建立於 建立無伺服器應用程式 的範例應用程式。

如何使用 SAM 範本執行並除錯無伺服器應用程式

  1. 若要檢視無伺服器應用程式內含的應用程式檔案,請前往 Environment (環境) 視窗。

  2. 從應用程式資料夾 (例如 my-sample-app) 中開啟 template.yaml 檔案。

  3. 針對 template.yaml,選取 Edit Launch Configuration (編輯啟動組態)。

    新的編輯器會顯示 launch.json 檔案,該檔案提供的除錯組態採用預設屬性。

  4. 編輯或確認下列組態屬性的值:

    • "name" – 輸入方便識讀的名稱,讓它顯示在 Run (執行) 檢視的 Configuration (組態) 下拉式欄位中。

    • "target" – 確保該值是 "template"。如此一來,SAM 範本是除錯工作階段的進入點。

    • "templatePath" – 輸入 template.yaml 檔案的相對或絕對路徑。

    • "logicalId" – 確認名稱與 SAM 範本 Resources (資源) 區段中指定的名稱相符。在此例中,此名稱為 AWS::Serverless::Function 類型的 HelloWorldFunction

    如需詳細了解 launch.json 檔案中的上述與其他項目,請參閱 除錯無伺服器應用程式的組態選項

  5. 如果您認為除錯組態沒有問題,請儲存 launch.json。接下來,選擇 RUN (執行) 旁邊的綠色「播放」按鈕,即可開始除錯。

    注意

    如果您的 SAM 應用程式無法執行,請前往 Output (輸出) 視窗查看錯誤是否因未建置 Docker 映像所致。您可能需要釋放環境中的磁碟空間。

    如需詳細資訊,請參閱在 AWS Toolkit 中於本機執行 SAM 應用程式時發生錯誤,因為 AWS Cloud9 環境沒有足夠的磁碟空間

    當除錯工作階段啟動時,DEBUG CONSOLE (除錯主控台) 面板會顯示除錯輸出,並顯示 Lambda 函數傳回的任何值。除錯 SAM 應用程式時,Output (輸出) 面板會將 AWS Toolkit 選為輸出管道。

    注意

    如果 Windows 使用者在此程序中遇到 Docker 掛載問題,您可能需要重新整理自己的共用磁碟機的憑證 (在 Docker 設定中)。Docker 掛載錯誤類似如下。

    Fetching lambci/lambda:nodejs10.x Docker container image...... 2019-07-12 13:36:58 Mounting C:\Users\<username>\AppData\Local\Temp\ ... as /var/task:ro,delegated inside runtime container Traceback (most recent call last): ...requests.exceptions.HTTPError: 500 Server Error: Internal Server Error ...

直接從程式碼執行和除錯無伺服器函數

測試 AWS SAM 應用程式時,您可以選擇僅執行 Lambda 函數並對其進行偵錯。請排除 SAM 範本所定義的其他資源。這種方法必須使用內嵌動作,在可以直接叫用的來源程式碼中識別 Lambda 函數處理常式。

內容感知連結偵測到的 Lambda 處理常式取決於您用於應用程式的語言和執行時間。

語言/執行時間 內容感知連結識別 Lambda 函數的條件

JavaScript (Node.js 10.x、12.x 和 14.x)

函式具備以下特性:
  • 它是經過匯出的函式,最多有三個參數。

  • 它在工作空間資料夾中的父項資料夾有一個 package.json 檔案。

Python (3.7、3.8、3.9 和 3.10)

函式具備以下特性:
  • 它是最上層函數。

  • 它在工作空間資料夾中的父項資料夾有一個 requirements.txt 檔案。

如何從應用程式程式碼直接執行與除錯無伺服器應用程式

  1. 若要檢視無伺服器應用程式檔案,請選擇編輯器旁邊的資料夾圖示,導覽至應用程式資料夾。

  2. 從應用程式資料夾 (例如 my-sample-app) 展開函數資料夾 (本例為 hello-world),然後開啟 app.js 檔案。

  3. 在用於識別符合資格的 Lambda 處理常式函數的內嵌動作中,選擇 Add Debug Configuration。如未顯示新增除錯組態選項,您必須啟用程式碼濾鏡。若要啟用程式碼濾鏡,請參閱 啟用 AWS Toolkit 程式碼鏡頭

    在內嵌動作中,針對 Lambda 函式處理常式存取 Add Debug Configuration (新增除錯組態) 選項。
  4. 選取執行 SAM 應用程式的執行時間。

  5. launch.json 檔案的編輯器中編輯或確認下列組態屬性的值:

    • "name" – 輸入方便識讀的名稱。

    • "target" – 確認值為 "code",以便直接叫用 Lambda 函式處理常式。

    • "lambdaHandler" – 輸入程式碼中所用方法的名稱,Lambda 會呼叫此程式碼來叫用您的函數。舉例來說,JavaScript 應用程式的預設值為 app.lambdaHandler

    • "projectRoot" – 為包含 Lambda 函式的應用程式輸入檔案路徑。

    • "runtime" – 輸入或確認 Lambda 執行環境的有效執行時間 (例如 "nodejs.12x")。

    • "payload" – 選擇下列其中一個選項來定義您想要提供給 Lambda 函式作為輸入的事件酬載:

      • "json":定義事件酬載的 JSON 格式金鑰數值組。

      • "path":作為事件酬載的檔案的路徑。

  6. 如果您認為除錯組態沒有問題,請選擇 RUN (執行) 旁的綠色播放箭頭開始除錯。

    當除錯工作階段啟動時,DEBUG CONSOLE (除錯主控台) 面板會顯示除錯輸出,並顯示 Lambda 函數傳回的任何值。除錯 SAM 應用程式時,Output (輸出) 面板會將 AWS Toolkit 選為輸出管道。

    注意

    如果錯誤訊息提及 Docker,請參閱本注意事項

執行並除錯本機 Amazon API Gateway 資源

您可以執行或偵錯 中指定的 AWS SAM API Gateway 本機資源template.yaml。使用 執行 的 AWS Cloud9 啟動組態type=aws-sam來執行此操作invokeTarget.target=api

注意

API Gateway 支援兩種類型的 API。分別為 REST 和 HTTP API。不過, AWS Toolkit 的 API Gateway 功能僅支援 REST APIs。有時 HTTP API 可稱為「API Gateway V2 API」。

如何執行並除錯本機 API Gateway 資源
  1. 選擇以下其中一種方法來建立 AWS SAM API Gateway 資源的啟動組態:

    • 選項 1:前往您 AWS SAM 的處理常式來源程式碼 (尤其是.js、.cs 或 .py 檔案) 專案,將游標懸浮在 Lambda 處理常式上,然後選擇 Add Debug Configuration (新增除錯組態)。如果未顯示新增除錯組態選項,請啟用程式碼濾鏡。若要啟用程式碼濾鏡,請參閱 啟用 AWS Toolkit 程式碼鏡頭 。然後,在選單中選擇標示為 API Event (API 事件) 的項目。

    • 選項 2:編輯 launch.json,並使用以下語法建立新的啟動組態。

      { "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} } }, "sam": {}, "aws": {} }
  2. Run (執行) 按鈕旁邊的下拉式選單中,選擇啟動組態 (在上面的範例中名稱為 myConfig)。

  3. (選用) 在 Lambda 專案程式碼中新增中斷點。

  4. 選擇綠色「播放」按鈕旁邊的 Run (執行) 按鈕。

  5. 在輸出窗格中檢視結果。

組態

如果您使用 invokeTarget.target 屬性值 api,Toolkit 會變更啟動組態驗證和行為,以便支援 api 欄位。

{ "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} }, "querystring": "abc=def&qrs=tuv", "headers": { "cookie": "name=value; name2=value2; name3=value3" } }, "sam": {}, "aws": {} }

將範例中的值更換為如下所示:

invokeTarget.logicalId

API 資源。

路徑

啟動組態請求的 API 路徑 (例如 "path": "/hello")。

必須為經由 invokeTarget.templatePath 指定,從 template.yaml 解析的有效 API 路徑。

httpMethod

使用以下其中一個動詞:「delete」、「get」、「head」、「options」、「patch」、「post」、「put」。

payload

要在請求中傳送的 JSON 酬載 (HTTP 主體),結構和規則與 lambda.payload 欄位相同。

payload.path 指向包含 JSON 酬載的檔案。

payload.json 指定 JSON 酬載內嵌。

標頭

選用的名稱/值組對應。使用此選項可以指定要包含在請求中的 HTTP 標頭。

"headers": { "accept-encoding": "deflate, gzip;q=1.0, *;q=0.5", "accept-language": "fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5", "cookie": "name=value; name2=value2; name3=value3", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", }
querystring

(選用) 使用此字串來設定請求中的 querystring (例如 "querystring": "abc=def&ghi=jkl")。

aws

如何提供 AWS 連線資訊。如需詳細資訊,請參閱 除錯無伺服器應用程式的組態選項 中的 AWS 連線 (aws) 屬性 資料表。

sam

CLI AWS SAM 如何建置應用程式。如需詳細資訊,請參閱 除錯無伺服器應用程式的組態選項 中的 AWS SAM CLI (「sam」) 屬性

同步無伺服器應用程式

此範例說明如何使用 ,將上一個主題 (建立無伺服器應用程式) 中建立的無伺服器應用程式同步至 AWS AWS Toolkit for Visual Studio Code。

先決條件

  • 請務必選擇全域唯一的 Amazon S3 儲存貯體名稱。

  • 請確定您在 中設定的登入資料包含對下列服務的適當讀取/寫入存取權:Amazon S3 AWS CloudFormation AWS Lambda、 和 Amazon API Gateway。

  • 如果是部署類型為 Image 的應用程式,請確保您可在部署中使用全域唯一的 Amazon S3 儲存貯體名稱和 Amazon ECR 儲存庫 URI。

同步無伺服器應用程式

  1. AWS Explorer 視窗中,開啟 Lambda 節點的內容 (按一下滑鼠右鍵) 選單,然後選取同步 SAM 應用程式

  2. 選擇要部署的 AWS 區域 。

  3. 選擇要用於部署的 template.yaml 檔案。

  4. 輸入此部署可以使用的 Amazon S3 儲存貯體名稱。儲存貯體必須位於您要部署檔案的 區域。

    警告

    在現有的所有 Amazon S3 儲存貯體名稱中,該 Amazon S3 儲存貯體名稱必須為全域唯一。將唯一識別符新增至在以下範例中指定的名稱,或選擇不同的名稱。

  5. 如果您的無伺服器應用程式含有套件類型為 Image 的函式,請輸入此部署可以使用的 Amazon ECR 儲存庫名稱。儲存庫必須位於您要部署檔案的區域。

  6. 輸入部署之堆疊的名稱,即新堆疊的名稱或現有堆疊的名稱。

  7. Console (主控台)AWS Toolkit 索引標籤上確認部署成功。

    如果發生錯誤,右下角會顯示彈出式訊息。

    如果發生這種情況,請查看 AWS Toolkit 索引標籤中的文字了解詳情。以下是錯誤詳細資訊的範例。

    Error with child process: Unable to upload artifact HelloWorldFunction referenced by CodeUri parameter of HelloWorldFunction resource. S3 Bucket does not exist. Execute the command to create a new bucket aws s3 mb s3://pbart-my-sam-app-bucket An error occurred while deploying a SAM Application. Check the logs for more information by running the "View AWS Toolkit Logs" command from the Command Palette.

    在此範例中,由於 Amazon S3 儲存貯體不存在,因此發生錯誤。

部署完成時,您將看到應用程式在 AWS Explorer 中列出。若要了解如何叫用 Lambda 函數 (該函數是做為應用程式的一部分而建立),請參閱 叫用遠端 Lambda 函式

從 AWS 雲端刪除無伺服器應用程式

刪除無伺服器應用程式涉及刪除您先前部署到 AWS 雲端的 AWS CloudFormation 堆疊。請注意,此程序不會從本機主機刪除應用程式目錄。

  1. 開啟 AWS Explorer

  2. AWS Explorer 視窗中,展開您要刪除的已部署應用程式所在的區域,然後展開 AWS CloudFormation

  3. 開啟對應至您要刪除之無伺服器應用程式 AWS CloudFormation 堆疊名稱的內容 (按一下滑鼠右鍵) 選單。接著,選擇 Delete CloudFormation Stack (刪除 CloudFormation 堆疊)。

  4. 如要確認刪除所選堆疊,請選擇 Delete (刪除)。

如果堆疊刪除成功, AWS Toolkit 會從 AWS Explorer 的清單中 AWS CloudFormation 移除堆疊名稱。

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