啟動狀態機器執行以回應 Amazon S3 事件 - AWS Step Functions

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

啟動狀態機器執行以回應 Amazon S3 事件

您可以執行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

    注意

    Amazon S3 中所有AWS區域中所有現有儲存貯體名稱的儲存貯體名稱必須是唯一的。使用您自有的使用者名稱,以確保此名稱獨一無二。您需要在相同的 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:創建一個亞馬遜 EventBridge 規則

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

注意

您必須在與 Amazon S3 儲存貯體相同的AWS區域中設定 EventBridge 規則。

若要建立 規則

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

    提示

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

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

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

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

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

    1. 對於事件來源,請保留事件或 EventBridge 合作夥伴事件的AWS預設選項。

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

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

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

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

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

建立目標

  1. 目標 1 中,保留預設的AWS服務選項。

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

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

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

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

  6. 檢閱規則的詳細資訊,然後選擇 Create rule (建立規則)。

    規則隨即建立並顯示「規則」頁面,列出您的所有 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" } }