使用 AWS CLI 的 Amazon SWF 範例 - AWS Command Line Interface

使用 AWS CLI 的 Amazon SWF 範例

下列程式碼範例示範如何使用 AWS Command Line Interface 搭配 Amazon SWF 來執行動作,並實作常見案例。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會告訴您如何呼叫個別服務函數,但您可以在其相關情境中查看內容中的動作。

每個範例均包含完整原始程式碼的連結,您可在連結中找到如何在內容中設定和執行程式碼的相關指示。

主題

動作

以下程式碼範例顯示如何使用 count-closed-workflow-executions

AWS CLI

計算已關閉工作流程執行的數量

您可以使用 swf count-closed-workflow-executions 來擷取指定網域的已關閉工作流程執行數量。您可以指定篩選條件來計算特定類別的執行數量。

--close-time-filter--start-time-filter 引數之一--domain 引數為必要。所有其他引數為選用。

aws swf count-closed-workflow-executions \ --domain DataFrobtzz \ --close-time-filter "{ \"latestDate\" : 1377129600, \"oldestDate\" : 1370044800 }"

輸出:

{ "count": 2, "truncated": false }

如果 [截斷] 為 true,則 [計數] 代表 Amazon SWF 可傳回的數量上限。任何進一步的結果都會截斷。

若要減少傳回的結果數量,您可以:

修改 --close-time-filter--start-time-filter 值以縮小搜尋的時間範圍。這些皆為互斥:您在請求中只能指定其中一個。請使用 --close-status-filter--execution-filter--tag-filter--type-filter 引數來進一步篩選結果。不過,這些引數也是互斥的。

另請參閱《Amazon Simple Workflow Service API 參考》中的 CountClosedWorkflowExecutions

以下程式碼範例顯示如何使用 count-open-workflow-executions

AWS CLI

計算已開啟工作流程執行的數量

您可以使用 swf count-open-workflow-executions 來擷取指定網域的已開啟工作流程執行數量。您可以指定篩選條件來計算特定類別的執行數量。

--domain--start-time-filter 引數為必要。所有其他引數為選用。

aws swf count-open-workflow-executions \ --domain DataFrobtzz \ --start-time-filter "{ \"latestDate\" : 1377129600, \"oldestDate\" : 1370044800 }"

輸出:

{ "count": 4, "truncated": false }

如果 [截斷] 為 true,則 [計數] 代表 Amazon SWF 可傳回的數量上限。任何進一步的結果都會截斷。

若要減少傳回的結果數量,您可以:

修改 --start-time-filter 值以縮小搜尋的時間範圍。使用 --close-status-filter--execution-filter--tag-filter--type-filter 引數進一步篩選結果。這些都是互斥的:您在請求中只能指定其中一個

如需詳細資訊,請參閱《Amazon Simple Workflow Service API 參考》中的 CountOpenWorkflowExecutions

以下程式碼範例顯示如何使用 deprecate-domain

AWS CLI

棄用網域

若要棄用網域 (您仍可以看見該網域,但無法在上面建立新的工作流程執行或註冊類型),請使用 swf deprecate-domain。只有一個必要參數,--name,其採用您要棄用的網域名稱。

aws swf deprecate-domain \ --name MyNeatNewDomain ""

如同 register-domain,不會有輸出傳回。但如果您使用 list-domains 來檢視已註冊網域,您將會發現該網域已經棄用,且不再顯示於傳回的資料中。

aws swf list-domains \ --registration-status REGISTERED { "domainInfos": [ { "status": "REGISTERED", "name": "DataFrobotz" }, { "status": "REGISTERED", "name": "erontest" } ] }

如果您搭配使用 --registration-status DEPRECATEDlist-domains,您會看到已棄用的網域。

aws swf list-domains \ --registration-status DEPRECATED { "domainInfos": [ { "status": "DEPRECATED", "name": "MyNeatNewDomain" } ] }

您仍可以使用 describe-domain 來取得已棄用網域的資訊。

aws swf describe-domain \ --name MyNeatNewDomain { "domainInfo": { "status": "DEPRECATED", "name": "MyNeatNewDomain" }, "configuration": { "workflowExecutionRetentionPeriodInDays": "0" } }

另請參閱《Amazon Simple Workflow Service API 參考》中的 DeprecateDomain

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 DeprecateDomain

以下程式碼範例顯示如何使用 describe-domain

AWS CLI

取得網域相關資訊

如需取得特定網域的詳細資訊,請使用 swf describe-domain 命令。只有一個必要參數:--name,其採用您想要取得資訊的網域名稱。

