通过编程方式创建语音 Watson 服务的实例
安装 Watson 语音服务后,您必须在操作项目中创建至少一个 Watson 语音服务服务实例。 如果您是用户 IBM® Software
Hub ,则可通过 REST API /v3/service_instances 调用以编程方式创建服务实例。
- 谁需要完成这项任务?
- 要通过调用
/v3/service_instancesREST API 程序化地创建服务实例,您必须在 中拥有创建服务实例 IBM Software Hub (can_provision) 权限。
完成此任务所需的信息
在创建 Watson 语音服务的服务实例之前,请先查看以下信息:
- 版本需求
与实例 IBM Software Hub 相关的所有组件必须在同一版本中安装或创建。 例如,如果在版本上安装了 Watson5.3.1 语音服务,则必须在版本上创建服务 5.3.1 实例。
重要提示: Watson 语音服务采用与 IBM Software Hub.不同的版本号。 本主题包含一张表格,显示每次刷新时对应的 Watson 语音 IBM Software Hub服务版本。 请根据已 IBM Software Hub 安装的版本,通过此表查找对应的正确版本。
- 环境变量
本任务中的命令使用环境变量,因此您可以完全按照所写的命令运行。
- 若您尚未拥有定义环境变量的脚本,请参阅 《设置安装环境变量》。
- 要使用脚本中的环境变量,必须在本任务中运行命令之前加载这些环境变量。 例如,运行以下命令:
source ./cpd_vars.sh
开始之前
此任务要求满足以下先决条件:
| 预备条件 | 在何处查找更多信息 |
|---|---|
| Watson 语音服务已安装。 | 如果此任务尚未完成,请参阅安装 Watson 语音服务。 |
| 您已生成一个 API 密钥。 API密钥必须关联到在 中拥有创建服务实例 IBM Software
Hub( |
如果此任务尚未完成,请参阅生成 API 授权令牌。 |
过程
完成以下任务以创建服务实例:
创建服务实例
要创建服务实例:
- 切换到工作站上您希望创建定义服务实例有效负载的 JSON 文件的目录。
- 设置用于填充服务实例 JSON 负载的环境变量:
- 将
INSTANCE_NAME环境变量设置为要用作服务实例显示名称的唯一名称:export INSTANCE_NAME="<display-name>"此名称显示在 Web IBM Software Hub 客户端的实例页面上。
显示名称是一个字符串
string,可以包含字母数字字符(a-z、A-Z、0-9)、连字符(-)和句点(.)。显示名称最多可包含10个字符。
- 将
INSTANCE_VERSION环境变量设置 IBM Software Hub 为与集群中版本对应的版本:export INSTANCE_VERSION=<version>请使用下表确定相应的数值:
IBM Software Hub 版本 服务实例版本 5.3.1 5.3.1 5.3.0 5.3.0 - 将
SPEECH_CR环境变量设置为 Watson Speech services 自定义资源的名称:export SPEECH_CR=<resource-name>默认名称为
speech-cr。 不过,根据您是从较旧版本升级而来还是直接安装的新版本,您的名称可能会有所不同。 要检查自定义资源的名称,请运行:oc get WatsonSpeech --namespace=${PROJECT_CPD_INST_OPERANDS}
- 将
- 创建有效
speech-services-instance.json负载文件:cat << EOF > ./speech-services-instance.json{ "addon_type": "speech-to-text", "namespace": "${PROJECT_CPD_INST_OPERANDS}", "addon_version": "${INSTANCE_VERSION}", "display_name": "${INSTANCE_NAME}", "create_arguments": { "deployment_id": "${PROJECT_CPD_INST_OPERANDS}-${SPEECH_CR}", "parameters" : { "serviceId": "speech-to-text", "url": "https://${SPEECH_CR}-gdpr-data-deletion.${PROJECT_CPD_INST_OPERANDS}.svc.cluster.local:443/v3/service_instances", "watson": true } }, } EOF以下环境变量将使用您安装环境变量脚本中已定义的值:${PROJECT_CPD_INST_OPERANDS}
- 将
PAYLOAD_FILE环境变量设置为工作站上 JSON 有效负载文件的完全限定名称:export PAYLOAD_FILE=<fully-qualified-JSON-file-name> - 设置用于连接目标 IBM Software
Hub 服务实例所在实例的环境变量:
- 设置
CPD_ROUTE环境变量:export CPD_ROUTE=$(oc get route cpd -n ${PROJECT_CPD_INST_OPERANDS} -o jsonpath={".spec.host"})该命令使用了已在您的安装环境变量脚本中定义的变量
PROJECT_CPD_INST_OPERANDS。 - 将
API_KEY环境变量设置为您创建的 API 密钥:export API_KEY=<your_api_key>
- 设置
- 从有效负载文件创建服务实例。
您执行的命令取决于您要创建服务实例的实例所在位置 IBM Software Hub 所使用的证书类型——是自签名证书还是由受信任的证书颁发机构签发的证书。
该实例使用由可信证书颁发机构签名的证书
curl --request POST \ --url "https://${CPD_ROUTE}/zen-data/v3/service_instances" \ --header "Authorization: ZenApiKey ${API_KEY}" \ --header 'Content-Type: application/json' \ --data @${PAYLOAD_FILE}
该实例使用自签名证书(默认)
curl -k --request POST \ --url "https://${CPD_ROUTE}/zen-data/v3/service_instances" \ --header "Authorization: ZenApiKey ${API_KEY}" \ --header 'Content-Type: application/json' \ --data @${PAYLOAD_FILE}
如果请求成功,该命令将返回以下 HTTP 响应代码之一:- 200 - 请求已成功完成,服务实例已配置完毕。
- 202 - 请求已成功提交。 正在为服务实例分配资源。
如果请求未成功,请使用响应 HTTP 代码确定原因。
验证服务实例是否已创建
验证服务实例是否已创建:
- 将
INSTANCE_ID环境变量设置为由命令POSTcURL 返回的ID:export INSTANCE_ID=<ID-from-response> - 获取服务实例的状态。
您执行的命令取决于您要创建服务实例的实例所在位置 IBM Software Hub 所使用的证书类型——是自签名证书还是由受信任的证书颁发机构签发的证书。
该实例使用由可信证书颁发机构签名的证书
curl --request GET \ --url "https://${CPD_ROUTE}/zen-data/v3/service_instances/${INSTANCE_ID}" \ --header "Authorization: ZenApiKey ${API_KEY}" \ --header 'Content-Type: application/json'
该实例使用自签名证书(默认)
curl -k --request GET \ --url "https://${CPD_ROUTE}/zen-data/v3/service_instances/${INSTANCE_ID}" \ --header "Authorization: ZenApiKey ${API_KEY}" \ --header 'Content-Type: application/json'
- 如果请求成功,该命令将返回以下 HTTP 响应代码: 200在 JSON 响应中查找该
provision_status参数。- 如果值为
PROVISIONED,则服务实例创建成功。 - 如果该
PROVISION_IN_PROGRESS值为,请等待几分钟后重新运行该命令。 - 如果该
FAILED值为,请检查 和zen-watcherPodzen-core-api的日志以排查可能原因。
- 如果值为
- 如果请求未成功,请使用响应 HTTP 代码确定原因。
- 如果请求成功,该命令将返回以下 HTTP 响应代码: 200
下一步操作
服务实例已准备就绪,可供使用。 要开始使用 Watson 语音服务 ,请参阅 Watson 语音服务在 Cloud Pak for Data 上的说明。