1

Looking for anyone who has successfully connected to a private S3 bucket from Web 8 using the external content library connection.

I am able to connect to a public bucket successfully. However, when I try to connect to a private bucket, I receive the following response from the endpoint in aws when I paste the <FullBucketUrl> from the ecl.xml config in my browser.

<Error>
  <Code>PermanentRedirect</Code>
  <Message>
    The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
  </Message>
  <Bucket>Private-Bucket</Bucket>
  <Endpoint>s3.amazonaws.com</Endpoint>
  <RequestId>68D6A3E11776FCC1</RequestId>
  <HostId>b24iR0OcgTWX7+JaLVhZfz22KI8QK5Gh4qWXAgf7GmFyDG64TwPY5ELSgMcrwnefeLfSBJCmrgQ=</HostId>
</Error>

This is from my public bucket config that is working correctly.

<FullBucketUrl xmlns="http://www.sdltridion.com/S3EclProvider/Configuration">https://ecl-s3-test.s3.us-east-2.amazonaws.com/</FullBucketUrl>

Yes, I am using correct S3AccessId, S3SecretKey, S3BucketName, from AWS.

So I guess my question is, what is the <FullBucketUrl> I should be using to connect to private S3 bucket from ecl.xml and/or "other" credentials I need to pass to access a list of items inside the bucket, considering I am getting the PermanentRedirect on all <FullBucketUrl> below

I have tried these so far, with no luck.

<FullBucketUrl xmlns="http://www.sdltridion.com/S3EclProvider/Configuration">https://s3-us-west-2.amazonaws.com/name-of-bucket/</FullBucketUrl>
<FullBucketUrl xmlns="http://www.sdltridion.com/S3EclProvider/Configuration">https://name-of-bucket.s3-us-west-2.amazonaws.com/</FullBucketUrl>
<FullBucketUrl xmlns="http://www.sdltridion.com/S3EclProvider/Configuration">http://name-of-bucket.s3.amazonaws.com/</FullBucketUrl>
<FullBucketUrl xmlns="http://www.sdltridion.com/S3EclProvider/Configuration">https://s3.us-west-2.amazonaws.com/</FullBucketUrl>
<FullBucketUrl xmlns="http://www.sdltridion.com/S3EclProvider/Configuration">https://aws.amazon.com/s3/</FullBucketUrl>
<FullBucketUrl xmlns="http://www.sdltridion.com/S3EclProvider/Configuration">https://autoscaling.us-west-2.amazonaws.com/</FullBucketUrl>

Stacktrace (which is what I would expect considering the above S3 error).

2017-07-24 12:46:26,813 [4] ERROR UI.Model - 
System.Exception: Unable to get the list of items ---> System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: Exception has been thrown by the target of an invocation.

Server stack trace: 
at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Tridion.ExternalContentLibrary.Service.Client.ISessionAwareEclService.GetList(String parentItemUri, Int32 pageIndex, EclItemTypes itemTypes, IEnumerable`1 basedOnSchema)
at Tridion.ExternalContentLibrary.UI.Model.Services.GeneralImpl.GetList(String id, Int32 pageIndex, Filter filter, Int32 columns)
--- End of inner exception stack trace ---
at Tridion.ExternalContentLibrary.UI.Model.Services.GeneralImpl.GetList(String id, Int32 pageIndex, Filter filter, Int32 columns)
at Tridion.ExternalContentLibrary.UI.Model.Services.General.GetList(String id, Int32 pageIndex, Filter filter, Int32 columns)
at SyncInvokeGetList(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at Tridion.Web.UI.Core.Extensibility.DataExtenderOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
2017-07-24 12:46:29,767 [4] DEBUG UI.DataExtenders - Process response for command 'GetListActivityInstances' id=''
2017-07-24 12:46:29,767 [4] DEBUG UI.DataExtenders - Updating element 'tcm:ListActivityInstances'
2017-07-24 12:46:30,767 [4] DEBUG UI.DataExtenders - Process response for command 'GetListActivityInstances' id=''
2017-07-24 12:46:30,767 [4] DEBUG UI.DataExtenders - Updating element 'tcm:ListActivityInstances'
2

So looks like you need to specify the <S3RegionEndpoint> and the <FullBucketUrl> within the ExternalContentLibrary.xml S3 configuration I got from here.

<S3RegionEndpoint xmlns="http://www.sdltridion.com/S3EclProvider/Configuration">us-east-2</S3RegionEndpoint>
<FullBucketUrl xmlns="http://www.sdltridion.com/S3EclProvider/Configuration">https://name-of-bucket.s3.amazonaws.com/</FullBucketUrl>
  • Hi Andrew, please mark it as answer, if you have found a resolution already – Rajesh Jul 25 '17 at 6:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.