部署包装 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. 销毁资源后,导航回堆栈,然后单击应用以重新部署堆栈。

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