#.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 или нет?