我正在尝试创建一个将文件从FTP服务器传输到AWS S3存储的camel路由。 我写了以下路线
private static class MyRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception
{
from("sftp://<<ftp_server_name>>&noop=true&include=<<file_name>>...")
.process(new Processor(){
@Override
public void process(Exchange ex)
{
System.out.println("Hello");
}
})
.to("aws-s3://my-dev-bucket ?
accessKey=ABC***********&secretKey=12abc********+**********");
}
问题是,这给了我以下例外:
Exception in thread "main" org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> To[aws-s3://my-dev-bucket?accessKey=ABC*******************&secretKey=123abc******************** <<< in route: Route(route1)[[From[sftp://<<ftp-server>>... because of Failed to resolve endpoint: aws-s3://my-dev-bucket?accessKey=ABC***************&secretKey=123abc************** due to: The request signature we calculated does not match the signature you provided. Check your key and signing method.
然后我尝试以另一种方式做到这一点。即写一个像这样的方法:
public void boot() throws Exception {
// create a Main instance
main = new Main();
// enable hangup support so you can press ctrl + c to terminate the JVM
main.enableHangupSupport();
// bind MyBean into the registery
main.bind("foo", new MyBean());
// add routes
AWSCredentials awsCredentials = new BasicAWSCredentials("ABC*****************", "123abc*************************");
AmazonS3 client = new AmazonS3Client(awsCredentials);
//main.bind("client", client);
main.addRouteBuilder(new MyRouteBuilder());
main.run();
}
并使用绑定变量#client进行调用。这种方法没有任何例外,但文件传输不起作用。
为了确保我的方法没有任何问题,我尝试了aws-sqs而不是aws-s3并且工作正常(文件成功传输到SQS队列)
知道为什么会这样吗? &#34; aws-s3&#34;是否存在一些基本问题?骆驼的连接器?
答案 0 :(得分:2)
您是否尝试使用RAW()
函数进行换行,如RAW(secretkey or accesskey)
。
它可以帮助您传递键,因为它是,无需编码。
答案 1 :(得分:0)
您的密钥中的任何加号需要将网址编码为%2B,在您的情况下**********+***********
变为**********%2B***********
答案 2 :(得分:0)
使用URI配置Camel端点时,参数值默认为url编码。 如果要按原样配置密码,这可能是一个问题。
为此,您可以通过将值包含在RAW(值)中来告诉Camel使用原始值。有关详细信息,请参阅如何配置具有示例的端点。 See Camel Documentation
答案 3 :(得分:0)
您的网址应如下所示:
aws-s3:bucketName?accessKey=RAW(XXXX)&secretKey=RAW(XXXX)