Re: S3 route problem when access key and secret key are in URI
It works after I wrap my secret key with "RAW". Thanks! Shing On Saturday, 10 January 2015, 7:01, Willem Jiang wrote: You can use raw()[1] to wrap the access key and secret key to avoid the encoding of URI. [1]https://camel.apache.org/configuring-camel.html#ConfiguringCamel-Configuringparametervaluesusingrawvalues,egsuchaspasswords -- Willem Jiang Red Hat, Inc. Web: http://www.redhat.com Blog: http://willemjiang.blogspot.com (English) http://jnn.iteye.com (Chinese) Twitter: willemjiang Weibo: 姜宁willem On January 10, 2015 at 5:02:14 AM, Shing Hing Man (mat...@yahoo.com.invalid) wrote: > > I am using Camel 2.14.1 > When I build a S3 route and specify the accessKey and secretKey in the URI, I > got the following > exception.(Note that I have URL encoded my secret key so that "+" is replaced > by "%2B". > ) > String awsURLTemplate="aws-s3://%s?accessKey=%s&secretKey=%s®ion=eu-west-1"; > final String awsURL = String.format(awsURLTemplate,bucketName, > accessKey,secretKey); > DefaultCamelContext context = new DefaultCamelContext(); > context.addRoutes(new > RouteBuilder() { public void configure() { > from("direct:start").to(awsURL).to("stream:out"); > } }); > > Exception in thread "main" org.apache.camel.FailedToCreateRouteException: > Failed > to create route route1 at: >>> > To[aws-s3://myBucket?accessKey=***&secretKey=***®ion=eu-west-1] > <<< in route: Route(route1)[[From[direct:start]] -> [To[aws-s3://... because > of > Failed to resolve endpoint: > aws-s3://myBucket?accessKey=***®ion=eu-west-1&secretKey= > due to: The request signature we calculated does not match the signature you > provided. > Check your key and signing method. (Service: Amazon S3; Status Code: 403; > Error Code: > SignatureDoesNotMatch; Request ID: C227F0C1D0D16660) at > org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:945) > at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:187) > > at > org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:805) > > at > org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:2174) > > at > org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1906) > > at > org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1767) > > at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) > at > org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1735) > > at net.sf.camel.s3.S3Demo2.run(S3Demo2.java:58) > > But it works if the accessKey and secretKey are specified in a registry as > described in > http://camel.apache.org/aws-s3.html Thanks in advance for any assistance ! > Shing >
Re: S3 route problem when access key and secret key are in URI
You can use raw()[1] to wrap the access key and secret key to avoid the encoding of URI. [1]https://camel.apache.org/configuring-camel.html#ConfiguringCamel-Configuringparametervaluesusingrawvalues,egsuchaspasswords -- Willem Jiang Red Hat, Inc. Web: http://www.redhat.com Blog: http://willemjiang.blogspot.com (English) http://jnn.iteye.com (Chinese) Twitter: willemjiang Weibo: 姜宁willem On January 10, 2015 at 5:02:14 AM, Shing Hing Man (mat...@yahoo.com.invalid) wrote: > > I am using Camel 2.14.1 > When I build a S3 route and specify the accessKey and secretKey in the URI, I > got the following > exception.(Note that I have URL encoded my secret key so that "+" is replaced > by "%2B". > ) > String awsURLTemplate="aws-s3://%s?accessKey=%s&secretKey=%s®ion=eu-west-1"; > final String awsURL = String.format(awsURLTemplate,bucketName, > accessKey,secretKey); > DefaultCamelContext context = new DefaultCamelContext(); > context.addRoutes(new > RouteBuilder() { public void configure() { > from("direct:start").to(awsURL).to("stream:out"); > } }); > > Exception in thread "main" org.apache.camel.FailedToCreateRouteException: > Failed > to create route route1 at: >>> > To[aws-s3://myBucket?accessKey=***&secretKey=***®ion=eu-west-1] > <<< in route: Route(route1)[[From[direct:start]] -> [To[aws-s3://... because > of > Failed to resolve endpoint: > aws-s3://myBucket?accessKey=***®ion=eu-west-1&secretKey= > due to: The request signature we calculated does not match the signature you > provided. > Check your key and signing method. (Service: Amazon S3; Status Code: 403; > Error Code: > SignatureDoesNotMatch; Request ID: C227F0C1D0D16660) at > org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:945) > at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:187) > > at > org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:805) > > at > org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:2174) > > at > org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1906) > > at > org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1767) > > at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) > at > org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1735) > > at net.sf.camel.s3.S3Demo2.run(S3Demo2.java:58) > > But it works if the accessKey and secretKey are specified in a registry as > described in > http://camel.apache.org/aws-s3.html Thanks in advance for any assistance ! > Shing >