本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本教學課程說明如何執行與 Amazon Simple Storage Service 的 AWS SDK 整合。您在本教學課程中建立的狀態機器會收集 Amazon S3 儲存貯體的相關資訊,然後列出儲存貯體以及目前區域中每個儲存貯體的版本資訊。
步驟 1:建立狀態機器
使用 Step Functions 主控台,您將建立狀態機器,其中包含列出目前帳戶和區域中所有 Amazon S3 儲存貯體Task
的狀態。然後,您將新增另一個Task
狀態,以叫用 HeadBucket
API 來驗證傳回的儲存貯體是否可以在目前區域中存取。如果無法存取儲存貯體,HeadBucket
API 呼叫會傳回S3.S3Exception
錯誤。您將包含一個Catch
區塊來擷取此例外狀況,並將 Pass
狀態做為備用狀態。
-
開啟 Step Functions 主控台
,然後選擇建立狀態機器。 在選擇範本對話方塊中,選取空白。
選擇選取以在 中開啟工作流程 Studio設計模式。
-
在本教學課程中,您將在 中撰寫狀態機器的 Amazon States Language(ASL) 定義程式碼編輯器。若要這樣做,請選擇程式碼。
-
移除現有的樣板程式碼,並貼上下列狀態機器定義。
{ "Comment": "A description of my state machine", "StartAt": "ListBuckets", "States": { "ListBuckets": { "Type": "Task", "Parameters": {}, "Resource": "arn:aws:states:::aws-sdk:s3:listBuckets", "Next": "Map" }, "Map": { "Type": "Map", "ItemsPath": "$.Buckets", "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "HeadBucket", "States": { "HeadBucket": { "Type": "Task", "ResultPath": null, "Parameters": { "Bucket.$": "$.Name" }, "Resource": "arn:aws:states:::aws-sdk:s3:headBucket", "Catch": [ { "ErrorEquals": [ "S3.S3Exception" ], "ResultPath": null, "Next": "Pass" } ], "Next": "GetBucketVersioning" }, "GetBucketVersioning": { "Type": "Task", "End": true, "Parameters": { "Bucket.$": "$.Name" }, "ResultPath": "$.BucketVersioningInfo", "Resource": "arn:aws:states:::aws-sdk:s3:getBucketVersioning" }, "Pass": { "Type": "Pass", "End": true, "Result": { "Status": "Unknown" }, "ResultPath": "$.BucketVersioningInfo" } } }, "End": true } } }
-
為您的狀態機器指定名稱。若要執行此操作,請選擇 MyStateMachine 預設狀態機器名稱旁的編輯圖示。然後,在狀態機器組態中,在狀態機器名稱方塊中指定名稱。
針對本教學課程,輸入名稱
Gather-S3-Bucket-Info-Standard
。 -
(選用) 在狀態機器組態中,指定其他工作流程設定,例如狀態機器類型及其執行角色。
在狀態機器設定中保留所有預設選擇。
如果您先前已為狀態機器建立具有正確許可的 IAM 角色,並想要使用它,請在許可中選擇現有角色,然後從清單中選擇角色。或選取輸入角色 ARN,然後為該 IAM 角色提供 ARN。
-
在確認角色建立對話方塊中,選擇確認以繼續。
您也可以選擇檢視角色設定以返回狀態機器組態。
注意
如果您刪除 Step Functions 建立的 IAM 角色,Step Functions 稍後無法重新建立該角色。同樣地,如果您修改角色 (例如,從 IAM 政策中的主體移除 Step Functions),Step Functions 稍後無法還原其原始設定。
在步驟 2 中,您將新增缺少的許可到狀態機器角色。
步驟 2:新增必要的 IAM 角色許可
若要收集目前區域中 Amazon S3 儲存貯體的相關資訊,您必須提供狀態機器存取 Amazon S3 儲存貯體所需的許可。
-
在狀態機器頁面上,選擇 IAM 角色 ARN 以開啟狀態機器角色的角色頁面。
-
選擇新增許可,然後選擇建立內嵌政策。
選擇 JSON 索引標籤,然後將下列許可貼到 JSON 編輯器。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketVersioning" ], "Resource": "*" } ] }
選擇檢閱政策。
在檢閱政策下,針對政策名稱,輸入
s3-bucket-permissions
。選擇 Create policy (建立政策)。
步驟 3:執行標準狀態機器執行
-
在 Gather-S3-Bucket-Info-Standard 頁面上,選擇開始執行。
-
在開始執行對話方塊中,執行下列動作:
-
(選用) 輸入自訂執行名稱以覆寫產生的預設值。
非 ASCII 名稱和記錄
Step Functions 接受包含非 ASCII 字元的狀態機器、執行、活動和標籤名稱。由於這類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用 ASCII 字元,以便在 CloudWatch 中追蹤指標。
-
選擇 Start execution (開始執行)。
-
Step Functions 主控台會引導您前往標題為執行 ID 的頁面。此頁面稱為執行詳細資訊頁面。在此頁面上,您可以在執行進行時或完成後檢閱執行結果。
若要檢閱執行結果,請在圖形檢視中選擇個別狀態,然後選擇步驟詳細資訊窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。如需您可以在執行詳細資訊頁面上檢視之執行資訊的詳細資訊,請參閱 執行詳細資訊概觀。
-
步驟 4:執行快速狀態機器執行
-
使用步驟 1 中提供的狀態機器定義建立快速狀態機器。請確定您也包含必要的 IAM 角色許可,如步驟 2 所述。
提示
若要與您先前建立的標準機器區別,請將 Express 狀態機器命名為
Gather-S3-Bucket-Info-Express
。 -
在 Gather-S3-Bucket-Info-Standard 頁面上,選擇開始執行。
-
在開始執行對話方塊中,執行下列動作:
-
(選用) 輸入自訂執行名稱以覆寫產生的預設值。
非 ASCII 名稱和記錄
Step Functions 接受包含非 ASCII 字元的狀態機器、執行、活動和標籤名稱。由於這類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用 ASCII 字元,以便在 CloudWatch 中追蹤指標。
-
選擇 Start execution (開始執行)。
-
Step Functions 主控台會引導您前往標題為執行 ID 的頁面。此頁面稱為執行詳細資訊頁面。在此頁面上,您可以在執行進行時或完成後檢閱執行結果。
若要檢閱執行結果,請在圖形檢視中選擇個別狀態,然後選擇步驟詳細資訊窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。如需您可以在執行詳細資訊頁面上檢視之執行資訊的詳細資訊,請參閱執行詳細資訊概觀。
-