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

本文档仅适用于 AWS CLI 版本 1。有关 AWS CLI 版本 2 的相关文档,请参阅版本 2 用户指南

使用 AWS CLI 的 Amazon SWF 示例

以下代码示例演示了如何通过将 AWS Command Line Interface与 Amazon SWF 结合使用,来执行操作和实现常见场景。

操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。

每个示例都包含一个指向完整源代码的链接,您可以从中找到有关如何在上下文中设置和运行代码的说明。

主题

操作

以下代码示例演示了如何使用 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 }

如果“truncated”为 true,则“count”表示 Amazon SWF 可以返回的最大数量。任何其他结果都会被截断。

要减少返回结果的数量,您可以:

修改 --close-time-filter--start-time-filter 值以缩小搜索的时间范围。其中每一个参数都是互斥的:您只能在请求中指定其中一个。使用 --close-status-filter--execution-filter--tag-filter--type-filter 参数可进一步筛选结果。但是,这些参数也是相互排斥的。

另请参阅《Amazon Simple Workflow 服务 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 }

如果“truncated”为 true,则“count”表示 Amazon SWF 可以返回的最大数量。任何其他结果都会被截断。

要减少返回结果的数量,您可以:

修改 --start-time-filter 值以缩小搜索的时间范围。使用--close-status-filter--execution-filter--tag-filter--type-filter 参数进一步筛选结果。其中每一参数都是互斥的:您只能在请求中指定其中一个

有关更多信息,请参阅《Amazon Simple Workflow 服务 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" } ] }

如果您将 list-domains--registration-status DEPRECATED 一起使用,则会看到已弃用的域。

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

您可以将 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" } ] }

另请参阅《Amazon Simple Workflow 服务 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 服务 API 参考》中的 ListDomains

示例 2:列出已弃用的域

以下 list-domains 命令示例列出已为您账户注册的 DEPRECATED SWF 域。已弃用的域是指无法注册新工作流或活动,但仍可以查询的域。

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

输出:

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

有关更多信息,请参阅《Amazon Simple Workflow 服务 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 服务 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 服务 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 参数仅选择具有特定名称的工作流类型,并将 --next-page-token--maximum-page-size 参数结合使用来查看结果。要颠倒返回结果的顺序,请使用 --reverse-order

另请参阅《Amazon Simple Workflow 服务 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 服务 API 参考》中的 RegisterDomain

  • 有关 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" }

--domain--name--workflow-version 为必填。您还可以设置工作流描述、超时和子工作流策略。

有关更多信息,请参阅《Amazon Simple Workflow 服务 API 参考》中的 RegisterWorkflowType