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 无法通过Tomcat服务器连接到Amazon S3_Java_Amazon S3_Aws Java Sdk - Fatal编程技术网

Java 无法通过Tomcat服务器连接到Amazon S3

Java 无法通过Tomcat服务器连接到Amazon S3,java,amazon-s3,aws-java-sdk,Java,Amazon S3,Aws Java Sdk,我已经编写了一个代码来列出amazon s3 bucket中的文件,但它给了我一个例外: com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to 11.36.134.067:8080 [/11.36.134.067] failed: Connection refused: connect com.amazonaws.http.AmazonHttpClient$RequestExecutor.

我已经编写了一个代码来列出amazon s3 bucket中的文件,但它给了我一个例外:

com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to 11.36.134.067:8080 [/11.36.134.067] failed: Connection refused: connect
    com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleRetryableException(AmazonHttpClient.java:1114)
    com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1064)
    com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743)
    com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717)
    com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
    com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
    com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
    com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
    com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4330)
    com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4277)
    com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4271)
    com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:835)
    com.focus.re.calibr.service.FileUploadService.list(FileUploadService.java:114)
    com.focus.re.calibr.controller.FileUploadController.list(FileUploadController.java:33)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
使用main方法列出文件的代码:

public class App {

    String bucketName = "buketname";
    String accesskey = "accesskey";

    public static void main(String args[]) throws Exception {
        new App();

    }


    App() throws Exception {

        BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(accesskey,
                "secretekey");

        AWSCredentialsProvider awsCredentialsProvider = new AWSStaticCredentialsProvider(basicAWSCredentials);

        AwsClientBuilder.EndpointConfiguration endpointConfiguration =
                new AwsClientBuilder.EndpointConfiguration("11.36.134.067:8080", "");

        ClientConfiguration clientCfg = new ClientConfiguration();
        SSLContextBuilder builder = new SSLContextBuilder();

        builder.loadTrustMaterial(null, new

                TrustStrategy() {
                    public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                        return true;
                    }
                });

        SSLConnectionSocketFactory sslConnectionSocketFactory =
                new SSLConnectionSocketFactory(builder.build(), new NoopHostnameVerifier());
        clientCfg.getApacheHttpClientConfig().

                withSslSocketFactory(sslConnectionSocketFactory);

        AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard()
                .withCredentials(awsCredentialsProvider)
                .withClientConfiguration(clientCfg)
                .withEndpointConfiguration(endpointConfiguration)
                .build();

        listAllFiles(amazonS3);


    } 

public void listAllFiles(AmazonS3 amazonS3) {

        ListObjectsRequest listObjectsRequest = new ListObjectsRequest().withBucketName(bucketName);

        ObjectListing objectListing = amazonS3. listObjects (listObjectsRequest);

        objectListing.getObjectSummaries().forEach(
                s3ObjectSummary -> {
                    System.out.println(s3ObjectSummary.getKey() + "  " + s3ObjectSummary.getSize());

                });
    }

}
如果我通过执行main方法来运行代码,那么这段代码可以正常工作,但是如果我通过调用springrestfulwebservice从tomcat服务器运行代码,那么就会发生异常


目前我使用的是最新的Tomcat server 8.5.28,有没有办法解决这个问题?

EndpointConfiguration
是针对Amazon的端点,而不是您的端点。从

可以将每个AWS客户端配置为在 通过调用setEndpoint方法创建区域

例如,将AmazonEC2客户端配置为使用EU (爱尔兰)地区,请使用以下代码

AmazonEC2 ec2 = new AmazonEC2(myCredentials);
ec2.setEndpoint("https://ec2.eu-west-1.amazonaws.com");

请不要将您的错误用作问题标题。使未来的读者更容易阅读。我认为EndpointConfiguration是针对AWS服务端点的,我相信IP地址“11.36.134.067”不是AWS IP地址之一。将EndpointConfiguration设置为更正AWS服务端点,如s3.amazonaws.com,我认为它将连接到s3服务。