Amazon s3 骆驼aws-s3不工作
我正在尝试创建一个camel路由,将文件从FTP服务器传输到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
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)