2017-10-16 2 views
0

Ich versuche, einen Bucket unter storage.googleapis.com mit dem Amazon Web Services .NET SDK in C# zu lesen.Zugreifen auf einen Bucket im google S3 api

Kann jemand ein funktionierendes Beispiel für ein S3-Endpunkt-Konfigurations-Setup für Google bereitstellen, nur die Auth. Schlüssel/Geheimpaar und ein Bucket-Name? Oder verwenden Sie eine andere Methode, um dies zum Laufen zu bringen?

Laut this tutorial sollte dies eine einfache Angelegenheit sein, aber ich bekomme alle möglichen Ausnahmen, wenn ich versuche, den gegebenen Anweisungen zu folgen. Hier ist ein Auszug meines aktuellen Versuchs - der eine TrustFailure-Ausnahme auslöst:

Das Remote-Zertifikat ist ungültig.

AmazonS3Config conf = new AmazonS3Config(); 
// Set regionEndpoint to null, or else the serviceURL will be ignored 
conf.RegionEndpoint = null; 
conf.ServiceURL = "https://s3.storage.googleapis.com"; 
conf.UseHttp = false; 
conf.AuthenticationRegion = null; 
conf.UseAccelerateEndpoint = false; 
conf.UseDualstackEndpoint = false; 

AWSCredentials cred = new BasicAWSCredentials("GOOG3LFXXXXXXXXXXXXX", "BQ6VeMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");   
IAmazonS3 client = new AmazonS3Client(cred, conf); 

GetBucketVersioningRequest request = new GetBucketVersioningRequest { BucketName = "hisbucket" }; 
GetBucketVersioningResponse response = client.GetBucketVersioning(request); 
+0

fügen Sie die Ausnahmen hinzu, die Sie erhalten. – user1506104

Antwort

0

Sie benötigen eine Amazon S3-Service-URL, einen Zugriffsschlüssel-ID, einen geheimen Zugriffsschlüssel-ID und den Eimer Namen.

var s3Config = new AmazonS3Config 
    { 
     ServiceURL = Constants.AmazonS3ServiceUrl, 
     RegionEndpoint = Amazon.RegionEndpoint.EUWest1 
    }; 

    string accessKeyId = Constants.AmazonAccessKeyId; 
    string secretAccessKey = Constants.AmazonSecretAccessKey; 

    var config = new AwsS3Config(){AmazonS3BucketName = Constants.AmazonS3BucketName}; 
    var client = new AmazonS3Client(accessKeyId, secretAccessKey, s3Config); 

Dann sollten Sie in der Lage sein, Anrufe an den amazon-Client zu machen:

var request = new GetObjectRequest 
{ 
    BucketName = _bucketName, 
    Key = entity.Path 
}; 

var response = _client.GetObjectAsync(request).Result; 

Der obige Code funktioniert auf einem S3-Konto, nicht besonders storage.googleapis.com, was der Fall ist. Wie auch immer, ich hoffe, das hilft und beantwortet Ihre Frage.

+0

Danke für die Antwort, aber ich habe es für Amazon Eimer arbeiten, während die Datenquelle zu Google bewegt. Die RegionEndpoint-Klasse ist für die s3.storage.googleapis nicht sinnvoll - das ist Teil des Problems! Die "Simple Migration" -Dokumentation gibt keinen Hinweis darauf, wie dies mit AWS SDK zu tun ist - also bin ich dem Ziel nicht näher: - | –