Моя команда настраивает сервер Eucalyptus с Walrus, который мы хотим использовать для запуска тестов нашего кода C#, в котором используются материалы Amazon AWS. Он почти настроен, и теперь мы получаем код, указывающий на Eucalyptus, но мы сталкиваемся с некоторыми трудностями.
Мы начали с вызова PutBucket для создания корзины, которую будем использовать. Ведра раньше не было, так что проблем быть не должно. Однако мы получаем исключение нулевой ссылки со следующей трассировкой стека:
at System.Xml.XmlReader.CalcBufferSize(Stream input)
at System.Xml.XmlTextReaderImpl.InitStreamInput(Uri baseUri, String baseUriStr, Stream stream, Byte[] bytes, Int32 byteCount, Encoding encoding)
at System.Xml.XmlTextReaderImpl..ctor(String url, Stream input, XmlNameTable nt)
at System.Xml.XmlTextReader..ctor(Stream input)
at Amazon.S3.AmazonS3Client.transform(String responseBody, String actionName, Type t)
at Amazon.S3.AmazonS3Client.processRequestResponse[T](HttpWebResponse httpResponse, S3Request request, Type t, T& response, Exception& cause)
at Amazon.S3.AmazonS3Client.handleHttpResponse[T](S3Request userRequest, HttpWebRequest request, HttpWebResponse httpResponse, Int32 retries, Int64 lengthOfRequest, T& response, Exception& cause, HttpStatusCode& statusCode)
at Amazon.S3.AmazonS3Client.getResponseCallback[T](IAsyncResult result)
at Amazon.S3.AmazonS3Client.endOperation[T](IAsyncResult result)
at Amazon.S3.AmazonS3Client.EndPutBucket(IAsyncResult asyncResult)
at Amazon.S3.AmazonS3Client.PutBucket(PutBucketRequest request)
[at application library]
Теперь вот где это становится странным. Когда мы проверили сервер, ведро было успешно создано! Сервер корректно обработал запрос и сделал ведро, которое мы хотели. Ответ возвращается недействительным, но запрос был обработан правильно. И до сих пор проблема возникает только при вызове PutBucket, потому что когда мы удаляем корзину, она успешно удаляется с сервера, и исключения не выдаются.
Пока мы в недоумении, что происходит. Мы подозреваем, что проблема на стороне Моржа. Возможно, AWS ожидает одно, а Walrus делает другое. Возможно, мы неправильно настроили Eucalyptus и/или Walrus. Мы совсем не уверены.
Вот почему я публикую вопрос здесь. Мне было любопытно, если кто-нибудь имел какой-либо опыт с этим раньше, или, возможно, может предложить некоторое понимание. Что может привести к тому, что сервер правильно обработает запрос, но отправит неверный ответ? Почему Eucalyptus делает ведро, а AWS считает, что операция не удалась?