使用收集 Amazon S3 存儲桶信息 AWS SDK 服務整合 - AWS Step Functions

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

使用收集 Amazon S3 存儲桶信息 AWS SDK 服務整合

本教程向您展示如何執行 AWS SDK與 Amazon 簡單存儲服務集成。您在本教學中建立的狀態機會收集 Amazon S3 儲存貯體的相關資訊,然後列出儲存貯體以及目前區域中每個儲存貯體的版本資訊。

步驟 1:建立狀態機

使用 Step Functions 主控台,您將建立一個狀態機器,其中包含列出目前帳戶和區域中所有 Amazon S3 儲存貯體的Task狀態。然後,您將添加另一個調用Task狀態HeadBucketAPI以驗證返回的存儲桶是否可以在當前區域中訪問。如果值區無法存取,則HeadBucketAPI呼叫會傳回S3.S3Exception錯誤。您將包含一個Catch塊來 catch 此異常和一個Pass狀態作為後備狀態。

  1. 開啟 Step Functions 主控台,然後選擇建立狀態機器

  2. 在「選擇範本」對話方塊中,選取「空白」。

  3. 選擇選以在中開啟工作流程工作室設計模式

  4. 在本教學課程ASL中,您將在程式碼編輯器. Amazon States Language 若要這麼做,請選擇 [程式碼]。

  5. 刪除現有的樣板代碼並粘貼以下狀態機定義。

    { "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 } } }
  6. 指定狀態機的名稱。若要執行此操作,請選擇的預設狀態機器名稱旁邊的編輯圖示MyStateMachine。然後,在 [狀態機器組態] 中,在 [狀態機器名稱] 方塊中指定名稱

    針對本教學課程,輸入名稱 Gather-S3-Bucket-Info-Standard

  7. (選擇性) 在狀態機器組態中,指定其他工作流程設定,例如狀態機器類型及其執行角色。

    保留狀態機器設定中的所有預設選項。

    如果您先前已建立具有狀態機器正確權限的IAM角色,並想要使用它,請在 [權限] 中選取 [選擇現有角色],然後從清單中選取角色。或選取 [輸入角色],ARN然後ARN為該IAM角色提供。

  8. 在 [確認角色建立] 對話方塊中,選擇 [確認] 以繼續。

    您也可以選擇 [檢視角色設定] 以返回 [狀態機器組態]。

    注意

    如果刪除 Step Functions 所建立的IAM角色,則 Step Functions 稍後無法重新建立。同樣地,如果您修改角色 (例如,從原則中的主參與者中移除 Step Functions),IAM則 Step Functions 稍後無法還原其原始設定。

    步驟 2 中,您將缺少的權限添加到狀態機器角色。

步驟 2:新增必要的IAM角色權限

若要收集目前區域中 Amazon S3 儲存貯體的相關資訊,您必須提供狀態機器存取 Amazon S3 儲存貯體的必要許可。

  1. 在狀態機器頁面上,選擇IAM角色ARN以開啟狀態機器角色的 [角色] 頁面。

  2. 選擇新增許可,然後選擇建立內嵌政策

  3. 選擇索JSON引標籤,然後將下列權限貼到JSON編輯器中。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketVersioning" ], "Resource": "*" } ] }
  4. 選擇檢閱政策

  5. 檢閱政策 下,針對政策 名稱 ,輸入 s3-bucket-permissions

  6. 選擇 Create policy (建立政策)。

步驟 3:執行標準狀態機器執行

  1. 在 [聚集-S3 儲存區資訊標準] 頁面上,選擇 [開始執行]。

  2. 在 [開始執行] 對話方塊中,執行下列動作:

    1. (選擇性) 輸入自訂執行名稱,以覆寫產生的預設值。

      非ASCII名稱和記錄

      Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。

    2. 選擇 Start execution (開始執行)

    3. Step Functions 主控台會將您導向至標題為執行 ID 的頁面。此頁面稱為「執行詳細資訊」頁面。在此頁面上,您可以在執行進行時或完成之後複查執行結果。

      若要複查執行結果,請在「圖形」檢視中選擇個別狀態,然後選擇步驟詳情窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。如需有關可在「執行詳細資訊」頁面檢視之執行資訊的詳細資訊,請參閱執行細節概述

步驟 4:執行快速狀態機器執行

  1. 使用步驟 1 中提供的狀態機定義建立 Express 狀態機。請確定您也包含必要的IAM角色權限,如步驟 2 所述。

    提示

    要與之前創建的標準機器區分開來,請將 Express 狀態機命名為Gather-S3-Bucket-Info-Express

  2. 在 [聚集-S3 儲存區資訊標準] 頁面上,選擇 [開始執行]。

  3. 在 [開始執行] 對話方塊中,執行下列動作:

    1. (選擇性) 輸入自訂執行名稱,以覆寫產生的預設值。

      非ASCII名稱和記錄

      Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。

    2. 選擇 Start execution (開始執行)

    3. Step Functions 主控台會將您導向至標題為執行 ID 的頁面。此頁面稱為「執行詳細資訊」頁面。在此頁面上,您可以在執行進行時或完成之後複查執行結果。

      若要複查執行結果,請在「圖形」檢視中選擇個別狀態,然後選擇步驟詳情窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。如需有關可在「執行詳細資訊」頁面檢視之執行資訊的詳細資訊,請參閱執行細節概述