2016-11-29 5 views
0

Я выполнил инструкции по этой проблеме https://github.com/aws/aws-sdk-go/issues/467, в которых четко указано, как создать предварительно подписанный URL-адрес для запроса PUT. Цель состоит в том, чтобы presign URL-адрес, так что я могу напрямую загружать изображения из браузера безопасноПодпись не соответствует ошибке 403 при подписании URL-адреса через aws-sdk-go

ключ и секретный, конечно, мои текущие учетные данные, которые работают с прямыми запросами PutObject через SDK

creds := credentials.NewStaticCredentials("key", "secret", "") 

cfg := aws.NewConfig().WithRegion("us-west-2").WithCredentials(creds) 
srv := s3.New(session.New(), cfg) 

params := &s3.PutObjectInput{ 
    Bucket: aws.String("my-bucket"), 
    Key: aws.String("/local/test/filename"), 
} 
req, _ := srv.PutObjectRequest(params) 
url, err := req.Presign(15 * time.Hour) 
if err != nil { 
    fmt.Println("error signing request", err) 
} 

fmt.Println("URL", url) 

`` `

Затем я беру этот URL-адрес и делаю запрос на завивание. Я получаю этот ответ

<?xml version="1.0" encoding="UTF-8"?> 
<Error> 
    <Code>SignatureDoesNotMatch</Code> 
    <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message> 
    <AWSAccessKeyId>redacted</AWSAccessKeyId> 
    <StringToSign>redacted</StringToSign> 
    <SignatureProvided>redacted</SignatureProvided> 
    <StringToSignBytes>redacted</StringToSignBytes> 
    <CanonicalRequest>PUT 
/local/test/filename 
X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=redacted%2Fus-west-2%2Fs3%2F%20aws4_request&amp;X-Amz-Date=20161129T012909Z&amp;X-Amz-Expires=54000&amp;X-Amz-SignedHeaders=host 
host:redacted.s3-us-west-2.amazonaws.com 

host 
UNSIGNED-PAYLOAD</CanonicalRequest> 
    <CanonicalRequestBytes>redacted</CanonicalRequestBytes> 
    <RequestId>redacted</RequestId> 
    <HostId>redacted</HostId> 
</Error> 

любые идеи, почему назначенный URL-адрес предоставляет мне подпись, которая предположительно не соответствует? Снова эти же учетные данные в настоящее время работают для прямых команд PutObject на моем сервере

ответ

Смежные вопросы