本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用收集 Amazon S3 存儲桶信息 AWS SDK 服務整合
本教程向您展示如何執行 AWS SDK與 Amazon 簡單存儲服務集成。您在本教學中建立的狀態機會收集 Amazon S3 儲存貯體的相關資訊,然後列出儲存貯體以及目前區域中每個儲存貯體的版本資訊。
步驟 1:建立狀態機
使用 Step Functions 主控台,您將建立一個狀態機器,其中包含列出目前帳戶和區域中所有 Amazon S3 儲存貯體的Task
狀態。然後,您將添加另一個調用Task
狀態HeadBucket
API以驗證返回的存儲桶是否可以在當前區域中訪問。如果值區無法存取,則HeadBucket
API呼叫會傳回S3.S3Exception
錯誤。您將包含一個Catch
塊來 catch 此異常和一個Pass
狀態作為後備狀態。
-
開啟 Step Functions 主控台
,然後選擇建立狀態機器。 在「選擇範本」對話方塊中,選取「空白」。
選擇選取以在中開啟工作流程工作室設計模式。
-
在本教學課程ASL中,您將在程式碼編輯器. Amazon States Language 若要這麼做,請選擇 [程式碼]。
-
刪除現有的樣板代碼並粘貼以下狀態機定義。
{ "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然後ARN為該IAM角色提供。
-
在 [確認角色建立] 對話方塊中,選擇 [確認] 以繼續。
您也可以選擇 [檢視角色設定] 以返回 [狀態機器組態]。
注意
如果刪除 Step Functions 所建立的IAM角色,則 Step Functions 稍後無法重新建立。同樣地,如果您修改角色 (例如,從原則中的主參與者中移除 Step Functions),IAM則 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:執行標準狀態機器執行
-
在 [聚集-S3 儲存區資訊標準] 頁面上,選擇 [開始執行]。
-
在 [開始執行] 對話方塊中,執行下列動作:
-
(選擇性) 輸入自訂執行名稱,以覆寫產生的預設值。
非ASCII名稱和記錄
Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。
-
選擇 Start execution (開始執行)。
-
Step Functions 主控台會將您導向至標題為執行 ID 的頁面。此頁面稱為「執行詳細資訊」頁面。在此頁面上,您可以在執行進行時或完成之後複查執行結果。
若要複查執行結果,請在「圖形」檢視中選擇個別狀態,然後選擇步驟詳情窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。如需有關可在「執行詳細資訊」頁面檢視之執行資訊的詳細資訊,請參閱執行細節概述。
-
步驟 4:執行快速狀態機器執行
-
使用步驟 1 中提供的狀態機定義建立 Express 狀態機。請確定您也包含必要的IAM角色權限,如步驟 2 所述。
提示
要與之前創建的標準機器區分開來,請將 Express 狀態機命名為
Gather-S3-Bucket-Info-Express
。 -
在 [聚集-S3 儲存區資訊標準] 頁面上,選擇 [開始執行]。
-
在 [開始執行] 對話方塊中,執行下列動作:
-
(選擇性) 輸入自訂執行名稱,以覆寫產生的預設值。
非ASCII名稱和記錄
Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。
-
選擇 Start execution (開始執行)。
-
Step Functions 主控台會將您導向至標題為執行 ID 的頁面。此頁面稱為「執行詳細資訊」頁面。在此頁面上,您可以在執行進行時或完成之後複查執行結果。
若要複查執行結果,請在「圖形」檢視中選擇個別狀態,然後選擇步驟詳情窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。如需有關可在「執行詳細資訊」頁面檢視之執行資訊的詳細資訊,請參閱執行細節概述。
-