There seem to be interest in Amazon MWS and because mostly their customer service is awe-full as well as the documentation, it's a real challenge when it comes to implement it.
First things you are going to need when dealing with MWS is signature generation. Bellow are the functions i use for it:
<cffunction name="HMAC_SHA256" returntype="binary" access="public" output="false">
<cfargument name="signMessage" type="string" required="true">
<cfset var jMsg = JavaCast("string", arguments.signMessage).getBytes("UTF-8")>
<cfset var jKey = JavaCast("string", this.theSecretAccessKey).getBytes("UTF-8")>
<cfset var key = createObject("java", "javax.crypto.spec.SecretKeySpec")>
<cfset var mac = createObject("java", "javax.crypto.Mac")/>
<cfset key = key.init(jKey, "HmacSHA256")>
<cfset mac = mac.getInstance(key.getAlgorithm())>
<cfset mac.init(key)>
<cfset mac.update(jMsg)>
<cfreturn mac.doFinal()>
</cffunction>
<cffunction name="GenerateSignedAmazonURL" returnType="string" output="yes">
<cfargument name="HTTPVerb" required="yes">
<cfargument name="HostHeader" type="string" required="yes">
<cfargument name="HTTPRequestURI" type="string" required="yes">
<cfargument name="RawQueryString" type="string" required="yes">
<cfset var signature = "">
<cfset var encodedQueryString = "">
<cfset var sortedQueryString = "">
<cfset var encodedSignature = "">
<cfset var name = "">
<cfset var value = "">
<cfset var i = "">
<!--- get your timestamp--->
<cfset var thenow = DateConvert("local2Utc", Now())>
<cfset var time_stamp = "#DateFormat(thenow,'yyyy-mm-dd')#T#TimeFormat(thenow,'HH:mm:ss')#.00Z">
<!--- append timestamp to query string --->
<cfset arguments.RawQueryString = arguments.RawQueryString & "&Marketplace=#this.marketplaceID#">
<cfset arguments.RawQueryString = arguments.RawQueryString & "&Merchant=#this.merchantID#">
<cfset arguments.RawQueryString = arguments.RawQueryString & "&SignatureMethod=HmacSHA256">
<cfset arguments.RawQueryString = arguments.RawQueryString & "&SignatureVersion=2">
<cfset arguments.RawQueryString = arguments.RawQueryString & "&Timestamp=#time_stamp#">
<cfset arguments.RawQueryString = arguments.RawQueryString & "&Version=2009-01-01">
<!--- start building signature --->
<cfset signature = arguments.HTTPVerb & Chr(10)>
<cfset signature = signature & LCase(arguments.HostHeader) & Chr(10)>
<cfset signature = signature & arguments.HTTPRequestURI & Chr(10)>
<!--- loop over the list and urlEncode each value --->
<cfloop list="#arguments.RawQuerySTring#" delimiters="&" index="i">
<cfset name = ListGetAt(i, 1, "=")>
<cfset value = "">
<!--- if this item has a value encode it --->
<cfif ListLen(i, "=") gt 1>
<cfset value = Replace(Replace(Replace(ListGetAt(i, 2, "="), ",", "%2C", "ALL"), ":", "%3A", "ALL"), " ", "%20", "ALL")>
</cfif>
<!--- build the new query string with encoded values --->
<cfset encodedQueryString = ListAppend(encodedQueryString, "#name#=#value#", "&")>
</cfloop>
<!--- next we need to canonically order the queryString params --->
<cfset sortedQueryString = ListSort(encodedQueryString, "textnocase", "asc", "&")>
<!--- append to the signature --->
<cfset signature = signature & "AWSAccessKeyId=#this.accessKeyId#&" & sortedQueryString>
<!--- encode the signature --->
<cfset encodedSignature = URLEncodedFormat(ToBase64(HMAC_SHA256(signature)))/>
<cfreturn "https://#arguments.HostHeader##arguments.HTTPRequestURI#?AWSAccessKeyId=#this.accessKeyId#&#sortedQueryString#&Signature=#encodedSignature#">
</cffunction>

The original version of GenerateSignedAmazonURLi found somewhere time ago when working with AWS and i think i slightly changed it.
The call would be like this:
<cfset generatedURL = GenerateSignedAmazonURL('POST', 'mws.amazonservices.com', '/', signStr2)>
A thing to note:POSTin generatedURL should go with POSTtype CFHTTPsand use GETin generatedURL for GETtype CFHTTPs.