Назад | Перейти на главную страницу

Как получить доступ к Eucalyptus Walrus (S3) с помощью Amazon AWS SDK

Я загрузил Amazon AWS SDK для C #, у меня нет проблем с доступом к части EC2 нашего частного облака под управлением Eucalyptus, я могу перечислять, изображения, экземпляры, зоны ...

Это нормально работает:

AmazonEC2 ec2 = AWSClientFactory.CreateAmazonEC2Client("abcdefghijklmnopqrstuvwxyz1234567890", "abcdefghijklmnopqrstuvwxyz1234567890", new AmazonEC2Config().WithServiceURL("http://10.140.54.12:8773/services/Eucalyptus"));

DescribeInstancesRequest ec2Request = new DescribeInstancesRequest();
try
{
    DescribeInstancesResponse ec2Response = ec2.DescribeInstances(ec2Request);
    int numInstances = 0;
    numInstances = ec2Response.DescribeInstancesResult.Reservation.Count;
    textBoxInstancesLog.AppendText("You have " + numInstances + " running instances");
    textBoxInstancesLog.AppendText(ec2Response.ToString());
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

Но мне нужен доступ к Walrus (S3) части нашего Облака. Вот как я пытаюсь получить доступ к Walrus, код почти идентичен, но с этим вызовом я получу исключение.

Это не работает:

AmazonS3 s3 = AWSClientFactory.CreateAmazonS3Client("abcdefghijklmnopqrstuvwxyz1234567890", "abcdefghijklmnopqrstuvwxyz1234567890", new AmazonS3Config().WithServiceURL("http://10.140.54.12:8773/services/Walrus"));
ListBucketsRequest s3Request = new ListBucketsRequest();
try
{
    ListBucketsResponse s3Response = s3.ListBuckets(s3Request);
    textBoxS3Log.AppendText(s3Response.ToString());
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

Я получу это исключение:

System.Net.WebException: The remote name could not be resolved: 'http'
   at Amazon.S3.AmazonS3Client.processRequestError(String actionName, HttpWebRequest request, WebException we, HttpWebResponse errorResponse, String requestAddr, WebHeaderCollection& respHdrs, Type t, Exception& cause)
   at Amazon.S3.AmazonS3Client.handleHttpWebErrorResponse(S3Request userRequest, WebException we, HttpWebRequest request, HttpWebResponse httpResponse, Exception& cause, HttpStatusCode& statusCode)
   at Amazon.S3.AmazonS3Client.getResponseCallback[T](IAsyncResult result)
   at Amazon.S3.AmazonS3Client.endOperation[T](IAsyncResult result)
   at Amazon.S3.AmazonS3Client.ListBuckets(ListBucketsRequest request)
   at IAASClient.FormMain.buttonS3Test_Click(Object sender, EventArgs e) in X:\work\IAASClient\FormMain.cs:line 107

С сайта Eucalyptus:

Eucalyptus реализует частное облако IaaS (инфраструктура как услуга), доступное через API, совместимый с Amazon EC2 и Amazon S3.

Что мне не хватает?

Примечание: тот же код безупречно работает с Amazon S3, проблема заключается в доступе к Eucalyptus Walrus.

В zip-файле AWS_Console_App1 (AWS_Console_App1_1_0_3699_15931.zip) вы найдете ссылку на поддержку Walrus в файле Readme.txt. Я нашел это в этот статья из Научное облако.

В нем упоминается следующее: «Amazon.S3 \ AmazonS3Config.cs: добавлено свойство и поле privateServiceUrl для поддержки совместимости с Walrus».

Похоже, это может быть хорошей зацепкой.