View a markdown version of this page

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

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

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

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

步驟 1:建立狀態機器

使用 Step Functions 主控台,您將建立一個狀態機器,其中包含列出目前帳戶和區域中所有 Amazon S3 儲存貯體Task的狀態。然後,您將新增另一個Task狀態來叫用 HeadBucket API,以驗證傳回的儲存貯體是否可以在目前區域中存取。如果無法存取儲存貯體,HeadBucketAPI 呼叫會傳回S3.S3Exception錯誤。您將包含一個Catch區塊來擷取此例外狀況,並將 Pass 狀態做為備用狀態。

  1. 開啟 Step Functions 主控台,從功能表中選擇狀態機器,然後選擇建立狀態機器。

  2. 選擇從空白建立。

  3. 為您的狀態機器命名,然後選擇繼續在 Workflow Studio 中編輯您的狀態機器。

  4. 在本教學課程中,您將在 中撰寫狀態機器的 Amazon States Language(ASL) 定義程式碼編輯器。若要這樣做,請選擇程式碼。

  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. 選擇 Create policy (建立政策)。

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

  1. 在 Gather-S3-Bucket-Info-Standard 頁面上,選擇開始執行。

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

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

      非 ASCII 名稱和記錄

      Step Functions 接受包含非 ASCII 字元的狀態機器、執行、活動和標籤名稱。由於這類字元會阻止 Amazon CloudWatch 記錄資料,因此我們建議您僅使用 ASCII 字元,以便您可以追蹤 Step Functions 指標。

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

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

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

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

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

    提示

    若要區分您先前建立的標準機器,請將快速狀態機器命名為 Gather-S3-Bucket-Info-Express。

  2. 在 Gather-S3-Bucket-Info-Standard 頁面上,選擇開始執行。

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

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

      非 ASCII 名稱和記錄

      Step Functions 接受包含非 ASCII 字元的狀態機器、執行、活動和標籤名稱。由於這類字元會阻止 Amazon CloudWatch 記錄資料,因此我們建議您僅使用 ASCII 字元,以便您可以追蹤 Step Functions 指標。

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

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

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