2016-03-20 27 views
1

私のアプリケーションは、サーバーに対して「複数削除」操作を実行し、エラー応答が発生しました:Amazonの公開S3 XSD(XMLスキーマ定義)はどこにありますか? REST APIを使用してAmazon S3のサーバとの対話

<?xml version="1.0" encoding="UTF-8"?> 
<Error> 
    <Code>MalformedXML</Code> 
    <Message>The XML you provided was not well-formed or did not validate against our published schema</Message> 
    <RequestId>6FA...D61</RequestId> 
    <HostId>E5G...uhg=</HostId> 
</Error> 

Amazon documentationを引用する:

これは、ユーザーが構成の不正なxml( が公開xsdに準拠していないxml)を送信した場合に発生します。エラーメッセージ は、「提供したXMLが整形式でないか、公開されたスキーマに対して を検証しませんでした」というエラーメッセージが表示されます。

私のアプリの削除キーには、エンコードされた文字が含まれているため、問題が発生する可能性があります。したがって、Amazonの発行されたスキーマ(XSD)ファイル自体を確認し、バリデーターを通じて問題を判別したいと考えています。

Amazon XSDファイルはどこにありますか?

答えて

0
+0

は、両方の署名のバージョンに適用される、このスキーマですか? XMLとスキーマをxmlvalidation.comで実行したため、関連するエラーは返されなかったので、これを尋ねます。バージョン4用の別のスキーマがありますか? –

+0

署名バージョンはXML要件を変更しません。 [MCVE](http://stackoverflow.com/help/mcve)を追加するために質問を編集することを検討してください。 –

+0

@ Michael-sqlbotプロットは濃くなりますです。私のプログラムは、今朝、MalformedXMLエラー応答を得たときまで正しく機能しました。いくつかの連続した再実行とその後のMalformedXMLの失敗が約1時間続くと、XMLエラーは発生せず、すべて正常に戻ります。したがって、MCVEは再現するのが難しいでしょう。それが繰り返されると、私は問題を最小限のAmazon S3リクエストまで徹底的に減らします。それにもかかわらず、S3サーバが気まぐれになる可能性があることを心配しています。 –

1

AmazonS3.xsdが利用可能ですが、またAmazon Simple Storage Service API Referenceを参照してください:

最後に、特にエンコードされた文字に関するあなたの懸念を与え、あなたの要求は、実際にも、XSD検証が遊びに来ていないような、よく形成されていない可能性があることに注意してください。

例3:リクエストで不正な形式のXML

この例(。Well-formed vs Valid XMLを参照)このようなあなたが受け取っている同じエラーを誘発彼らのAPIドキュメントに設けられた例である場合不正な形式のXML文書 を含むリクエストにAmazon S3がどのように応答するかを示しています。

サンプルリクエスト

次の要求( 削除終了要素が欠落)不正な形式のXMLドキュメントを送信します。

POST /?delete HTTP/1.1 
Host: bucketname.S3.amazonaws.com 
Accept: */* 
x-amz-date: Wed, 30 Nov 2011 03:39:05 GMT 
Content-MD5: p5/WA/oEr30qrEEl21PAqw== 
Authorization: AWS AKIAIOSFODNN7EXAMPLE:W0qPYCLe6JwkZAD1ei6hp9XZIee= 
Content-Length: 104 
Connection: Keep-Alive 

<Delete> 
    <Object> 
    <Key>404.txt</Key> 
    </Object> 
    <Object> 
    <Key>a.txt</Key> 
    </Object> 

サンプル応答

応答がエラーを説明するエラーメッセージを返します。私はAWS認証署名バージョン4ではなく、バージョン2を使用しています言及しなかった

HTTP/1.1 200 OK 
x-amz-id-2: P3xqrhuhYxlrefdw3rEzmJh8z5KDtGzb+/FB7oiQaScI9Yaxd8olYXc7d1111ab+ 
x-amz-request-id: 264A17BF16E9E80A 
Date: Wed, 30 Nov 2011 03:39:32 GMT 
Content-Type: application/xml 
Server: AmazonS3 
Content-Length: 207 

<?xml version="1.0" encoding="UTF-8"?> 
<Error> 
    <Code>MalformedXML</Code> 
    <Message>The XML you provided was not well-formed or did not 
      validate against our published schema</Message> 
    <RequestId>91F27FB5811111F</RequestId> 
    <HostId>LCiQK7KbXyJ1t+tncmjRwmNoeeRNW1/ktJ61IC8kN32SFXJx7UBhOzseJCixAbcD</HostId> 
</Error> 
+0

よく考えた投稿ありがとうございました。以前のコメントで書いたように、私のプログラム(実際にAmazon S3と同じテストを一貫して実行する回帰テストスイート)は今朝までうまく機能しています。私は約1時間MalformedXMLエラーを繰り返し受け取りましたが、今はバックアップされ、チャンピオンのように正常に実行されています。私は "戦った"とアマゾンS3のすべてのエンコードの問題を獲得したので、私は文字のエンコードが正しいことを知っている。 XMLは、いくつかのオンラインXMLバリデーター・アプリケーションに合格しているため、間違いなく整形式です。投稿ありがとう! –

+0

私はあなたのSOポリシーに基づいて私の元の投稿から私の感謝を編集して参照してください。私はそれに問題はありません - 人々に感謝するだけで弱いです。そのような問題に関するSOの方針は何ですか? –

+0

あなたは大歓迎です、そして、前もってお礼が悪ではない、本当に:-)、ちょうど不必要なノイズ。主に編集はタイトルに「S3」を追加することでしたが、そこにいる間に私は閉会感謝しました。 「私の投稿とタイトルを保持するものは何ですか?」(http://meta.stackexchange.com/questions/131009/what-should-i-keep-out-of-my-posts-and-titles) – kjhughes