Amazon s3 骆驼aws-s3不工作

Amazon s3 骆驼aws-s3不工作,amazon-s3,apache-camel,camel-ftp,Amazon S3,Apache Camel,Camel Ftp,我正在尝试创建一个camel路由,将文件从FTP服务器传输到AWS S3存储。 我写了下面的路线 private static class MyRouteBuilder extends RouteBuilder { @Override public void configure() throws Exception { from("sftp://<<ftp_server_name>>&noop=true&include=<<file_name

我正在尝试创建一个camel路由,将文件从FTP服务器传输到AWS S3存储。 我写了下面的路线

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********+**********");
}
并使用绑定变量#client调用。这种方法没有给出任何例外,但文件传输不起作用

为了确保我的方法没有问题,我尝试了aws sqs而不是aws-s3,效果很好(文件成功地传输到sqs队列)


知道为什么会这样吗?camel的“aws-s3”连接器是否存在一些基本问题?

您的密钥中的任何加号都需要url编码为%2B,在您的情况下,
******************************
将成为
************%2B************/code>

使用URI配置camel端点时,默认情况下参数值将采用url编码。 当您想按原样配置密码时,这可能是一个问题

要做到这一点,您可以告诉Camel使用原始值,方法是使用raw(value)封装该值。请参阅有关如何配置端点的更多详细信息,其中也有一个示例。

您是否尝试过使用
RAW()
函数像
RAW(secretkey或accesskey)
一样包装


它将帮助您按原样传递,而无需编码

您的url应该如下所示:

aws-s3:bucketName?accessKey=RAW(XXXX)&secretKey=RAW(XXXX)

您能否使用AWS-SDK S3示例检查您的凭据是否有权访问S3服务?
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();
}
aws-s3:bucketName?accessKey=RAW(XXXX)&secretKey=RAW(XXXX)