2013-11-25 36 views
0

我有一個現有的salesforce實現,它使用Web服務將附件上傳到Amazon S3存儲桶。這個過程在過去2年左右一直在正常運作。現在,突然之間,我們在這個系統中出現間歇性故障(系統每年僅使用4次,所以它可能已經被打破了一段時間)。我已經仔細研究過了,而且我完全失敗了。Salesforce到Amazon S3 - 間歇性傳輸失敗 - URI無效

系統通過S3 Soap API生成PutObjectInline請求。它可能會在運行期間(通常爲10-15分鐘)生成幾百個請求。在提出的要求中,約有50%失敗(更多內容見下文)。每個故障都會從服務器獲得HTTP 400狀態,並顯示「無效的URI」消息。答覆的主體是空白的。成功的傳輸使用與失敗相同的URI。整個傳輸集正在上傳到同一個存儲桶中。

的故障形成奇數模式,從它的外觀,每隔(通過,失敗,通過,失敗)傳輸失敗,與3-4傳輸後續偶爾鏈。我研究了可能會傳輸數據太快的想法,但AWS爲此提供了一個非常具體的代碼:503。此外,錯誤本身似乎指向某種連接問題。 有誰知道會導致這種問題?

這是(我sripped了一些信息,以節省空間和隱私保護)的失敗的請求的一個示例:

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><env:Header/> 
    <env:Body> 
     <PutObjectInline xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
      <Bucket>2013-2014.(Numeric&TextValue).(TextValue)</Bucket> 
      <Key>(Numerical/Text Value).2013-2014.(Text).(Number).(Text may include ' or .).(Number).(Text XXX-XXX).pdf</Key> 
      <Data>(base64 encoded pdf file)</Data> 
      <ContentLength>(usually in the 15-19k byte range)</ContentLength> 
     <AccessControlList> 
       <Grant> 
        <Grantee xsi:type="Group"> 
          <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> 
        </Grantee> 
        <Permission>READ</Permission> 
       </Grant> 
       <Grant> 
        <Grantee xsi:type="CanonicalUser"> 
         <ID>(removed)</ID> 
        </Grantee> 
        <Permission>FULL_CONTROL</Permission> 
       </Grant> 
      </AccessControlList> 
      <AWSAccessKeyId>(removed)</AWSAccessKeyId> 
      <Timestamp>2013-11-20T20:51:56.212Z</Timestamp> 
      <Signature>(removed - but assume this is valid)</Signature> 
      <Credential>(removed)</Credential> 
     </PutObjectInline> 
    </env:Body> 
</env:Envelope> 

回答