You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OCI Java SDK创建Secret报stage必须为CURRENT的400参数错误如何解决

OCI Java SDK创建Secret报stage参数错误的解决方案

错误根因

你遇到的400参数校验错误是两个常见问题共同导致的:

  1. 创建全新Secret时,初始版本的stage参数不允许手动赋值,系统会自动标记初始版本为CURRENT,主动传任何枚举值都会触发校验拦截
  2. 2.8.0及更早版本的OCI Java SDK存在枚举序列化bug,会把Stage枚举的大写值序列化为小写字符串,和后端要求的大写格式不匹配,就算传了正确的Current枚举也会被判定为无效值

修复步骤

  • 第一步:删除构造SecretContentDetails对象时所有和stage参数相关的配置,去掉.stage(xxx)的代码调用
  • 第二步:确认CreateSecretDetails的必填参数配置完整:必须包含vaultId、compartmentId、keyId(加密用主密钥的OCID),secret内容使用Base64SecretContentDetails构造,仅传入Base64编码后的内容即可
  • 第三步:如果需要后续更新Secret版本,再在更新接口中指定stage参数,创建接口无需配置该字段

正确代码示例

import java.nio.charset.StandardCharsets;
import java.util.Base64;
import com.oracle.bmc.vault.model.Base64SecretContentDetails;
import com.oracle.bmc.vault.model.CreateSecretDetails;
import com.oracle.bmc.vault.requests.CreateSecretRequest;

// 构造Secret内容
Base64SecretContentDetails contentDetails = Base64SecretContentDetails.builder()
        .content(Base64.getEncoder().encodeToString("你的明文机密内容".getBytes(StandardCharsets.UTF_8)))
        // 不要添加.stage()配置
        .build();

// 构造创建请求参数
CreateSecretDetails createSecretDetails = CreateSecretDetails.builder()
        .compartmentId("你的资源分区OCID")
        .vaultId("你的Vault实例OCID")
        .keyId("你的加密主密钥OCID")
        .secretName("自定义的Secret名称")
        .secretContent(contentDetails)
        .build();

// 发起创建请求
vaultsClient.createSecret(CreateSecretRequest.builder()
        .createSecretDetails(createSecretDetails)
        .build());

内容的提问来源于stack exchange,提问作者Arjun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:06:02