Episerver Amazon S3 provider: 403 forbidden/access denied

Found in

EPiServer.CMS.UI 9.3.6

Fixed in

EPiServer.Amazon 8.1.3

Created

Jan 12 2016

Updated

Jun 27 2018

Area

CMS Core

State

Closed, Fixed and tested


Description

Description: Affects Episerver.Amazon 8.2.1.

Steps to reproduce:

  1. Set up the CMS sample Alloy site (MVC or Webforms) and install the latest CMS and CMS.UI packages.
  2. Install the Episerver.Amazon 8.2.1 nuget package.
  3. Configure blob storage to point to an existing bucket (or a bucket that was created without a specified region).
  4. Open the site.
  5. Get error.

Expected result:
Site opens as expected. Users can read/access existing bucket.

Actual result:

Amazon.S3.AmazonS3Exception was unhandled by user code
HResult=[Removed]
Message=Access Denied
Source=AWSSDK
ErrorCode=AccessDenied
RequestId=[Removed]
AmazonId2=[Removed]
StackTrace:
at Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleException(IExecutionContext executionContext, HttpErrorResponseException exception) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\ErrorHandler\HttpErrorResponseExceptionHandler.cs:line 100
at Amazon.Runtime.Internal.ExceptionHandler`1.Handle(IExecutionContext executionContext, Exception exception) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\ErrorHandler\ExceptionHandler.cs:line 38
at Amazon.Runtime.Internal.ErrorHandler.ProcessException(IExecutionContext executionContext, Exception exception) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\ErrorHandler\ErrorHandler.cs:line 202
at Amazon.Runtime.Internal.ErrorHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\ErrorHandler\ErrorHandler.cs:line 76
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericHandler.cs:line 35
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericHandler.cs:line 35
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericHandler.cs:line 35
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.RetryHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\RetryHandler\RetryHandler.cs:line 69
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericHandler.cs:line 35
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericHandler.cs:line 35
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericHandler.cs:line 35
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericHandler.cs:line 35
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericHandler.cs:line 35
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericHandler.cs:line 35
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericExceptionHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericExceptionHandler.cs:line 31
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericExceptionHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericExceptionHandler.cs:line 31
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.MetricsHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\MetricsHandler.cs:line 40
at Amazon.Runtime.Internal.RuntimePipeline.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\RuntimePipeline.cs:line 118
at Amazon.Runtime.AmazonServiceClient.Invoke[TRequest,TResponse](TRequest request, IMarshaller`2 marshaller, ResponseUnmarshaller unmarshaller) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\AmazonServiceClient.cs:line 128
at Amazon.S3.AmazonS3Client.PutBucket(PutBucketRequest request) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet45\Amazon.S3\AmazonS3Client.cs:line 2109
at Amazon.S3.AmazonS3Client.PutBucket(String bucketName) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet45\Amazon.S3\AmazonS3Client.cs:line 2095
at EPiServer.Amazon.Blobs.AmazonBlobProvider.EnsureBucketExists()
InnerException: Amazon.Runtime.Internal.HttpErrorResponseException
HResult=[Removed]
Message=The remote server returned an error: (403) Forbidden.
Source=AWSSDK
StackTrace:
at Amazon.Runtime.Internal.HttpRequest.GetResponse() in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\HttpHandler\HttpWebRequestFactory.cs:line 113
at Amazon.Runtime.Internal.HttpHandler`1.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\HttpHandler\HttpHandler.cs:line 84
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.Unmarshaller.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\Unmarshaller.cs:line 47
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.GenericHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\GenericHandler.cs:line 35
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.RedirectHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\Handlers\RedirectHandler.cs:line 58
at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 56
at Amazon.Runtime.Internal.ErrorHandler.InvokeSync(IExecutionContext executionContext) in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\ErrorHandler\ErrorHandler.cs:line 70
InnerException: System.Net.WebException
HResult=[Removed]
Message=The remote server returned an error: (403) Forbidden.
Source=System
StackTrace:
at System.Net.HttpWebRequest.GetResponse()
at Amazon.Runtime.Internal.HttpRequest.GetResponse() in d:\Jenkins\workspace\build-sdkandtools\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\Pipeline\HttpHandler\HttpWebRequestFactory.cs:line 105
InnerException: