使用 AWS SDK 服務整合收集 Amazon S3 儲存貯體資訊 - AWS Step Functions

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

使用 AWS SDK 服務整合收集 Amazon S3 儲存貯體資訊

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

步驟 1:建立狀態機

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

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

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

  3. 選擇選取。這會在設計模式中開啟工作流程工作室

  4. 在本教學課程中,您將在程式碼編輯器. 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],然後為該 IAM 角色提供 ARN。

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

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

    注意

    如果您刪除 Step Functions 建立的 IAM 角色,則 Step Functions 稍後無法重新建立。同樣地,如果您修改角色 (例如,透過從 IAM 政策中的主體移除 Step Functions),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. 選擇 建立政策

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

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

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

    1. (選擇性) 若要識別您的執行項目,您可以在「名稱」(Name) 方塊中指定執行項目的名稱。默認情況下,Step Functions 自動生成一個唯一的執行名稱。

      注意

      Step Functions 可讓您建立狀態機器、執行項目和活動的名稱,以及包含非 ASCII 字元的標籤。這些非 ASCII 名稱不適用於 Amazon CloudWatch。若要確保您可以追蹤 CloudWatch 量度,請選擇僅使用 ASCII 字元的名稱。

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

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

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

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

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

    提示

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

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

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

    1. (選擇性) 若要識別您的執行項目,您可以在「名稱」(Name) 方塊中指定執行項目的名稱。默認情況下,Step Functions 自動生成一個唯一的執行名稱。

      注意

      Step Functions 可讓您建立狀態機器、執行項目和活動的名稱,以及包含非 ASCII 字元的標籤。這些非 ASCII 名稱不適用於 Amazon CloudWatch。若要確保您可以追蹤 CloudWatch 量度,請選擇僅使用 ASCII 字元的名稱。

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

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

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