使用 Amazon SWF 示例 Amazon CLI - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon SWF 示例 Amazon CLI

以下代码示例向您展示如何在 Amazon SWF 中使用来执行操作和实现常见场景。 Amazon Command Line Interface

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

场景是展示如何通过在同一服务中调用多个函数来完成特定任务任务的代码示例。

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

主题

操作

以下代码示例演示如何使用 count-closed-workflow-executions

Amazon CLI

计算已关闭的工作流程执行次数

您可以使用检索swf count-closed-workflow-executions给定域的已关闭工作流程执行次数。您可以指定过滤器来计算特定的执行类别。

--domain和 o --close-time-filterr --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

Amazon 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 《亚马逊简单工作流程服务 API 参考

以下代码示例演示如何使用 deprecate-domain

Amazon 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 的详细信息,请参阅Amazon CLI 命令参考DeprecateDomain中的。

以下代码示例演示如何使用 describe-domain

Amazon 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 的详细信息,请参阅Amazon CLI 命令参考DescribeDomain中的。

以下代码示例演示如何使用 list-activity-types

Amazon 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 参考

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考ListActivityTypes中的。

以下代码示例演示如何使用 list-domains

Amazon CLI

示例 1:列出您的注册域名

以下list-domains命令示例列出了您为账户注册的 REGISTERED SWF 域。

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

输出:

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

有关更多信息,请参阅ListDomains亚马逊简单工作流程服务 API 参考

示例 2:列出已弃用的域名

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

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

输出:

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

有关更多信息,请参阅ListDomains亚马逊简单工作流程服务 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==" }

有关更多信息,请参阅ListDomains亚马逊简单工作流程服务 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 不会在结果中返回。

有关更多信息,请参阅ListDomains亚马逊简单工作流程服务 API 参考

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考ListDomains中的。

以下代码示例演示如何使用 list-workflow-types

Amazon 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 参考

  • 有关 API 的详细信息,请参阅Amazon CLI 命令参考ListWorkflowTypes中的。

以下代码示例演示如何使用 register-domain

Amazon CLI

注册域名

您可以使用 Amazon CLI 注册新域名。使用 swf register-domain 命令。< https://aws.amazon.com/swf/faqs/#retain_limit >有两个必需的参数--name,分别是域名--workflow-execution-retention-period-in-days,以及使用整数来指定在此域上保留工作流程执行数据的天数,最长为 90 天(有关更多信息,请参阅 SWF 常见问题解答)。经过指定的天数后,工作流程执行数据将不会被保留。

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 的详细信息,请参阅Amazon CLI 命令参考RegisterDomain中的。

以下代码示例演示如何使用 register-workflow-type

Amazon CLI

注册工作流程类型

要向 C Amazon LI 注册工作流程类型,请使用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为必填项。您还可以设置工作流程描述、超时和子工作流程策略。

有关更多信息,请参阅RegisterWorkflowType亚马逊简单工作流程服务 API 参考