在谷歌S3 api上访问存储桶
问题描述:
我正在尝试使用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);
答
你需要一个亚马逊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执行此操作的任何线索 - 因此我没有更接近目标: - | –
添加你得到的例外。 – user1506104