S3 PutObject to CloudFront с использованием предварительно назначенного URL, созданного для S3, вызывает ошибку - PullRequest
0 голосов
/ 16 марта 2019

На моем сервере я создаю предварительно назначенный URL-адрес S3 следующим образом:

// Initialize a session in us-east-1 that the SDK will use to load
// credentials from the shared credentials file ~/.aws/credentials.
sess, err := session.NewSession(&aws.Config{
    Region: aws.String("us-east-1")},
)
if err != nil {
    // ...
}

// Create S3 service client.
svc := s3.New(sess)

// Create the S3 PutObject request.
resp, _ := svc.PutObjectRequest(&s3.PutObjectInput{
    Bucket: aws.String("REDACTED"),
    Key:    aws.String(key),
})

// Pre-sign the request to get a URL.
url, err := resp.Presign(20 * time.Second)
if err != nil {
    // ...
}

В браузере я выполняю PutObject вызов S3 с использованием предварительно назначенного URL-адреса, например, (обратите внимание, что я изменяюREDACTED.s3.amazonaws.com URL-адрес https://cdn.REDACTED.com, который является моей конечной точкой CloudFront:

http.get(`/get-presigned-url`).subscribe(
    (url: string) =>  {
        const s3Url = 'https://REDACTED.s3.amazonaws.com/';
        const cloudfrontUrl = 'https://cdn.REDACTED.com/';
        http.put(url.replace(s3Url, cloudfrontUrl), file).subscribe(...);
    }
);

Браузер выдает мне эту ошибку в ответ, 400 неверных запросов:

"InvalidArgument Разрешен только один механизм аутентификации, должен быть указан только параметр запроса X-Amz-Algorithm, параметр строки запроса Signature или заголовок Authorization. АвторизацияAWS REDACTED = REDACTED + REDACTED / REDACTED = "

Любые идеи, чтодо

...