啟動狀態機以回應 Step Functions 中的事件 - AWS Step Functions

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

啟動狀態機以回應 Step Functions 中的事件

您可以執行 AWS Step Functions 狀態機器以響應 Amazon EventBridge 規則。

本教學說明如何將狀態機器設定為 Amazon EventBridge 規則的目標。當檔案新增至 Amazon Simple Storage Service (Amazon S3) 儲存貯體時,此規則將啟動狀態機器執行。

對於實際的應用程式,您可以啟動狀態機器來對新增至儲存貯體的檔案執行操作,例如建立縮圖或針對影像和視訊檔案執行 Amazon Rekognition 分析。

在本教學中,您將檔案上傳到 Amazon S3 儲存貯體以開始執行Helloworld狀態機器。然後,您可以檢閱該執行的範例輸入,以識別傳送到的 Amazon S3 事件通知輸入中包含的資訊 EventBridge。

先決條件:建立狀態機器

您必須先建立狀態機器,才能將狀態機器設定為 Amazon EventBridge 目標。

步驟 1:在 Amazon S3 中創建一個存儲桶

現在您已經擁有Helloworld狀態機器,您需要建立用於存放檔案的 Amazon S3 儲存貯體。在本教學課程的步驟 3 中,您會設定規則,以便在檔案上傳至此儲存貯體時 EventBridge 觸發狀態機器的執行。

  1. 導覽至 Amazon S3 主控台,然後選擇「建立儲存貯體」以建立要在其中存放檔案的儲存貯體,並觸發 Amazon S3 事件規則。

  2. 輸入 Bucket name (儲存貯體名稱),例如 username-sfn-tutorial

    注意

    值區名稱在所有現有值區名稱中必須是唯一的 AWS Amazon S3 中的區域。使用您自己的 username 以使此名稱具唯一性。您需要創建相同的所有資源 AWS 區域。

  3. 保留頁面上的所有預設選項,然後選擇 [建立值區]。

步驟 2:啟用 Amazon S3 事件通知 EventBridge

建立 Amazon S3 儲存貯體之後,請將其設定為在 S3 儲存貯體中發生某些事件 (例如檔案上傳) EventBridge 時將事件傳送至。

  1. 導覽至 Amazon S3 主控台

  2. 儲存貯體名稱清單中,選擇要啟用事件的儲存貯體名稱。

  3. 選擇 Properties (屬性)。

  4. 向下捲動頁面以檢視「事件通知」區段,然後在 Amazon 子區 EventBridge段中選擇 「編輯」。

  5. 在「 EventBridge 針對此值區中的所有事件傳送通知至 Amazon」下方,選擇「開啟」。

  6. 選擇 Save changes (儲存變更)。

    注意

    啟用之後 EventBridge,變更大約需要五分鐘才會生效。

步驟 3:創建一個 Amazon EventBridge 規則

在您擁有狀態機器並建立 Amazon S3 儲存貯體並將其設定為傳送事件通知至之後 EventBridge,請建立 EventBridge 規則。

注意

您必須配置相同的 EventBridge 規則 AWS 區域作為 Amazon S3 存儲桶。

若要建立 規則

  1. 導覽至 Amazon 主 EventBridge 控台,選擇建立規則

    提示

    或者,在 EventBridge 主控台的導覽窗格中,選擇「匯流排」下的「規則」,然後選擇「建立規則」。

  2. 輸入規則的「名稱」(例如,S3Step Functions),並選擇性地輸入規則的「摘要」。

  3. 對於「事件匯流排」和「規則類型」,保留預設選項。

  4. 選擇 Next (下一步)。這會開啟 [建置事件模式] 頁面。

  5. 向下捲動至「事件模式」區段,然後執行下列動作:

    1. 對於事件來源,請保留預設選取 AWS 活動或 EventBridge 合作夥伴活動

    2. 針對 AWS 服務,請選擇 S imple Storage Service (S3)

    3. 對於事件類型,請選擇 Amazon S3 事件通知

    4. 選擇 [特定事件],然後選擇 [建立的物件]。

    5. 依名稱選擇特定值區,然後輸入您在步驟 1 (username-sfn-tutorial) 中建立的值區名稱以儲存檔案。

    6. 選擇 Next (下一步)。這會開啟 [選取目標] 頁面。

建立目標

  1. 目標 1 中,保留預設選取 AWS 服務

  2. [選取目標] 下拉式清單中,選取 [Step Functions 狀態機器]。

  3. 在 [狀態機器] 清單中,選取您先前建立的狀態機器 (例如Helloworld)。

  4. 保留頁面上的所有預設選項,然後選擇「下一步」。這會開啟 [設定標籤] 頁面。

  5. 再次選擇 Next (下一步)。這會開啟 [檢閱並建立] 頁面。

  6. 檢閱規則的詳細資訊,然後選擇建立規則

    規則隨即建立並顯示「規則」頁面,列出您的所有 Amazon EventBridge 規則。

步驟 4:測試 規則

現在一切都已就緒,請測試將檔案新增至 Amazon S3 儲存貯體,然後查看產生的狀態機器執行輸入。

  1. 將檔案新增至您的 Amazon S3 儲存貯體。

    導覽至 Amazon S3 主控台,選擇您建立用來存放檔案的儲存貯體 (username-sfn-tutorial),然後選擇「上傳」。

  2. 例如,新增檔案test.png,然後選擇 [上傳]。

    這將啟動狀態機的執行,從中傳遞信息 AWS CloudTrail 作為輸入。

  3. 檢查狀態機器的執行狀況。

    導覽至 Step Functions 主控台,然後選取 Amazon EventBridge 規則中使用的狀態機器 (Helloworld)

  4. 選取該狀態機器的最近執行,然後展開 [執行輸入] 區段。

    此輸入包含儲存貯體名稱和物件名稱等資訊。在真實世界使用案例中,狀態機器可以使用此輸入對該物件執行動作。

執行輸入的範例

下面的例子顯示了一個典型的輸入到狀態機執行。

{ "version": "0", "id": "6c540ad4-0671-9974-6511-756fbd7771c3", "detail-type": "Object Created", "source": "aws.s3", "account": "123456789012", "time": "2023-06-23T23:45:48Z", "region": "us-east-2", "resources": [ "arn:aws:s3:::username-sfn-tutorial" ], "detail": { "version": "0", "bucket": { "name": "username-sfn-tutorial" }, "object": { "key": "test.png", "size": 800704, "etag": "f31d8546bb67845b4d3048cde533b937", "sequencer": "00621049BA9A8C712B" }, "request-id": "79104EXAMPLEB723", "requester": "123456789012", "source-ip-address": "200.0.100.11", "reason": "PutObject" } }