使用OCI CLI创建Secret时遭遇内容格式无效错误的问题
OCI CLI创建Secret报错"content has an invalid format"的排查与解决
问题场景
使用OCI CLI创建Secret,目标是将JWT令牌设为Secret内容,执行create-base64命令后返回400错误,提示content has an invalid format。
执行的命令
oci vault secret create-base64 \ -c ___compartment_ocid___ \ --secret-name KONG_JWT_TOKEN \ --vault-id ___vault_ocid___ \ --key-id ___encryption_key_ocid____ \ --secret-content-content $jwt_token --debug
关键错误信息
oci.exceptions.ServiceError: {'target_service': 'vaults', 'status': 400, 'code': 'InvalidParameter', 'message': 'content has an invalid format', ...}
排查与解决方法
给变量添加引号避免特殊字符解析错误:
命令中$jwt_token未加引号,当JWT包含/、=或空格等特殊字符时,Shell会自动分割或转义内容,导致传入API的内容不完整。修改命令为:oci vault secret create-base64 \ -c ___compartment_ocid___ \ --secret-name KONG_JWT_TOKEN \ --vault-id ___vault_ocid___ \ --key-id ___encryption_key_ocid____ \ --secret-content-content "$jwt_token" --debug确认
create-base64命令的参数要求:create-base64命令会自动将传入的原始文本内容编码为Base64格式发送给API。如果你的JWT已经是Base64编码后的字符串,请勿使用此命令,改用普通的oci vault secret create命令,并手动处理Base64编码。检查JWT内容的完整性:
确保JWT令牌没有多余的空格、换行符或其他无效字符。可以通过以下命令验证内容:# 查看变量内容是否有多余字符 echo "$jwt_token" # 验证Base64编码(如果需要手动编码) echo -n "$jwt_token" | base64确认权限与资源有效性:
检查当前OCI用户是否拥有创建Secret的权限,同时确认Vault、加密密钥的OCID正确,且资源位于指定的Compartment中。
内容的提问来源于stack exchange,提问作者N. Blore
相关产品推荐
相关产品推荐

