Amazon SWF 示例使用 AWS CLI - AWS Command Line Interface

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

Amazon SWF 示例使用 AWS CLI

下列程式碼範例說明如何透過 AWS Command Line Interface 搭配 Amazon SWF 使用來執行動作和實作常見案例。

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

Scenarios (案例) 是向您展示如何呼叫相同服務中的多個函數來完成特定任務的程式碼範例。

每個範例都包含一個連結 GitHub,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

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

AWS CLI

計算已關閉工作流程執行

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

--domain和之--close-time-filter或是必要的--start-time-filter引數。所有其他參數都是可選的。

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引數來進一步篩選結果。但是,這些參數也是相互排斥的。

CountClosedWorkflowExecutions請參閱 Amazon 簡單工作流服務 API 參考

下列程式碼範例會示範如何使用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引數來進一步篩選結果。這些都是互斥的:您只能在請求中指定其中之一。

如需詳細資訊,請參閱 CountOpenWorkflowExecutions Amazon 簡易工作流程服務 API 參考

下列程式碼範例會示範如何使用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 DEPRECATED搭配使用list-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" } }

DeprecateDomain請參閱 Amazon 簡單工作流服務 API 參考

  • 如需 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" } }

DescribeDomain請參閱 Amazon 簡單工作流服務 API 參考

  • 如需 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" } ] }

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

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" } ] }

ListActivityTypes請參閱 Amazon 簡單工作流服務 API 參考

下列程式碼範例會示範如何使用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" } ] }

如需詳細資訊,請參閱 ListDomainsAmazon 簡易工作流程服務 API 參考

範例 2:列出已取代的網域

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

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

輸出:

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

如需詳細資訊,請參閱 ListDomainsAmazon 簡易工作流程服務 API 參考

範例 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==" }

如需詳細資訊,請參閱 ListDomainsAmazon 簡易工作流程服務 API 參考

示例 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 就不會傳回到結果中。

如需詳細資訊,請參閱 ListDomainsAmazon 簡易工作流程服務 API 參考

  • 如需 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

ListWorkflowTypes請參閱 Amazon 簡單工作流服務 API 參考

下列程式碼範例會示範如何使用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" } }

RegisterDomain請參閱 Amazon 簡單工作流服務 API 參考

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

下列程式碼範例會示範如何使用register-workflow-type

AWS CLI

註冊工作流程類型

若要向 AWS CLI 註冊工作流程類型,請使用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" }

--name--domain--workflow-version是必要的。您也可以設定工作流程說明、逾時和子工作流程原則。

如需詳細資訊,請參閱 RegisterWorkflowTypeAmazon 簡易工作流程服務 API 參考