2017-10-16 124 views
0

我正在嘗試使用C#中的亞馬遜網絡服務.Net SDK在storage.googleapis.com上閱讀存儲桶。在谷歌S3 api上訪問存儲桶

任何人都可以提供一個S3端點的工作示例配置安裝程序谷歌,只需使用身份驗證。密鑰/密鑰對和存儲桶名稱?或者使用任何其他方法來實現這個功能?

根據this tutorial這應該是一件簡單的事情,但在嘗試按照給出的指示進行操作時,我會遇到各種例外情況。以下是我當前嘗試的摘錄 - 其中引發了TrustFailure異常:

遠程證書無效。

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

添加你得到的例外。 – user1506104

回答

0

你需要一個亞馬遜S3服務URL,訪問密鑰ID,祕密訪問密鑰ID以及桶名稱。

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); 

然後,你應該能夠撥打電話到亞馬遜客戶端:

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

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

上面的代碼工作在一個S3帳戶,而不是特別storage.googleapis.com,這是你的情況。無論如何,我希望這有助於解決您的問題。

+0

感謝您的回覆,但我已經爲亞馬遜桶工作,而數據源正在轉移到谷歌。 RegionEndpoint類對s3.storage.googleapis沒有意義 - 這是問題的一部分! 「簡單遷移」文檔並未提供有關如何使用AWS SDK執行此操作的任何線索 - 因此我沒有更接近目標: - | –