0

我的团队正在设置一个带有 Walrus 的 Eucalyptus 服务器,我们想用它来对我们的 C# 代码运行测试,该代码使用亚马逊的 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 认为操作失败了?

4

1 回答 1

1

问题很可能是海象 PUT 存储桶响应包含一个主体,该元素不再包含在来自 S3 的响应中(以前是这种情况,但已被删除)。

所以海象上的操作是成功的,但客户端无法正确解析响应。这通常取决于特定的客户端,因为有些客户端比其他客户端更严格(例如,如果对于特定的响应代码(例如 HTTP 200 OK)不存在响应正文,有些甚至不会尝试解析响应正文)。

我建议查看通过网络发送/接收的内容。Wireshark/tcpdump 应该显示来自海象的完整响应。可能存在足以导致客户端失败的 XML 差异。我们 Eucalyptus 正在努力解决这些问题,但由于 S3 API(尤其是 REST)在没有警告或版本冲突的情况下更改,有时情况会发生变化,并且 SDK 会在我们对 Walrus 进行更改之前进行更新。

随时在engage.eucalyptus.com 上寻求帮助或在#eucalyptus 或#eucalyptus-devel 的Freenode 上的IRC 上联系我们

于 2013-06-19T20:56:49.900 回答