当我尝试使用 Apache CloudStack 4.6.0 的 deployVirtualMachine API 部署 VM 时,它可以在没有自定义选项的情况下正常工作。当我想部署具有自定义 cpuSpeed、vCPU 和内存的 VM 时,它会抛出下面给出的错误。
平台:CloudStack 4.6.0。
错误:“无法验证用户凭据和/或请求签名”
下面给出了对 CloudStack 的请求,没有通过应用程序(工作)提供定制服务:
apiKey=lGMCRQI6maiFCDsKuZAHI63u1upxCrUnNrWbXAnUZZE_qyEv7ozK_yNzYvNfXgX5x5mRcedIKynzSyLA5hf8yg&command=deployVirtualMachine&displayname=admin&displayvm=true&domainid=3776269a-949d-11e5-b907-e06995a35804&keyboard=us&name=priya&networkids=7efa5852-7e1f-4a26-9351-00f9d863aa3e&projectid=527ebed8-23f6-4c9f-9ee0-05926b035b1e&response=json&serviceofferingid=cb9fe060-1870-4bd0-8c0e-3980107acce6&templateid=96e753af-5e1a-4bf9-a28a-9f609ee06202&zoneid=af3ed220-7e36-4459-a6ea-9587a18246c0&signature=FU4xL%2FdGsYoihfWdvT%2FPrwwzthQ%3D
并在下面通过应用程序(不工作)向 CloudStack 提供定制产品的请求:
apiKey=lGMCRQI6maiFCDsKuZAHI63u1upxCrUnNrWbXAnUZZE_qyEv7ozK_yNzYvNfXgX5x5mRcedIKynzSyLA5hf8yg&command=deployVirtualMachine&details%5B0%5D.cpuNumber=3&details%5B0%5D.cpuSpeed=1500&details%5B0%5D.memory=512&hypervisor=KVM&iptonetworklist%5B0%5D.networkid=7efa5852-7e1f-4a26-9351-00f9d863aa3e&response=json&serviceofferingid=a1613485-8cdf-4d84-8b97-8c2695128a2f&templateid=37acb430-949d-11e5-b907-e06995a35804&zoneid=af3ed220-7e36-4459-a6ea-9587a18246c0&signature=FU4xL%2FdGsYoihfWdvT%2FPrwwzthQ%3D
返回错误: “无法验证用户凭据和/或请求签名”
值的映射与 CloudStack 命令字符串格式相同。它为两者生成相同的签名。CloudStack 中的显着差异是 cpuSpeed 和 cpuNumber。在速度和数字中,第一个字母大写。在签名生成期间,我们会将所有值转换为小写。