aws swf describe-domain \ --name DataFrobotz { "domainInfo": { "status": "REGISTERED", "name": "DataFrobotz" }, "configuration": { "workflowExecutionRetentionPeriodInDays": "1" } }

您也可以使用 describe-domain 來取得已棄用網域的資訊。

aws swf describe-domain \ --name MyNeatNewDomain { "domainInfo": { "status": "DEPRECATED", "name": "MyNeatNewDomain" }, "configuration": { "workflowExecutionRetentionPeriodInDays": "0" } }

另請參閱《Amazon Simple Workflow Service API 參考》中的 DescribeDomain

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 DescribeDomain

以下程式碼範例顯示如何使用 list-activity-types

AWS CLI

列出活動類型

若要取得網域的活動類型清單,請使用 swf list-activity-types--domain--registration-status 引數為必要。

aws swf list-activity-types \ --domain DataFrobtzz \ --registration-status REGISTERED

輸出:

{ "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454150.451, "activityType": { "version": "1", "name": "confirm-user-email" }, "description": "subscribe confirm-user-email activity" }, { "status": "REGISTERED", "creationDate": 1371454150.709, "activityType": { "version": "1", "name": "confirm-user-phone" }, "description": "subscribe confirm-user-phone activity" }, { "status": "REGISTERED", "creationDate": 1371454149.871, "activityType": { "version": "1", "name": "get-subscription-info" }, "description": "subscribe get-subscription-info activity" }, { "status": "REGISTERED", "creationDate": 1371454150.909, "activityType": { "version": "1", "name": "send-subscription-success" }, "description": "subscribe send-subscription-success activity" }, { "status": "REGISTERED", "creationDate": 1371454150.085, "activityType": { "version": "1", "name": "subscribe-user-sns" }, "description": "subscribe subscribe-user-sns activity" } ] }

您可以使用 --name 引數來僅選取具有特定名稱的活動類型:

aws swf list-activity-types \ --domain DataFrobtzz \ --registration-status REGISTERED \ --name "send-subscription-success"

輸出:

{ "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454150.909, "activityType": { "version": "1", "name": "send-subscription-success" }, "description": "subscribe send-subscription-success activity" } ] }

若要擷取頁面中的結果,您可以設定 --maximum-page-size 引數。如果傳回的結果多於一頁能夠容納的結果數量,則將在結果集中傳回 "nextPageToken":

aws swf list-activity-types \ --domain DataFrobtzz \ --registration-status REGISTERED \ --maximum-page-size 2

輸出:

{ "nextPageToken": "AAAAKgAAAAEAAAAAAAAAA1Gp1BelJq+PmHvAnDxJYbup8+0R4LVtbXLDl7QNY7C3OpHo9Sz06D/GuFz1OyC73umBQ1tOPJ/gC/aYpzDMqUIWIA1T9W0s2DryyZX4OC/6Lhk9/o5kdsuWMSBkHhgaZjgwp3WJINIFJFdaSMxY2vYAX7AtRtpcqJuBDDRE9RaRqDGYqIYUMltarkiqpSY1ZVveBasBvlvyUb/WGAaqehiDz7/JzLT/wWNNUMOd+Nhe", "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454150.451, "activityType": { "version": "1", "name": "confirm-user-email" }, "description": "subscribe confirm-user-email activity" }, { "status": "REGISTERED", "creationDate": 1371454150.709, "activityType": { "version": "1", "name": "confirm-user-phone" }, "description": "subscribe confirm-user-phone activity" } ] }

您可以在 --next-page-token 引數 list-activity-types 中將 nextPageToken 值傳遞給下一個呼叫,擷取下一頁的結果:

aws swf list-activity-types \ --domain DataFrobtzz \ --registration-status REGISTERED \ --maximum-page-size 2 \ --next-page-token "AAAAKgAAAAEAAAAAAAAAA1Gp1BelJq+PmHvAnDxJYbup8+0R4LVtbXLDl7QNY7C3OpHo9Sz06D/GuFz1OyC73umBQ1tOPJ/gC/aYpzDMqUIWIA1T9W0s2DryyZX4OC/6Lhk9/o5kdsuWMSBkHhgaZjgwp3WJINIFJFdaSMxY2vYAX7AtRtpcqJuBDDRE9RaRqDGYqIYUMltarkiqpSY1ZVveBasBvlvyUb/WGAaqehiDz7/JzLT/wWNNUMOd+Nhe"

輸出:

{ "nextPageToken": "AAAAKgAAAAEAAAAAAAAAAw+7LZ4GRZPzTqBHsp2wBxWB8m1sgLCclgCuq3J+h/m3+vOfFqtkcjLwV5cc4OjNAzTCuq/XcylPumGwkjbajtqpZpbqOcVNfjFxGoi0LB2Olbvv0krbUISBvlpFPmSWpDSZJsxg5UxCcweteSlFn1PNSZ/MoinBZo8OTkjMuzcsTuKOzH9wCaR8ITcALJ3SaqHU3pyIRS5hPmFA3OLIc8zaAepjlaujo6hntNSCruB4" "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454149.871, "activityType": { "version": "1", "name": "get-subscription-info" }, "description": "subscribe get-subscription-info activity" }, { "status": "REGISTERED", "creationDate": 1371454150.909, "activityType": { "version": "1", "name": "send-subscription-success" }, "description": "subscribe send-subscription-success activity" } ] }

如果還有更多結果要傳回,則將與結果一起傳回 "nextPageToken"。如果沒有更多的結果頁面傳回,"nextPageToken" 將不會在結果集中傳回。

您可以使用 --reverse-order 引數來反轉已傳回結果的順序。這也會影響分頁結果。

aws swf list-activity-types \ --domain DataFrobtzz \ --registration-status REGISTERED \ --maximum-page-size 2 \ --reverse-order

輸出:

{ "nextPageToken": "AAAAKgAAAAEAAAAAAAAAAwXcpu5ePSyQkrC+8WMbmSrenuZC2ZkIXQYBPB/b9xIOVkj+bMEFhGj0KmmJ4rF7iddhjf7UMYCsfGkEn7mk+yMCgVc1JxDWmB0EH46bhcmcLmYNQihMDmUWocpr7To6/R7CLu0St1gkFayxOidJXErQW0zdNfQaIWAnF/cwioBbXlkz1fQzmDeU3M5oYGMPQIrUqkPq7pMEW0q0lK5eDN97NzFYdZZ/rlcLDWPZhUjY", "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454150.085, "activityType": { "version": "1", "name": "subscribe-user-sns" }, "description": "subscribe subscribe-user-sns activity" }, { "status": "REGISTERED", "creationDate": 1371454150.909, "activityType": { "version": "1", "name": "send-subscription-success" }, "description": "subscribe send-subscription-success activity" } ] }

另請參閱《Amazon Simple Workflow Service API 參考》中的 ListActivityTypes

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 ListActivityTypes

以下程式碼範例顯示如何使用 list-domains

AWS CLI

範例 1:列出已註冊的網域

下列 list-domains 命令範例會列出您已為帳戶註冊的 REGISTERED SWF 網域。

aws swf list-domains \ --registration-status REGISTERED

輸出:

{ "domainInfos": [ { "status": "REGISTERED", "name": "DataFrobotz" }, { "status": "REGISTERED", "name": "erontest" } ] }

如需詳細資訊,請參閱《Amazon Simple Workflow Service API 參考》中的 ListDomains

範例 2:列出已棄用的網域

下列 list-domains 命令範例會列出您已為帳戶註冊的 DEPRECATED SWF 網域。已棄用網域是無法註冊新工作流程或活動的網域,但仍可查詢該網域。

aws swf list-domains \ --registration-status DEPRECATED

輸出:

{ "domainInfos": [ { "status": "DEPRECATED", "name": "MyNeatNewDomain" } ] }

如需詳細資訊,請參閱《Amazon Simple Workflow Service API 參考》中的 ListDomains

範例 3:列出已註冊網域的第一頁

下列 list-domains 命令範例會列出您已使用 --maximum-page-size 選項為您帳戶註冊之 REGISTERED SWF 網域的第一頁。

aws swf list-domains \ --registration-status REGISTERED \ --maximum-page-size 1

輸出:

{ "domainInfos": [ { "status": "REGISTERED", "name": "DataFrobotz" } ], "nextPageToken": "AAAAKgAAAAEAAAAAAAAAA2QJKNtidVgd49TTeNwYcpD+QKT2ynuEbibcQWe2QKrslMGe63gpS0MgZGpcpoKttL4OCXRFn98Xif557it+wSZUsvUDtImjDLvguyuyyFdIZtvIxIKEOPm3k2r4OjAGaFsGOuVbrKljvla7wdU7FYH3OlkNCP8b7PBj9SBkUyGoiAghET74P93AuVIIkdKGtQ==" }

如需詳細資訊,請參閱《Amazon Simple Workflow Service API 參考》中的 ListDomains

範例 4:列出已註冊網域的指定單一頁面

下列 list-domains 命令範例會列出您已使用 --maximum-page-size 選項為您帳戶註冊之 REGISTERED SWF 網域的第一頁。

當您再次進行呼叫時,這次請在 --next-page-token 引數中提供 nextPageToken 的值,就會得到另一頁結果。

aws swf list-domains \ --registration-status REGISTERED \ --maximum-page-size 1 \ --next-page-token "AAAAKgAAAAEAAAAAAAAAA2QJKNtidVgd49TTeNwYcpD+QKT2ynuEbibcQWe2QKrslMGe63gpS0MgZGpcpoKttL4OCXRFn98Xif557it+wSZUsvUDtImjDLvguyuyyFdIZtvIxIKEOPm3k2r4OjAGaFsGOuVbrKljvla7wdU7FYH3OlkNCP8b7PBj9SBkUyGoiAghET74P93AuVIIkdKGtQ=="

輸出:

{ "domainInfos": [ { "status": "REGISTERED", "name": "erontest" } ] }

如果沒有後續的結果頁面可擷取,nextPageToken 就不會傳回到結果中。

如需詳細資訊,請參閱《Amazon Simple Workflow Service API 參考》中的 ListDomains

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 ListDomains

以下程式碼範例顯示如何使用 list-workflow-types

AWS CLI

列出工作流程類型

若要取得網域的工作流程類型清單,請使用 swf list-workflow-types--domain--registration-status 引數為必要。以下是簡單的範例。

aws swf list-workflow-types \ --domain DataFrobtzz \ --registration-status REGISTERED

輸出:

{ "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454149.598, "description": "DataFrobtzz subscribe workflow", "workflowType": { "version": "v3", "name": "subscribe" } } ] }

如同 list-activity-types,您可以使用 --name 引數來僅選取具有特定名稱的工作流程類型,並使用 --maximum-page-size 引數與 --next-page-token 進行協調,以將結果分頁。若要反轉傳回結果的順序,請使用 --reverse-order

另請參閱《Amazon Simple Workflow Service API 參考》中的 ListWorkflowTypes

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 ListWorkflowTypes

以下程式碼範例顯示如何使用 register-domain

AWS CLI

註冊網域

您可以使用 AWS CLI 來註冊新的網域。使用 swf register-domain 命令。有兩個必要參數,--name 採用網域名稱,--workflow-execution-retention-period-in-days 採用一個整數來指定在此網域保留工作流程執行資料的天數,最長為 90 天 (如需詳細資訊,請參閱 SWF 常見問題集 <https://aws.amazon.com/swf/faqs/#retain_limit>)。在超過指定的天數後,工作流程執行資料就不會保留下來。

aws swf register-domain \ --name MyNeatNewDomain \ --workflow-execution-retention-period-in-days 0 ""

註冊網域時,不會傳回任何內容 (""),但可以使用 swf list-domainsswf describe-domain 來查看新的網域。

aws swf list-domains \ --registration-status REGISTERED { "domainInfos": [ { "status": "REGISTERED", "name": "DataFrobotz" }, { "status": "REGISTERED", "name": "MyNeatNewDomain" }, { "status": "REGISTERED", "name": "erontest" } ] }

使用 swf describe-domain

aws swf describe-domain --name MyNeatNewDomain { "domainInfo": { "status": "REGISTERED", "name": "MyNeatNewDomain" }, "configuration": { "workflowExecutionRetentionPeriodInDays": "0" } }

另請參閱《Amazon Simple Workflow Service API 參考》中的 RegisterDomain

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 RegisterDomain

以下程式碼範例顯示如何使用 register-workflow-type

AWS CLI

註冊工作流程類型

若要向 CLI AWS 註冊工作流程類型,請使用 swf register-workflow-type 命令。

aws swf register-workflow-type \ --domain DataFrobtzz \ --name "MySimpleWorkflow" \ --workflow-version "v1"

如果成功,則命令不會產生輸出。

發生錯誤時 (例如,如果您嘗試註冊相同的工作流程類型兩次,或指定不存在的網域),您會在 JSON 中收到回應。

{ "message": "WorkflowType=[name=MySimpleWorkflow, version=v1]", "__type": "com.amazonaws.swf.base.model#TypeAlreadyExistsFault" }

--domain--name--workflow-version 為必要。您也可以設定工作流程描述、逾時和子工作流程政策。

如需詳細資訊,請參閱《Amazon Simple Workflow Service API 參考》中的 RegisterWorkflowType