

文档 AWS SDK 示例 GitHub 存储库中还有更多 [S AWS DK 示例](https://github.com/awsdocs/aws-doc-sdk-examples)。

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

# 使用 Amazon SWF 示例 AWS CLI
<a name="cli_2_swf_code_examples"></a>

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

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

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

**Topics**
+ [操作](#actions)

## 操作
<a name="actions"></a>

### `count-closed-workflow-executions`
<a name="swf_CountClosedWorkflowExecutions_cli_2_topic"></a>

以下代码示例演示了如何使用 `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` 参数可进一步筛选结果。但是，这些参数也是相互排斥的。  
另[CountClosedWorkflowExecutions](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_CountClosedWorkflowExecutions.html)请参阅 *Amazon 简单工作流程服务 API 参考*  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[CountClosedWorkflowExecutions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/swf/count-closed-workflow-executions.html)*中的。

### `count-open-workflow-executions`
<a name="swf_CountOpenWorkflowExecutions_cli_2_topic"></a>

以下代码示例演示了如何使用 `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` 参数进一步筛选结果。其中每一参数都是互斥的：您*只能在请求中指定其中一个*。  
有关更多信息，请参阅 CountOpenWorkflowExecutions 《*亚马逊简单工作流程服务 API 参考*》  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[CountOpenWorkflowExecutions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/swf/count-open-workflow-executions.html)*中的。

### `deprecate-domain`
<a name="swf_DeprecateDomain_cli_2_topic"></a>

以下代码示例演示了如何使用 `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"
            }
        }
```
另[DeprecateDomain](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_DeprecateDomain.html)请参阅 *Amazon 简单工作流程服务 API 参考*  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[DeprecateDomain](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/swf/deprecate-domain.html)*中的。

### `describe-domain`
<a name="swf_DescribeDomain_cli_2_topic"></a>

以下代码示例演示了如何使用 `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](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_DescribeDomain.html)请参阅 *Amazon 简单工作流程服务 API 参考*  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[DescribeDomain](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/swf/describe-domain.html)*中的。

### `list-activity-types`
<a name="swf_ListActivityTypes_cli_2_topic"></a>

以下代码示例演示了如何使用 `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](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ListActivityTypes.html)请参阅 *Amazon 简单工作流程服务 API 参考*  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[ListActivityTypes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/swf/list-activity-types.html)*中的。

### `list-domains`
<a name="swf_ListDomains_cli_2_topic"></a>

以下代码示例演示了如何使用 `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"
    }
  ]
}
```
有关更多信息，请参阅[ListDomains](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ListDomains.html)《*亚马逊简单工作流程服务 API 参考*》  
**示例 2：列出已弃用的域**  
以下 `list-domains` 命令示例列出已为您账户注册的 `DEPRECATED` SWF 域。已弃用的域是指无法注册新工作流或活动，但仍可以查询的域。  

```
aws swf list-domains \
    --registration-status DEPRECATED
```
输出：  

```
{
  "domainInfos": [
    {
      "status": "DEPRECATED",
      "name": "MyNeatNewDomain"
    }
  ]
}
```
有关更多信息，请参阅[ListDomains](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ListDomains.html)《*亚马逊简单工作流程服务 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](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ListDomains.html)《*亚马逊简单工作流程服务 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](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ListDomains.html)《*亚马逊简单工作流程服务 API 参考*》  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[ListDomains](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/swf/list-domains.html)*中的。

### `list-workflow-types`
<a name="swf_ListWorkflowTypes_cli_2_topic"></a>

以下代码示例演示了如何使用 `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`。  
另[ListWorkflowTypes](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ListWorkflowTypes.html)请参阅 *Amazon 简单工作流程服务 API 参考*  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[ListWorkflowTypes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/swf/list-workflow-types.html)*中的。

### `register-domain`
<a name="swf_RegisterDomain_cli_2_topic"></a>

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

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

```
aws swf register-domain \
    --name MyNeatNewDomain \
    --workflow-execution-retention-period-in-days 0
    ""
```
注册域时，不会返回任何内容 ("")，但您可以使用 `swf list-domains` 或 `swf 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](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_RegisterDomain.html)请参阅 *Amazon 简单工作流程服务 API 参考*  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[RegisterDomain](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/swf/register-domain.html)*中的。

### `register-workflow-type`
<a name="swf_RegisterWorkflowType_cli_2_topic"></a>

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

**AWS CLI**  
**注册工作流类型**  
要向 C AWS 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](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_RegisterWorkflowType.html)《*亚马逊简单工作流程服务 API 参考*》  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[RegisterWorkflowType](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/swf/register-workflow-type.html)*中的。