7 API 支持
本章重点介绍了 DIVAnet 的 DIVArchive API 支持,并提供了有关如何使用 DIVArchive API 提供 DIVAnet 特定信息的信息。本章旨在与 DIVArchive C++ API、DIVArchive Java API 或 DIVArchive Web 服务 API 文档一起使用。
DIVAnet API 版本兼容性
DIVAnet 支持完整 DIVArchive API 命令集的一部分。有些 DIVArchive API 命令(如 EjectTape)在 DIVAnet MultiDiva 模式下会被拒绝。DIVAnet 2.2 支持 DIVArchive API 客户机发行版 7.3 和更低版本的客户机连接。DIVAnet 2.2 不支持在 7.3 之后添加到 API 的任何新功能。
对 DIVAnet 服务器发出 DIVA API 调用在很大程度上与对 DIVArchive 发出调用相同。但是,存在一些差异-DIVAnet 有时会以稍微不同的方式接受熟知的 DIVA API 参数。此外,DIVAnet 返回的字段内容可能与 DIVArchive 稍有不同,或者具有不同的格式。本节重点介绍了这些差异。
DIVAnet 2.2 要求连接的 DIVArchive 站点安装有 DIVArchive 7.3.1 或更高版本。然后 DIVArchive 站点可以独立地进行升级,而无需对 DIVAnet 升级。
对归档内容的操作
本节重点介绍了与归档内容的传输(或删除)相关的请求,包括归档、恢复、删除和复制。可以通过 DIVArchive API 调用这些命令。有些命令也可以从 DIVAnetUI 调用。有关 DIVArchive API 内每个命令的作用,请参阅Oracle DIVArchive 附加功能文档库中的《Oracle DIVArchive C++ API Programmer's Guide》。
注:
在 DIVAnet MultiDiva 模式下,DIVAnet 请求通常需要几则信息,直接向 DIVArchive 发出的请求则不需要。
由于所支持的功能,DIVAnet 请求通常需要其他信息。例如,可以使用 DIVAnet 中的 Copy 命令将内容从一个 DIVA 系统复制到另一个系统。DIVAnet 至少需要知道目标站点是什么。但是,DIVA API CopyToGroup 命令不包含 target site 参数。下面几节详细介绍了如何指定这样的其他信息。有关配置 DIVAnet MultiDiva 模式的更多信息,请参见配置客户机 API 端口。
表 7-1列出了受 DIVAnet 支持的 DIVArchive API 内容请求。为发出这些请求的客户机提供了相应的请求 ID,这样可以定期查询请求的状态。
表 7-1 支持的 DIVArchive 内容请求
请求
DIVAnet 中的行为
归档
使来自 Source/Destination 的数字资产(例如 FTP 或 CIFS 文件系统)可以传输并存储到本地 DIVArchive 站点或者其他选定的站点。
有关更多信息,请参见归档请求。
Restore
恢复实例
使 DIVAnet 对象可以恢复(传输)到 Source/Destination(例如 FTP 或 CIFS)。可以指定站点和(或)要恢复的实例,或者让 DIVAnet 选择最佳站点。
DIVAnet 决定它是否应该 (1) 从本地 DIVArchive 恢复对象,(2) 使用远程 DIVArchive 直接恢复对象,或者 (3) 从远程 DIVArchive 拉取对象,然后将它传输到选定的 Source/Destination。
恢复实例允许恢复特定站点上的特定实例。如果出现故障,则可以将 DIVAnet 配置为在其他站点上重试。
有关更多信息,请参见恢复请求。
部分恢复
部分恢复实例
以与完全恢复类似的方式部分恢复对象。
如果在远程系统上发出部分文件恢复,则该 DIVA 站点必须以与本地站点类似的方式配置为进行部分恢复。
复制 (CopyToGroup)
将内容从一个 DIVA 站点复制到另一个站点(站点间复制),或者在 DIVA 站点上的新介质上创建对象的另一个实例(与在单个 DIVA 系统上发出 CopyToGroup 等效)。
可以将特定的实例复制到目标站点。不支持 CopyToNew 消息。可以将 DIVAnet 配置为在给定的时间段内重试。
有关更多信息,请参见复制请求。
删除
删除实例
删除所有站点、特定站点中的内容,或者删除特定站点上的特定实例。如果对象在要删除的站点上已锁定,则可以将 DIVAnet 配置为在给定的时间段内重试。
有关更多信息,请参见删除请求。
归档请求
归档请求允许调用方归档存在于特定 Source/Destination(在 DIVArchive 中配置)上的内容。DIVA API 进行安排以实现从 Source/Destination 到 DIVArchive 的传输。这与基于 Web 的云 API 不同,在后者中通过 HTTPS 直接从请求方传输内容。默认情况下,DIVAnet 归档到本地站点。
向 DIVAnet 发出的归档请求与直接向 DIVArchive 发出的请求类似,但是向 TargetSitename(内容所要归档到的 DIVArchive 站点)附加了一些信息。通常,DIVAnet 将归档到本地站点。但是,可以通过以下两种方式之一直接归档到其他站点:
通过在选项字段中提供 -site {sitename} 选项。例如 -site diva1。
通过在归档请求中的介质参数前加上目标站点名称。例如,sitename1_TapeGroup1 表示目标站点名为 sitename1,介质为 TapeGroup1。
DIVAnet 不支持对归档命令的连续重试,但支持 BackupArchiveSite 选项,该选项支持在主站点关闭时使用备用归档站点。
恢复请求
恢复请求允许客户机恢复存在于归档系统中的内容。内容到达在请求中选择的特定 Source/Destination。DIVA API 安排从 DIVArchive 站点直接到 Source/Destination(如 FTP 或 CIFS 磁盘)的传输。这与基于 Web 的云 API 不同,在后者中通过 HTTPS 直接向请求方传输内容。
使用 DIVAnet 恢复内容时,调用方无需知道哪个特定的 DIVA 系统具有内容。而且,如果从一个 DIVA 站点检索内容时失败,则可以自动查询另一个 DIVA 站点检索内容。
DIVAnet 支持恢复到任何 DIVAnet 站点上的任何 Source/Destination。DIVAnet 将根据需要从其他站点检索内容以满足请求,最终将内容传输到目标 Source/Destination。
发向 DIVAnet 的恢复请求类似于直接发向 DIVArchive 的恢复请求,但是有一些附加信息。通常,DIVAnet 选择最佳站点来进行恢复。但是,DIVAnet 也允许客户机指定用于恢复的特定站点。可以通过以下几种方式执行此操作:
-site:通常,由 DIVAnet 选择用于恢复的站点。但是,通过在请求的选项字段中提供 -site [sitename] 选项,可以基于特定站点进行恢复。如果实际上内容不在选定的站点上,则操作将失败。
实例 ID:如果需要完全控制源,则可以在恢复请求中提供实例编号。这样,您就可以选择源站点和恢复所基于的 DIVA 实例(请参见下一节)。可以通过执行 getObjectInfo() API 调用或通过在 DIVAnet UI 中查看对象来获取此实例 ID。
在这两种情况下,都会禁用重试。
恢复工作流
为满足恢复请求,DIVAnet 使用表 7-2中介绍的恢复方法。DIVAnet 将基于参数(如目标 Source/Destination 和源对象)来动态选择要使用的恢复工作流。为决定使用哪个站点,DIVAnet 会询问一系列问题,其中包括:
对象在本地 DIVArchive 系统上是否可用?
对象是否具有磁盘实例?
Source/Destination 是否可从远程 DIVArchive 系统访问?
Source/Destination 是否可从本地站点访问?
DIVArchive 是在源还是目标站点上运行?
在配置文件中一个站点是否优先于另一个站点?
表 7-2 DIVAnet 恢复方法
方法
说明
本地
对象存在于本地站点上时使用。本地站点是向其发送消息的 DIVArchive 系统站点名称。本地 DIVArchive 系统也视为本地站点的一部分。
直接远程
DIVAnet 可以进行安排以使远程 DIVA 系统执行恢复操作。仅当在远程 DIVA 系统中也配置了目标 Source/Destination 时,它才会这样做。Source/Destination 名称必须匹配,且它们都必须引用同一服务器或磁盘(以及该磁盘上的路径,如果适用)。
如果可用,则 DIVAnet 首选此方法,而不是使用站点间复制来执行恢复。
使用站点间复制
如果内容不在本地,并且远程 DIVA 系统无法直接恢复到目标 Source/Destination,DIVAnet 可以安排用两个跃点传送内容。
首先,远程 DIVA 恢复到在源站点和目标站点之间共享的某个 Source/Destination 。然后,本地 DIVA 将归档对象,并最终恢复到目标 Source/Destination。这样,以后请求该内容时检索速度会快得多。
如果需要始终通过创建近线复制来执行远程恢复,请在工作流配置文件中将 AllowDirectRemoteRestores 设置为 false。
使用站点间传输
在某些情况下,当 DIVAnet 无法执行直接远程恢复时,DIVAnet 将用两个跃点传送内容(如同使用站点间复制进行恢复),但实际上并不在本地归档内容。Oracle 部分文件恢复就属于这种情况。
首先,DIVAnet 将指示源 DIVA 将内容传输到源和目标 DIVA 站点均可访问的 Source/Destination。然后本地 DIVA 站点将内容传输到目标 Source/Destination,但不将其归档。
源和目标
DIVAnet 允许您恢复到任何站点上的可用 Source/Destination 。如果两个站点上存在同名的 Source/Destination ,则 DIVAnet 会假定这两个配置指向同一物理 Server\Device\Path。在各个站点上为 Source/Destination 分配名称时,用户必须格外小心。
如果远程 DIVA 系统无法直接恢复到目标 Source/Destination,DIVAnet 可以安排用两个跃点传送内容(请参见“使用站点间传输进行恢复”)。仅当 Source/Destination 是特定 Source/Destination 的首选站点时,DIVAnet 才会安排此操作(请参见首选的源/目标映射)。
重试
可以将 Restore 命令配置为在第一次恢复失败后重试若干次。如果要恢复的内容存在于多个站点上,则 DIVAnet 将自动用这些站点重试恢复。可以配置最大重试次数。在某些情况下,DIVAnet 会决定用同一站点进行重试,然后再转到其他站点。在此情况下,DIVAnet 将检查 RestoreRetryIntervalMins 值来确定用同一站点进行重试之前要等待多长时间。
限制
DIVAnet 2.2 支持 DIVArchive API 命令的一部分。有关受支持消息的列表,请参阅本章。
DIVAnet 2.2 对多重恢复提供有限支持。DIVAnet 不允许对远程 Source/Destination 进行多重恢复,并且不允许通过 UI 查看或监视多个 Source/Destination。如果对象在本地,则可以使用多重恢复,但是无法访问它(例如,它已在本地外部化)。
DIVAnet 2.2 不支持对等站点关系,包括负载平衡。
Oracle 部分文件恢复请求
除了内容的完全恢复外,DIVAnet 还支持部分文件恢复。DIVAnet 确定内容所在的站点,然后安排部分恢复。
如果对象在远程 DIVA 系统上,并且远程 DIVA 系统无法访问恢复的目标 Source/Destination,DIVAnet 将用两步来传输内容:首先使用远程 DIVA 将内容传输到本地 DIVA(而不是传输整个对象),然后使用本地 DIVA 将内容恢复到目标 Source/Destination。
与恢复一样,可以指定实例编号或 -site 参数以便从特定的站点执行恢复,或者指定在初始站点失败时的重试次数。与恢复一样的还有,不支持恢复到同一恢复请求内的多个目标。
复制请求
复制请求将从现有的实例创建已归档内容的新实例。DIVAnet 允许将内容从一个 DIVA 站点复制到另一个站点。DIVArchive API CopyToGroup 命令 (1) 将对象从一个 DIVA 站点复制到另一个站点,或者 (2) 只在单个站点上创建新实例。为了复制,DIVAnet 需要派生一些 DIVA API 中未提供的参数。表 7-3介绍了这些参数。
表 7-3 DIVAnet 复制所派生的参数
派生的属性
说明
目标站点名称
表示对象应该复制到的站点。
目标站点名称不作为 DIVA API 中的结构化字段存在。可通过以下两种方法之一将此传送到 DIVAnet:
-site 选项:通过在选项字段中提供 -site [sitename] 选项。一个示例为 -site sitename1。
站点名称介质前缀:通过在复制请求中的介质参数前加上目标站点名称(由下划线 (_) 分隔两个字段)。例如,sitename1_TapeGroup1 表示复制目标站点名为 sitename1,介质为 TapeGroup1)。
如果未指定站点名称,则将假定为本地站点。-site 关键字仅对 API 发行版 7.3 或更高版本起作用。
介质
Media 表示用于存储所复制对象的介质的类型。DIVAnet 还允许将 DIVA 存储计划作为介质名称提供。仅当复制是站点间复制时,存储计划才起作用。
也可以在介质前加上目标站点名称,以表示目标站点名称。
如果您不确定要提供哪个介质,则可以提供 any 介质让系统选择要存储到目标站点上的哪个介质。例如,介质 diva1_any 复制到站点 diva1,但是 DIVAnet 选择该介质。DIVAnet 提供的默认值可能不适合某些用例。
如果对象已在目标站点上,并且指定了 any,则系统将仅返回成功。
源站点名称
(实例 ID)
通常,DIVAnet 将选择要从其复制的站点。但是,如果需要完全控制源,则可以在复制请求中提供实例编号。这将隐式允许选择源站点和要从其复制的 DIVA 实例(请参见下一节)。通过对要复制的对象执行 getObjectInfo() API 调用,可以获取此 ID。
站点间传输方法
在 DIVAnet 复制请求中,如果源站点与目标站点相同,则 DIVAnet 只能向目标 DIVA 站点发出 CopyToGroup。对于站点间复制,DIVAnet 允许配置用于执行这些复制的方法。对于每个源和目标站点名称对(例如,site1 到 site2),表 7-4列出了可用的传输方法。
除了复制方法外,每个源和目标站点名称对还包含用于公共存储区的实际 Source/Destination。默认目标介质(对于 RestoreAndArchive)、选项参数(已传递到 DIVArchive)和其他参数也是可配置的。
表 7-4 站点间复制方法
类型
说明
RestoreAndArchive
使用此选项,DIVAnet 将内容从源站点恢复到源站点和目标站点共享的 Source/Destination。然后,DIVAnet 指示目标 DIVArchive 系统归档当前位于公共存储区中的内容。这是替代“放置文件夹”的一种方法。
RestoreAndMonitor
使用此方法,DIVAnet 通过首先将内容恢复到特定的目标来执行复制。然后 DIVAnet 转为监视目标 DIVArchive 系统,以确定内容何时在目标站点上成功归档。仅当在目标站点上成功归档内容时,请求才成功完成。
此方法依赖于提取内容并将其归档到目标 DIVA 系统中的另一个进程或程序。在结合使用 DIVArchive 放置文件夹监控器 (Drop Folder Monitor, DFM) 软件时,此选项很有用。每个 DFM 文件夹都配置为使用预先选定的介质进行归档,这表示使用 DFM 进行复制时,实际上会忽略介质参数。
Restore
使用此方法,DIVAnet 将通过恢复到特定的目标来执行复制,恢复后就返回成功。此方法不确认内容成功归档到目标站点中,并且如果尝试“使用站点间复制进行恢复”工作流,则很可能会失败。
如果对象的实例已在目标站点中所请求的介质上,则 DIVAnet Copy 命令将返回成功。在这种情况下,DIVArchive 将终止请求。
本地复制
如果请求将某对象复制到一个站点,该站点已存在此对象但未使用所请求的介质,DIVAnet 将使用在请求中指定的介质在该站点上创建此对象的另一个实例。此情况的例外是提供 any 作为介质。在这种情况下,DIVAnet 不会创建另一个实例。
由 DIVAnet 选择(介质为 any)
在 DIVAnetUI 中,有一个选项可允许 DIVAnet 为复制操作分配目标介质(使用 Selected By DIVAnet 介质)。通过在复制请求中指定介质 any,可以在 DIVA API 请求中达到相同的效果。DIVAnet 将使用其配置确定用于复制的介质(有关更多信息,请参见站点间映射)。
传递了 any 且对象已在目标站点上时,DIVAnet 不会创建此对象的另一个实例。不会采取进一步的操作,请求将成功。
重试
DIVAnet 还支持对复制定期重试。如果在工作流配置文件中启用了重试,DIVAnet 将重试失败的复制操作。在工作流配置文件中,可以配置 DIVAnet 重试请求的时间长度以及重试的等待间隔。有关更多信息,请参见配置工作流配置文件。
删除请求
DIVArchive 删除请求允许调用方删除已归档的对象。默认情况下,DIVAnet 删除请求将删除所有 DIVArchive 站点中的对象。DIVAnet 删除实例请求可以删除单个 DIVA 站点中的一个或所有实例。因此,实际上,DIVAnet 可以执行三种删除操作。表 7-5介绍了删除类型和它们所需的参数。
表 7-5 删除类型
类型
派生属性
说明
全局删除
无
删除所有站点上的所有对象实例。
在 API 中,请求中未指定介质或实例 ID 会导致指定的对象从所有站点中删除。
实例删除
目标站点名称
删除特定站点上的单个对象实例。
在 API 中,指定实例 ID 或介质可删除特定站点中的特定对象实例。
如果指定实例 ID,则以特定站点上的特定实例为目标。传递介质或选项参数是不必要的。
如果指定了介质,则 DIVAnet 需要知道要从其删除的站点。可通过以下三种方式之一指定站点:
介质的站点名称前缀:可以在介质前加上站点名称。例如,siteA_tapeGroup1 指示 DIVAnet 删除 siteA 上具有介质 tapeGroup1 的实例。如果未提供站点名称,则将假定为本地站点。
-site 选项:在选项字段中提供 -site [sitename],并提供介质。这受 DIVArchive API 7.3 或更高版本支持。
介质(不带站点):传递不带站点的介质。在这种情况下,将假定为本地站点。
站点删除
目标站点名称
删除驻留在特定站点上的对象的所有实例。可通过以下三种方式之一完成此操作:
使用 DIVAnetUI:通过从 DIVAnetUI 发出删除命令,可以删除特定站点上的所有实例。
站点名称/介质 any:通过在介质字段中提供站点名称和介质 any(例如,siteA_any),借助 API 发出删除实例命令。
-site 选项:通过在选项字段中提供 -site [sitename],指定站点名称。这受 DIVArchive API 7.3 或更高版本支持。
站点删除(介质 any)
如上表所示,如果提供了站点名称和介质 any,则将导致从选定站点中删除对象的所有实例。通过在选项字段中传递 -site [sitename],也可以完成此操作。
最后一个实例
尝试删除已归档对象的最后一个实例(即存在于 DIVAnet 数据库中的最后一个实例)时,DIVAnet 不会允许“实例删除”成功。在这种情况下,将需要发出全局删除或站点删除请求。但请注意,站点删除将允许删除最后一个或多个实例!可以使用访问规则来阻止实际上是全局删除的实例删除或站点删除(有关更多信息,请参见配置访问规则)。
此外,如果用户直接向 DIVArchive 发出删除指令,则可能存在 DIVAnet 无法确保保留最后一个实例的时间窗口。
重试和取消
如果 DIVAnet 收到删除指令,且 DIVAnet 当前正在执行对象的站点间复制,则已衍生副本的 DIVAnet 请求将被取消。副本可能是复制命令的结果,也可能是执行复制以满足恢复的还原命令的结果。不会取消其他类型的 DIVAnet 请求。
如果代表 DIVAnet 请求执行 DIVArchive 请求,则 DIVArchive 将锁定对象并阻止将其删除。因此,如果在 DIVAnet 可以将删除消息发送到 DIVArchive 之前对象已锁定,则删除请求将失败。
删除失败时,DIVAnet 支持定期重试删除。如果在工作流配置文件中已启用,则 DIVAnet 将一直尝试站点(例如,要删除的实例/对象已锁定)上的删除操作。可以在 DIVAnet 内配置重试的持续时间。
其他受支持的命令
表 7-6标识不专门处理或传输归档内容的 DIVArchive API 命令。这些命令获取有关对象或请求的信息,系统没有为其分配请求 ID。
表 7-6 与内容无关的其他受支持 DIVArchive 命令
请求
说明
DIVAnet 中的行为
Cancel
取消 DIVAnet 请求。
-site 选项不适用于此命令。
GetObjectInfo
使用 DIVAnet 数据库获取有关已归档对象的信息。
DIVAnet 返回所有 DIVAnet 站点上对象的所有实例。请提供对象名称和对象类别(可以将类别留空,但是如果多个对象具有相同的对象名称,则调用将失败)。DIVAnet 使用 DIVAnet 数据库返回有关已归档对象的信息。
在 GetObjectInfo() 响应中,DIVAnet 将站点名称置于每个对象实例的介质参数之前。
此命令不支持 -site 选项。
GetRequestInfo
从 DIVAnet 数据库中检索有关 DIVAnet 请求的信息。
注:Additional Information 参数具有限制。其他信息由 DIVArchive 提供,表示所处理的上一 DIVA 请求的信息。此信息不反映 DIVAnet 网络中的其他站点。
当 DIVAnet 收到 GetRequestInfo() 调用时,它提供有关 DIVAnet 请求而非 DIVArchive 请求的信息(虽然 DIVAnet 请求通常涉及调用一个或多个 DIVArchive 请求)。
-site 选项不适用于此命令。
GetFilesAndFolders
直接从 DIVArchive 检索有关特定归档对象内文件和文件夹的信息。
接受 -site 选项以查询特定的站点,或者在无站点时让 DIVAnet 选择站点(推荐)。
GetObjectDetailsList
从 DIVArchive 检索有关对象和对象事件的信息。DIVAnet 直接从每个 DIVArchive 系统检索对象信息,一次一个站点,以循环方式,每个站点一个批处理。
每个批处理都包含一个 DIVA 站点中的信息。如果同一对象存在于两个站点上,则会收到该对象两次(每个站点一次),每个批处理中收到一次。
注:不保证所返回条目的顺序。如果一个 DIVA 站点已关闭,则 GetObjectDetailsList() 将返回错误,且命令的处理将停止。
通过在介质字段前加上站点名称(由下划线 (_) 分隔),可以从一个站点检索信息。如果不希望在介质上查询,但是仍希望从一个站点检索信息,则可以在介质字段中仅提供站点名称。此命令不接受 -site 选项。
GetObjectsList
查询 DIVAnet 数据库以获取对象名称和类别的列表(InitObjectList、CloseObjectList)。
DIVAnet 为此命令提供有限的支持。不支持磁带信息查询;且对并发查询数有限制。不支持 -site 选项。
GetArrayList
返回所有站点中阵列名称的列表(包括构成每个阵列的磁盘),并返回当前磁盘容量。
在选项字段中传递的 -site 参数可以返回特定站点的信息。
GetGroupsList
返回所有站点中磁带组名称的列表。在组名称前加上了站点名称。
注:此命令没有选项字段。因此,不支持 -site 选项。
GetSourceDestinationList
返回所有站点中源和目标信息的列表。
在返回的列表中,源或目标名称前加上了源或目标的站点名称,由下划线 (_) 分隔。
在选项字段中传递的 -site 参数可以返回特定站点的信息。
GetArchiveSystemInfo
检索单个 DIVArchive 站点的状态(默认情况下,返回本地站点)。不返回所有站点的全局视图。
在选项字段中传递的 -site 参数选择要从中收集信息的站点。例如,-site diva1 将 GetArchiveSystemInfo 请求路由到站点名称指定为 diva1 的管理器,且仅返回 diva1 的归档系统信息。
GetStoragePlanList
检索在配置的所有 DIVArchive 站点中定义的存储计划的列表。
在返回的列表中,存储计划名称前加上了存储计划的站点名称,由下划线 (_) 分隔。
在选项字段中传递的 -site 参数 passwd 将返回特定站点的信息。
GetObjectsByFilename
DeleteFile
DIVArchive AMC 产品使用调用(仅供内部使用)。此发行版仅支持在本地站点上存在所有所需的 DIVArchive AMC 对象的工作流。内容副本可存在于其他站点并可从其他站点恢复。
DIVAnet 在本地站点上调用这些命令。如果本地站点关闭,则在其他站点调用 GetObjectsByFilename。有限序列支持。
不支持的请求
考虑到应用程序兼容性,以下命令将始终返回成功,即使 DIVAnet 未采取操作来执行命令。
更改优先级
锁定对象
解除锁定对象
链接对象
要求实例
释放实例
返回代码
DIVAnet 返回与 DIVArchive 返回内容类似的状态码。但是,DIVAnet 有时会接受 DIVArchive 会立即失败的请求,因为 DIVAnet 通常在处理请求的后期才具有执行检查所需的信息。
此外,DIVAnet 将为许多命令返回 ACCESS_DENIED 状态。DIVArchive 不返回此状态。DIVAnet 将拒绝不传递访问规则检查的请求,并拒绝未在工作流配置文件中配置的消息。为达到兼容目的,API 发行版 5.8 和早期版本返回 INVALID_PARAMETER 状态而不是 ACCESS_DENIED。