【发布时间】:2018-07-08 15:18:43
【问题描述】:
我在尝试使用 WSO2 ESB 连接器删除驻留在 Amazon S3 中的文件时遇到问题。这是我所做的: 1) 使用来自WSO2 documentation 的以下内容在 WSO2 ESB 中创建了一个代理服务:
2) 我确保代理服务已部署到 WSO2,然后使用 POSTMAN 3) 我向 POSTMAN 提交了以下内容:
<deleteObject>
<accessKeyId>MYACCESSKEY</accessKeyId>
<secretAccessKey>MYSECRETKEY</secretAccessKey>
<methodType>DELETE</methodType>
<contentType>application/xml</contentType>
<expect>100-continue</expect>
<region>us-east-1</region>
<host>s3.amazonaws.com</host>
<bucketUrl>http://s3.amazonaws.com/MYBUCKET</bucketUrl>
<bucketName>MYBUCKET</bucketName>
<isXAmzDate>true</isXAmzDate>
<objectName>FILETODELETE.txt</objectName>
<versionId></versionId>
</deleteObject>
我收到以下错误消息(消息开头):
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<AWSAccessKeyId>MYACCESSKEY</AWSAccessKeyId>
<StringToSign>AWS4-HMAC-SHA256
Sat, 07 Jul 2018 15:25:18 GMT
20180707/us-east-1/s3/aws4_request
618b0c822492e3dd2a8f4d9e1ea</StringToSign> <SignatureProvided>06b2b268cb90b69a1c5dadbb689ed4ccf7b459ff1b5</SignatureProvided>
<StringToSignBytes>BUNCH OF NUMBERS</StringToSignBytes>
<CanonicalRequest>DELETE
/MYBUCKET/xxxxx.txt/
content-type:application/xml
host:s3.amazonaws.com
x-amz-content-sha256:UNSIGNED-PAYLOAD
x-amz-date:Sat, 07 Jul 2018 15:25:18 GMT
content-type;host;x-amz-content-sha256;x-amz-date
UNSIGNED-PAYLOAD</CanonicalRequest>
<CanonicalRequestBytes>BUNCH OF NUMBERS</CanonicalRequestBytes>
<RequestId>SOODEDIBD</RequestId>
<HostId>vLllBSaWMHkV+gqX6yh7+43WK4PsAO4VVXLdGePBvGWZtxxExbBqI=</HostId>
我重新创建了我的 S3 凭据,但仍然遇到同样的错误,我们将不胜感激。
弗兰克
【问题讨论】:
-
<bucketUrl>http://s3.amazonaws.com/MYBUCKET</bucketUrl>和<bucketName>MYBUCKET</bucketName>中的存储桶名称似乎是多余的。从<bucketUrl>中删除存储桶名称。 -
您如何尝试调用 Web 服务?是 http 还是 https ?如果是 https 那么你首先需要知道在调用服务之前是否需要在 wso2 中安装证书,通过错误消息看起来存在证书问题,如果你无法弄清楚然后尝试使用 TCPDUMP 以便它会清楚沟通是否正在发生