部署包装 API

Oracle Blockchain Platform Digital Assets Edition 可以在区块链应用构建器生成的链代码中为所有控制器 API 生成包装 API。完成以下步骤以在堆栈资源管理器中部署包装 API 软件包,并使用关联的 Postman 集合测试包装 API。

使用区块链应用程序构建器生成包装器 API 程序包时,它将在所选目录中创建两个具有默认命名约定的文件:

  • <ChaincodeName>WrapperAPI.zip:包含 Oracle Cloud Infrastructure (OCI) Resource Manager 中部署包装 API 所需的 Terraform 脚本的归档文件。
  • <ChaincodeName>_WrapperAPI.postman_collection.json:用于在部署后测试包装 API 的 Postman 集合。

要部署包装 API,请使用 WrapperAPI.zip 文件在 OCI 资源管理器中创建堆栈。

部署包装 API 软件包时必须满足以下先决条件。

  • 包装 API 包必须使用区块链应用程序构建器生成。
  • 程序包必须包括包装 API 的所有必需配置变量值和端点值。
  1. 登录 OCI。
    打开 OCI 控制台并登录:https://cloud.oracle.com/ 。确保您位于将部署堆栈的区间中。
  2. 展开导航菜单。选择 Developer Services 。在 Resource Manager(资源管理器)下,选择 Stacks(堆栈)。
    此时将打开堆栈的资源管理器界面。您可以使用 Terraform 配置查看现有堆栈、创建堆栈以及将基础设施作为代码进行管理。
  3. 单击创建堆栈。
  4. 配置堆栈信息。
    1. 在 Terraform 配置部分中,选择我的配置。
    2. 在 Terraform 配置源的堆栈配置中,选择 .Zip 文件。
    3. 单击浏览并导航到包装 API .zip 文件。
    4. 上载 .zip 文件后,请确保堆栈名称正确。
    5. 在 Terraform 版本下拉列表中,选择 v1.2 或更高版本。默认情况下,资源管理器使用最新版本。如果选择早于 v1.2 的版本,部署将失败。
    6. 所有剩余设置都可以保留为默认值。单击下一步。
  5. 配置堆栈变量。
    1. 验证所有配置变量值是否准确并与包装 API 程序包中指定的配置变量保持一致,以满足您的部署要求。
    2. 对于 ocir_user_name ,输入与 OCI 账户关联的电子邮件地址。
    3. 对于 ocir_user_password ,请输入您的密码,这是您的 OCI 验证令牌。您可以在 OCI 控制台的配置文件或用户设置部分中生成此令牌。验证令牌用作登录到 Oracle Cloud Infrastructure Registry 的密码。
      有关生成验证令牌的更多信息,请参见 Generating an Auth Token 。
    4. 所有剩余设置都可以保留为默认值。单击下一步。
  6. 查看堆栈信息。如果所有信息都正确,则单击创建。
  7. 运行 Terraform 计划。
    1. 在堆栈的详细信息页上,单击计划以开始创建执行计划。
    2. (可选)配置作业计划。您可以编辑默认名称,也可以选择高级选项来更改提供程序版本或调整设置。
    3. 单击计划以创建和运行计划作业。
      对您的 Terraform 配置进行语法分析,并生成和运行执行计划,从而完成以下任务:
      • 验证 Terraform 脚本以确保没有语法或配置错误。
      • 模拟资源创建流程,而无需对实际基础结构进行任何更改。
      • 提供输出摘要,其中列出了脚本将创建、修改或销毁的资源。
    4. 监视堆栈的作业部分中的状态。在计划成功完成后,查看输出以确认将创建的资源数,并验证是否不存在问题。
  8. 将 Terraform 计划应用于堆栈。
    1. 在堆栈的详细信息页上,单击应用。
    2. 在 Terraform 应用面板中,单击应用。
      应用 Terraform 计划将完成以下任务:
      • 提供 Terraform 脚本中定义的所有以下资源:
        • 虚拟云网络 (VCN)
        • 应用程序(OCI 函数)
        • API 网关
        • API 部署
        • IAM 策略
        • OCI 注册表存储库
      • 为包装 API 创建所有必需的基础结构。
    3. 监视堆栈的作业部分中的状态,以确保作业成功完成且无错误。
  9. 检索 API 网关端点。
    1. 应用作业完成后,转至应用作业页的输出部分以查看生成的输出值。
    2. 输出返回 JSON 对象,其中键表示端点名称,值是其对应的端点值:
      api_gateway_endpoints{"api_gateway_endpoint":"https://grqkdiwsugp3fp2m5z3zgpo4.apigateway.ap-mumbai-1.oci.customer-oci.com/WholesaleCBDC"}
    3. 复制端点。您需要端点来更新 API Postman 集合。
使用 Postman 测试包装 API

您可以使用 Postman 测试包装 API。通过分配相应的值配置包装 API Postman 集合中的所有变量。从 OCI 中提供动态生成的网关端点的堆栈部署的输出中获取 api_gateway_endpoint 值。

更新 Postman 集合中的变量后,您可以测试包装 API。集合中的每个 API 请求都包括特定于相应包装器 API 的必要有效负载。

图 4-1 使用 Postman 测试 API 包装器集合


图中显示了使用生成的网关 API 从集合运行 API 的 Postman。

以下信息可用于对部署和使用包装 API 时的问题进行故障排除。

未经授权:ocir_user_name 或 ocir_user_password 无效
当用户名或密码身份证明不正确时,会发生此错误。要解决此问题,请执行以下步骤:
  1. 导航到堆栈详细信息页中的变量部分。
  2. 单击编辑变量可修改用户名和口令值。
  3. 使用正确的信息更新身份证明。
  4. 单击应用以重新部署堆栈。
部署失败 - "denied: Anonymous user are only allowed read access on public repository"
有时,部署可能会失败,并出现以下错误:
denied: Anonymous users are only allowed read access on public repos

这是一个与堆栈后端的 Docker 操作相关的间歇性问题。具体而言,尝试在未进行正确验证的情况下将 Docker 映像推送到 Oracle Cloud Infrastructure Registry 时会出现此错误。

虽然包装器 API 软件包包含一个脚本,该脚本运行 docker login 命令以确保在推送映像之前进行正确的验证,但仍可能会偶尔出现此错误。通常,当系统在映像推送时无法正确识别 Docker 验证步骤时,会发生这种情况。

如果出现此错误,请按照以下步骤解决问题:

  1. 单击 OCI Stack Resource Manager 中的 Destroy(销毁),以销毁部署过程中创建的所有资源。
  2. 销毁资源后,再次单击应用以重新部署堆栈。这将触发必要的资源创建,包括正确的 Docker 验证。
一般部署失败:间歇性问题
堆栈部署有时可能会由于与 Docker 相关的随机问题而失败。发生这种情况时,请按照以下步骤解决问题:
  1. 单击 Destroy(销毁)可删除在失败的部署期间创建的所有资源。
  2. 销毁资源后,导航回堆栈,然后单击应用以重新部署堆栈。

这可以解决间歇性问题,并允许成功部署。