【问题标题】:Delete a S3 file using WSO2 ESB S3 connector使用 WSO2 ESB S3 连接器删除 S3 文件
【发布时间】: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 凭据,但仍然遇到同样的错误,我们将不胜感激。

弗兰克

【问题讨论】:

  • &lt;bucketUrl&gt;http://s3.amazonaws.com/MYBUCKET&lt;/bucketUrl&gt;&lt;bucketName&gt;MYBUCKET&lt;/bucketName&gt; 中的存储桶名称似乎是多余的。从&lt;bucketUrl&gt; 中删除存储桶名称。
  • 您如何尝试调用 Web 服务?是 http 还是 https ?如果是 https 那么你首先需要知道在调用服务之前是否需要在 wso2 中安装证书,通过错误消息看起来存在证书问题,如果你无法弄清楚然后尝试使用 TCPDUMP 以便它会清楚沟通是否正在发生

标签: amazon-s3 wso2 esb


【解决方案1】:

在为 S3 删除对象后,您需要检查标头值是否正确,因为在访问 Web 服务之前需要进行身份验证,标头应如下所示。

DELETE /my-image.jpg?versionId=3HL4kqCxf3vjVBH40Nrjfkd HTTPS/1.1
Host: bucketName.s3.amazonaws.com
x-amz-mfa: 20899872 301749
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

您可以将 wso2 esb 置于调试模式并确认是否传递了正确的标头,否则以 TCPDUMP 为准确

【讨论】:

    猜你喜欢
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 2016-08-23
    • 2021-04-24
    • 1970-01-01
    相关资源
    最近更新 更多