Обнаружена ошибка 403 при загрузке на сервер

#.net #amazon-web-services #amazon-s3

#.net #amazon-веб-сервисы #amazon-s3

Вопрос:

Загрузка изображений на Amazon S3 выполняется на localhost. После развертывания он возвращает ошибку The remote server returned an error: (403) Forbidden.

Я пробовал это, но не сработало.

 Public Sub UploadFile(filename, domainname)
        Dim keyName = filename
        Dim filePath As String = domainname   "/EmployeeImages/"   filename

        Dim client = New AmazonS3Client(Amazon.RegionEndpoint.USEast1)

        Try

            Dim wc As New WebClient
            Dim fileStream As System.IO.Stream = wc.OpenRead(filePath)
            Dim contentLength As Long = Long.Parse(wc.ResponseHeaders("Content-Length"))

            Dim request As New PutObjectRequest()
            request.BucketName = bucketName
            request.Key = keyName
            request.InputStream = fileStream
            request.Headers.ContentLength = contentLength

            client.PutObject(request)

            'WORKING BY FILE DIRECTORY
            'Dim putRequest As PutObjectRequest = New PutObjectRequest With {
            '    .BucketName = bucketName,
            '    .Key = keyName,
            '    .FilePath = filePath,
            '.ContentType = "text/plain"
            '}
            'Dim response As PutObjectResponse = client.PutObject(putRequest)
        Catch amazonS3Exception As AmazonS3Exception

            If amazonS3Exception.ErrorCode IsNot Nothing AndAlso (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") OrElse amazonS3Exception.ErrorCode.Equals("InvalidSecurity")) Then
                Throw New Exception("Check the provided AWS Credentials.")
            Else
                Throw New Exception("Error occurred: " amp; amazonS3Exception.Message)
            End If
        Catch ex As Exception
            Throw New Exception("Error occurred: " amp; ex.ToString)
        End Try
    End Sub
  

Как я уже говорил ранее, это работает на локальном хостинге. Но не при развертывании.

Комментарии:

1. Наиболее вероятное объяснение заключается в том, что вы не используете те же учетные данные AWS для отправки запроса, или, если это сделано намеренно, то в учетных данных сервера отсутствуют соответствующие разрешения.

2. Что вы имеете в виду учетные данные сервера? Связано ли использование http с подобной ситуацией?

3. Прошу прощения — мой комментарий был не таким ясным, как мог бы быть. Я намеревался сказать «учетные данные сервера» — я имею в виду идентификатор ключа доступа AWS или роль IAM, которую код на сервере использует для аутентификации при доступе к S3. Если это отличается от того, что вы используете локально, то наиболее вероятным объяснением является то, что два набора учетных данных (локальный и серверный) не имеют одинаковых прав доступа к S3.

4. Я создал профиль, который буду использовать для запуска этого. И отредактировал имя профиля в web.config. Должен ли я проверять профиль на сервере, добавлен ли он путем настройки в aws cli или нет?