使用創建 Step Functions 狀態機 AWS SAM - AWS Step Functions

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

使用創建 Step Functions 狀態機 AWS SAM

在本指南中,您將下載、建置和部署包含 AWS Step Functions 狀態機器的範例 AWS SAM 應用程式。這個應用程式會建立一個模擬股票交易工作流程,並依預先定義的排程執行 (請注意,排程預設為停用以避免產生費用)。

下圖顯示此應用程式的組件:

顯示本教學課程工作流程的圖表。

以下是您要建立範例應用程式所執行的命令預覽。如需當中各個命令的詳細資訊,請參閱此頁面稍後的章節

# Step 1 - Download a sample application. For this tutorial you # will follow the prompts to select an AWS Quick Start Template # called 'Multi-step workflow' sam init # Step 2 - Build your application cd project-directory sam build # Step 3 - Deploy your application sam deploy --guided

必要條件

本指南假設您已完成 AWS SAM CLI為您的作業系統安裝中的步驟。它假設您已完成以下操作:

  1. 創建了一個 AWS 帳戶。

  2. 已設定的IAM權限。

  3. 已安裝 Homebrew。注意:Homebrew 只是 Linux 和 macOS 的先決條件。

  4. 安裝了 AWS SAM CLI. 注意:請確認您擁有 0.52.0 版或更高版本。您可以透過執行命令 sam --version 檢查您所擁有的版本。

步驟 1:下載範例 AWS SAM 應用程式

要執行的命令:

sam init

依照螢幕上的提示選取下列項目:

  1. AWS 快速入門範本

  2. 語言:Python,紅寶石,NodeJS,圍棋,Java 或. NET

  3. 專案名稱:(您選擇的名稱 - 預設為 sam-app)

  4. 快速入門應用程序:多步驟工作流

在做 AWS SAM 什麼:

此命令會使用您為「專案名稱」提示所提供的名稱來建立目錄 (預設為 sam-app)。目錄的特定內容將取決於您選擇的語言。

以下是當您選擇其中一個 Python 執行時間時的目錄內容:

├── README.md
├── functions
│   ├── __init__.py
│   ├── stock_buyer
│   │   ├── __init__.py
│   │   ├── app.py
│   │   └── requirements.txt
│   ├── stock_checker
│   │   ├── __init__.py
│   │   ├── app.py
│   │   └── requirements.txt
│   └── stock_seller
│       ├── __init__.py
│       ├── app.py
│       └── requirements.txt
├── statemachine
│   └── stock_trader.asl.json
├── template.yaml
└── tests
    └── unit
        ├── __init__.py
        ├── test_buyer.py
        ├── test_checker.py
        └── test_seller.py

您可以查看兩個特別有趣的檔案:

您可以在 template.yaml 檔案中看到下列項目,這是指向狀態機器定義檔:

Properties: DefinitionUri: statemachine/stock_trader.asl.json

將狀態機定義保持為單獨的文件,而不是將其嵌入到 AWS SAM 模板中可能會很有幫助。例如,如果您未在範本中包含定義,則追蹤狀態機定義的變更會比較容易。您可以使用 Workflow Studio 建立和維護狀態機器定義,並將定義從主控台直接匯出到 Amazon 州語言規格檔案,而不必將其合併到範本中。

如需範例應用程式的詳細資訊,請參閱專案目錄中的 README.md 檔案。

步驟 2:建置您的應用程式

要執行的命令:

首先變更至專案目錄 (也就是範例應用程式的 template.yaml 檔案所在的目錄;依預設為 sam-app),然後執行下列命令:

sam build

示例輸出:

  
 Build Succeeded

 Built Artifacts  : .aws-sam/build
 Built Template   : .aws-sam/build/template.yaml

 Commands you can use next
 =========================
 [*] Invoke Function: sam local invoke
 [*] Deploy: sam deploy --guided
       

在做 AWS SAM 什麼:

其中 AWS SAM CLI包含許多 Lambda 執行階段的抽象,可用來建置相依性,並將所有組建成品複製到暫存資料夾中,以便可以封裝和部署所有項目。sam build 命令會建置應用程式所具有的任何相依性,並將建置成品複製到 .aws-sam/build 下的資料夾。

步驟 3:將應用程式部署到 AWS 雲端

要執行的命令:

sam deploy --guided

依照螢幕上的提示操作。您可以直接以 Enter 回應以接受互動體驗中提供的預設選項。

在做 AWS SAM 什麼:

此命令會將您的應用程式部署到 AWS 雲端。它會將您使用sam build命令建立的部署成品、封裝並上傳至由建立的 Amazon S3 儲存貯體 AWS SAM CLI,然後使用部署應用 AWS CloudFormation程式。在部署命令的輸出中,您可以看到對 AWS CloudFormation 堆疊進行的變更。

您可以按照以下步驟驗證示例 Step Functions 狀態機器已成功部署:

  1. 登入 AWS Management Console 並開啟 Step Functions 主控台,位於https://console.aws.amazon.com/states/

  2. 在左側導覽中,選擇 State machines (狀態機器)

  3. 在清單中尋找並選擇您的新狀態機器。它將被命名為 StockTradingStateMachine-<unique-hash>.

  4. 選擇 Definition (定義) 索引標籤。

您現在應該可以看到狀態機器的視覺表示。您可以驗證視覺表示是否與專案目錄的 statemachine/stockTrader.asl.json 檔案中找到的狀態機器定義相符。

故障診斷

SAMCLI錯誤:「沒有這樣的選項:-引導」

執行 sam deploy 時,您會看到下列錯誤:

 
Error: no such option: --guided
            

這表示您使用的是不支援--guided參數的舊版本。 AWS SAM CLI若要修正此問題,您可以將您的版本更新 AWS SAM CLI為 0.33.0 或更新版本,或省略指令中的--guidedsam deploy參數。

SAMCLI錯誤:「無法建立受管資源:找不到認證」

執行 sam deploy 時,您會看到下列錯誤:

 
Error: Failed to create managed resources: Unable to locate credentials
            

這表示您尚未設定 AWS 認證來啟用進 AWS SAM CLI行 AWS 維修呼叫。若要修正此問題,您必須設定 AWS 認證。如需詳細資訊,請參閱AWS Serverless Application Model 開發人員指南中的設定 AWS 認證

清除

如果您不再需要透過執行此教學課程建立的 AWS 資源,您可以刪除部署的 AWS CloudFormation 堆疊來移除這些資源。

若要刪除使用本教學課程建立的 AWS CloudFormation 堆疊 AWS Management Console,請依照下列步驟執行:

  1. 請登入 AWS Management Console 並開啟 AWS CloudFormation 主控台,網址為 https://console.aws.amazon.com/cloudformation

  2. 在左側導覽窗格中,選擇 Stacks (堆疊)

  3. 在堆疊清單中,選擇 sam-app (或您建立的堆疊名稱)。

  4. 選擇 刪除

完成後,堆棧的狀態將更改為 DELETE_ COMPLETE

或者,您也可以執行下列 AWS CLI 指令來刪除 AWS CloudFormation 堆疊:

aws cloudformation delete-stack --stack-name sam-app --region region

驗證已刪除的堆疊

對於這兩種刪除 AWS CloudFormation 堆的方法,您可以前往 https://console.aws.amazon.com/cloudformation,在左側導覽窗格中選擇「堆疊」,然後在搜尋文字方塊右側的下拉式清單中選擇「刪除」,以確認堆疊已刪除。您應該在刪除的堆疊清單中看到堆疊名稱 sam-app (或您所建立的堆疊名稱)。