我试图通过.Net/C#访问Amazon S3 API上的外部存储桶。Amazon S3 API .Net C# - 访问外部存储桶
我已经尝试登录第三方工具,它的工作就像一个魅力,现在我想要获得框架内的桶的项目。我在Proxy后面使用这个,这就是我使用S3config的原因。
AmazonS3Config S3Config = new AmazonS3Config()
{
CommunicationProtocol = Protocol.HTTP,
ProxyHost = Proxy.Host,
ProxyPort = Convert.ToInt32(Proxy.Port),
ProxyCredentials = new NetworkCredential
{
UserName = Proxy.User,
Password = Proxy.Password
}
};
AmazonS3 S3Client = Amazon.AWSClientFactory.CreateAmazonS3Client(AccessKey, SecretKey,S3Config);
这就是我建立连接本身到亚马逊的方式。我也已经尝试过将
ServiceURL = "s3.amazonaws.com",
到配置的对象初始化,因为我在欧盟和铲斗位于美国的某个地方。
当我现在可以通过尝试访问:
ListObjectsRequest req = new ListObjectsRequest { BucketName = "yelp-syndication" };
ListObjectsResponse resp = S3Client.ListObjects(req);
或
AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKeyID, secretAccessKeyID);
return client.ListBuckets().Buckets.Where(b => b.BucketName == bucket).Single();
或
ListObjectsRequest Request = new ListObjectsRequest
{
BucketName = BucketName
};
ListObjectsResponse Response = S3Client.ListObjects(Request);
我只得到Access denied在抛出Error对象。 我使用的凭据与第三方工具中的100%相同。
我在这里错过了什么吗?我是否需要使用任何我找不到的特殊方式来使其工作?
工作的Python片段是:
from boto.s3.connection import S3Connection
conn = S3Connection(<ACCESS_KEY_ID>, <SECRET_ACCESS_KEY)
bucket = conn.get_bucket(<BucketName>, validate=False)
这将返回正确的结果,所以实际的连接工程,也是凭据。
我有同样的问题,你的服务URL需要HTTP或HTTPS。为我工作。这个文档在其错误的意义上很差。 IMO –
我已经尝试过了,如果我向配置文件的serviceurl中添加http://然后询问listobjects,它实际上询问:http:// bucketnamehttp://s3.amazonaws.com并失败,因为这很明显无效。 – makuro