2017-10-16 87 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执行此操作的任何线索 - 因此我没有更接近目标: - | –