[EC2 Query API] AttachVolume fails with 'Permission Denied: Invalid Signature' error.
https://reviews.apache.org/r/8480/
In AWSAPI while forming the signature to validate an API, url-encode every parameter name with UTF-8 encoding scheme.
diff --git a/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java b/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java
index 91e08be..78e736f 100644
--- a/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java
+++ b/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java
@@ -1770,8 +1770,8 @@
String paramName = (String) params.nextElement();
// exclude the signature string obviously. ;)
if (paramName.equalsIgnoreCase("Signature")) continue;
- if (queryString == null)
- queryString = paramName + "=" + request.getParameter(paramName);
+ if (queryString == null)
+ queryString = paramName + "=" + URLEncoder.encode(request.getParameter(paramName), "UTF-8");
else
queryString = queryString + "&" + paramName + "=" + URLEncoder.encode(request.getParameter(paramName), "UTF-8");
}