無効化APIを使用してAmazon CloudFrontにアップロードしたオブジェクトを無効にしようとしています。Amazon WebサービスでCloudFrontの無効化バッチリクエストXML文書を解析できないのはなぜですか?
ドキュメントごとに、コンテンツとしてXMLドキュメントを含むPOSTリクエストを送信しています。 XML文書は、無効化するパスを指定します。
私は戻ってアマゾンから取得していますエラーは次のとおりです。
<Error>
<Type>Sender</Type>
<Code>MalformedInput</Code>
<Message>Could not parse XML</Message>
</Error>
私の知る限り見ることができるように、私のXML文書は、その文書に一致します。
彼らのドキュメント:
私のXMLドキュメント:彼らは彼らの応答でそうであるように、私は維持し、空白文字を削除し、XMLプロローグを含む試した
<InvalidationBatch xmlns="http://cloudfront.amazonaws.com/doc/2010-11-01/">
<Path>/-o-replace.css</Path>
<Path>/-o-set-link-source.css</Path>
...16 other path elements, each containing only letters, numbers, hyphens and periods
<CallerReference>fixing-accidental-setting-of-gzip-header</CallerReference>
</InvalidationBatch>
xmlns
属性を省略して、すべて無効にします。
私はPOSTリクエストをPythonを使用して手動で送信しています。それを送信するために使用されるPythonコードは次のとおりです。ファイルの内容が正しく読み込まれていることを確認しました。
from httplib import HTTPSConnection
from datetime import datetime
from hashlib import sha1
import hmac
conneck = HTTPSConnection('cloudfront.amazonaws.com')
invalidation_file = file('invalidation.xml')
invalidation = unicode(invalidation_file.read()).encode('utf-8')
now_as_string = datetime.now().strftime('%a, %d %b %Y %H:%M:%S GMT')
signature = hmac.new('MY_SECRET_KEY', now_as_string, sha1).digest().encode('base64')
conneck.request('POST', '/2010-11-01/distribution/MY_DISTRIBUTION_ID/invalidation', invalidation, {
'Content-Type': 'text/xml',
'Authorization': 'AWS MY_ACCESS_KEY_ID' + ':' + signature,
'x-amz-date': now_as_string,
})
response = conneck.getresponse()
私が間違っていることは誰でも見ることができますか?