Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ApacheCamel测试Localstack AWS_Java_Amazon Web Services_Amazon S3_Apache Camel_Localstack - Fatal编程技术网

Java 使用ApacheCamel测试Localstack AWS

Java 使用ApacheCamel测试Localstack AWS,java,amazon-web-services,amazon-s3,apache-camel,localstack,Java,Amazon Web Services,Amazon S3,Apache Camel,Localstack,我正试图利用它进行本地AWS模拟测试。具体来说,我想使用ApacheCamel S3路由从localstack S3 bucket下载一个文件。然而,我遇到了错误。以下是我采取的步骤 我已经通过输入 aws --endpoint-url=http://localhost:4572 s3 mb s3://mytestbucket 然后,我上传了一个测试文件到这个桶 aws --endpoint-url=http://localhost:4572 s3 cp docker-compose.yml

我正试图利用它进行本地AWS模拟测试。具体来说,我想使用ApacheCamel S3路由从localstack S3 bucket下载一个文件。然而,我遇到了错误。以下是我采取的步骤

我已经通过输入

aws --endpoint-url=http://localhost:4572 s3 mb s3://mytestbucket
然后,我上传了一个测试文件到这个桶

aws --endpoint-url=http://localhost:4572 s3 cp docker-compose.yml s3://mytestbucket
两个操作都成功完成。在我的Java代码中,我创建了一个CDI生产者来生成com.amazonaws.services.s3.AmazonS3客户机对象

AWSCredentials credentials = new BasicAWSCredentials("XXXXX", "XXXXX");
AWSCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials);
AmazonS3ClientBuilder clientBuilder = AmazonS3ClientBuilder.standard()
                .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://localhost:4572", "us-east-1"))
                .withCredentials(credentialsProvider);

AmazonS3 s3Client = clientBuilder.build();  
最后,我创建了一个驼峰路由,用于将mytestbucket的内容下载到本地目录中

<route id="s3test">
        <from
            uri="aws-s3://arn:aws:s3:::mytestbucket?amazonS3Client=#s3Client&amp;deleteAfterRead=false&amp;maxMessagesPerPoll=25&amp;delay=5000" />
        <log message="S3 consumer fired" loggingLevel="DEBUG" />
        <log message="Sending S3 file to ${in.header.CamelAwsS3Key}..." />
        <to
            uri="file://tmp/camel?fileName=${in.header.CamelAwsS3Key}" />
    </route>

但是,当我的应用程序启动并尝试运行路由时,会出现以下异常:

原因:org.jboss.weld.exceptions.DeploymentException:未能 创建路由测试: 路线(s3test)[[From[aws-s3://arn:aws:s3:::mytestbucket?amazo…”。。。 由于无法在执行HTTP请求:mytestbucket.localhost org.jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:38) 在 org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl.fire(AfterDeploymentValidationImpl.java:28) 在 org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:499) 在 org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:93) 在org.jboss.as.weld.WeldStartService.start(WeldStartService.java:97)上 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1736) 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1698) …另外6个原因:org.apache.camel.FailedToCreateRouteException: 无法创建路由测试: 路线(s3test)[[From[aws-s3://arn:aws:s3:::mytestbucket?amazo…”。。。 由于无法在执行HTTP请求:mytestbucket.localhost org.apache.camel.impl.RouteService.warmUp(RouteService.java:147)位于 org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:3949) 在 org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3856) 在 org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3642) 在 org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3494) 在 org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:209) 在 org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3253) 在 org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3249) 在 org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3272) 在 org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3249) 在 org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) 在 org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3165) 在 org.apache.camel.impl.DefaultCamelContext$Proxy$\u$\ uWeldClientProxy.start(未知 来源)在 org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(CdiCamelExtension.java:425) 位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:498) org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95) 在 org.jboss.weld.injection.MethodInvocationStrategy$SpecialPalamPlusBeanManager策略.invoke(MethodInvocationStrategy.java:144) 在 org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330) 在 org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:123) 在 org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308) 在 org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286) 位于org.jboss.weld.util.observators.notify(observators.java:172) org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:285) 在 org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:273) 在 org.jboss.weld.event.ObserverNotifier.firevent(ObserverNotifier.java:177) 在 org.jboss.weld.event.ObserverNotifier.firevent(ObserverNotifier.java:171) 在 org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:53) 在 org.jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:35) …另外12个原因:com.amazonaws.SdkClientException:无法 在以下位置执行HTTP请求:mytestbucket.localhost amazonaws.http.AmazonHttpClient$RequestExecutor.handleRetryableException(AmazonHttpClient.java:1114) 在 amazonaws.http.AmazonHttpClient$RequestExecutor.executehelp(AmazonHttpClient.java:1064) 在 amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743) 在 amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717) 在 amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) 在 amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) 在 amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) 在 com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513) 在 amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4330) 在 amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4277) 在 com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.jav
AWSCredentials credentials = new BasicAWSCredentials("XXXXX", "YYYYY");
AWSCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials);
AmazonS3ClientBuilder clientBuilder = AmazonS3ClientBuilder.standard().withPathStyleAccessEnabled(true)
                    .disableChunkedEncoding()
                    .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(S3_ENDPOINT, "us-east-1"))
                    .withCredentials(credentialsProvider);