Я пытаюсь сделать запрос Http для amazon s3 (получить файл), но я получаю запрещенную ошибку.amazon s3 rest api error
Вот мой код:
string today = DateTime.UtcNow.ToString("ddd,' 'dd' 'MMM' 'yyyy' 'HH':'mm':'ss' 'zz00", new System.Globalization.CultureInfo("en-US"));
string bucket = "rethymno";
string path = "/aasdf.txt";
string stringToSign = "GET" +
"\n" +
"\n" +
"\n" +
today + "\n"+
"/" + bucket + path;
string AWSSecret = "xxx";
string AWSKey = "xxx";
Encoding ae = new UTF8Encoding();
HMACSHA1 signature = new HMACSHA1(ae.GetBytes(AWSSecret));
string encodedCanonical = Convert.ToBase64String(signature.ComputeHash(ae.GetBytes(stringToSign)));
string authHeader = "AWS " + AWSKey + ":" + encodedCanonical;
string url = "http://"+bucket+".s3.amazonaws.com"+path;
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Headers.Add("Authorization", authHeader);
request.Headers.Add("x-amz-date", today);
HttpWebResponse res = request.GetResponse() as HttpWebResponse;
любые предложения устранить эту проблему?
Вы уверены, что ваше создание подписи правильно и что ваш секрет и ключ предоставляют доступ к ресурсу? Вы пробовали делать то, что делаете с [AWS CLI] (https://aws.amazon.com/cli/) или через [AWS SDK для .net] (https://aws.amazon.com/ СДК-для-нетто /)? – birryree
Настоятельно рекомендуется использовать SDK, когда это возможно. SDK будут обрабатывать подписку на запрос. Это будет гораздо меньше подверженности ошибкам. – spg
Я использовал SDK для тестирования, и все работало нормально. Я должен использовать rest api для моего решения. Есть ли примеры генерации подписи? Я искал документацию amazon, но я подошел к этому коду выше. – kostas