本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
啟動狀態機以回應 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 目標。
-
若要建立基本狀態機器,請使用建立使用 Lambda 函數的狀態機教學課程。
-
如果您已經有
Helloworld
狀態機器,請移至下一個步驟。
步驟 1:在 Amazon S3 中創建一個存儲桶
現在您已經擁有Helloworld
狀態機器,您需要建立用於存放檔案的 Amazon S3 儲存貯體。在本教學課程的步驟 3 中,您會設定規則,以便在檔案上傳至此儲存貯體時 EventBridge 觸發狀態機器的執行。
-
導覽至 Amazon S3 主控台
,然後選擇「建立儲存貯體」以建立要在其中存放檔案的儲存貯體,並觸發 Amazon S3 事件規則。 -
輸入 Bucket name (儲存貯體名稱),例如
。username
-sfn-tutorial注意
值區名稱在所有現有值區名稱中必須是唯一的 AWS Amazon S3 中的區域。使用您自己的
username
以使此名稱具唯一性。您需要創建相同的所有資源 AWS 區域。 -
保留頁面上的所有預設選項,然後選擇 [建立值區]。
步驟 2:啟用 Amazon S3 事件通知 EventBridge
建立 Amazon S3 儲存貯體之後,請將其設定為在 S3 儲存貯體中發生某些事件 (例如檔案上傳) EventBridge 時將事件傳送至。
-
導覽至 Amazon S3 主控台
。 -
在儲存貯體名稱清單中,選擇要啟用事件的儲存貯體名稱。
-
選擇 Properties (屬性)。
-
向下捲動頁面以檢視「事件通知」區段,然後在 Amazon 子區 EventBridge段中選擇 「編輯」。
-
在「 EventBridge 針對此值區中的所有事件傳送通知至 Amazon」下方,選擇「開啟」。
-
選擇 Save changes (儲存變更)。
注意
啟用之後 EventBridge,變更大約需要五分鐘才會生效。
步驟 3:創建一個 Amazon EventBridge 規則
在您擁有狀態機器並建立 Amazon S3 儲存貯體並將其設定為傳送事件通知至之後 EventBridge,請建立 EventBridge 規則。
注意
您必須配置相同的 EventBridge 規則 AWS 區域作為 Amazon S3 存儲桶。
若要建立 規則
-
導覽至 Amazon 主 EventBridge 控台
,選擇建立規則。 提示
或者,在 EventBridge 主控台的導覽窗格中,選擇「匯流排」下的「規則」,然後選擇「建立規則」。
-
輸入規則的「名稱」(例如,
),並選擇性地輸入規則的「摘要」。S3Step Functions
-
對於「事件匯流排」和「規則類型」,保留預設選項。
-
選擇 Next (下一步)。這會開啟 [建置事件模式] 頁面。
-
向下捲動至「事件模式」區段,然後執行下列動作:
-
對於事件來源,請保留預設選取 AWS 活動或 EventBridge 合作夥伴活動。
-
針對 AWS 服務,請選擇 S imple Storage Service (S3)。
-
對於事件類型,請選擇 Amazon S3 事件通知。
-
選擇 [特定事件],然後選擇 [建立的物件]。
-
依名稱選擇特定值區,然後輸入您在步驟 1 (
) 中建立的值區名稱以儲存檔案。username
-sfn-tutorial -
選擇 Next (下一步)。這會開啟 [選取目標] 頁面。
-
建立目標
-
在目標 1 中,保留預設選取 AWS 服務。
-
在 [選取目標] 下拉式清單中,選取 [Step Functions 狀態機器]。
-
在 [狀態機器] 清單中,選取您先前建立的狀態機器 (例如
Helloworld
)。 -
保留頁面上的所有預設選項,然後選擇「下一步」。這會開啟 [設定標籤] 頁面。
-
再次選擇 Next (下一步)。這會開啟 [檢閱並建立] 頁面。
-
檢閱規則的詳細資訊,然後選擇建立規則。
規則隨即建立並顯示「規則」頁面,列出您的所有 Amazon EventBridge 規則。
步驟 4:測試 規則
現在一切都已就緒,請測試將檔案新增至 Amazon S3 儲存貯體,然後查看產生的狀態機器執行輸入。
-
將檔案新增至您的 Amazon S3 儲存貯體。
導覽至 Amazon S3 主控台
,選擇您建立用來存放檔案的儲存貯體 (
),然後選擇「上傳」。username
-sfn-tutorial -
例如,新增檔案
,然後選擇 [上傳]。test.png
這將啟動狀態機的執行,從中傳遞信息 AWS CloudTrail 作為輸入。
-
檢查狀態機器的執行狀況。
導覽至 Step Functions 主控台,然後選取 Amazon EventBridge 規則中使用的狀態機器 (
Helloworld
)。 -
選取該狀態機器的最近執行,然後展開 [執行輸入] 區段。
此輸入包含儲存貯體名稱和物件名稱等資訊。在真實世界使用案例中,狀態機器可以使用此輸入對該物件執行動作。
執行輸入的範例
下面的例子顯示了一個典型的輸入到狀態機執行。
{ "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:::
" ], "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" } }
username
-sfn-tutorial