我試圖通過.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