java - 为什么 AmazonS3Client 不使用我设置的代理?

标签 java amazon-web-services amazon-s3

我正在运行此代码:

    String urlString = rootUrl + "/" + path;

    AWSCredentials myCredentials = new BasicAWSCredentials(EnvironmentVariables.AWS_ACCESS_KEY, EnvironmentVariables.AWS_SECRET_KEY);
    ClientConfiguration clientConfiguration = new ClientConfiguration();
    if ("true".equalsIgnoreCase(EnvironmentVariables.proxySet)) {
        logger.info("EnvironmentVariables.proxyHost=" + EnvironmentVariables.proxyHost);
        clientConfiguration.setProxyDomain(EnvironmentVariables.proxyHost);
        logger.info("EnvironmentVariables.proxyPort=" + EnvironmentVariables.proxyPort);
        clientConfiguration.setProxyPort(Integer.valueOf(EnvironmentVariables.proxyPort));
    }

    TransferManager tx = null;
    try {

        tx = new TransferManager(new AmazonS3Client(myCredentials, clientConfiguration));
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setContentType(pathToContentType(path));
        Upload upload = tx.upload(bucketName, path, data, objectMetadata);



        upload.waitForUploadResult();

        return new URL(urlString);

    } catch (InterruptedException e) {
        throw new IllegalStateException("Interrupted when uploading the image to S3", e);
    } catch (MalformedURLException e) {
        throw new IllegalStateException("Invalid URL: " + urlString, e);
    } finally {
        if (tx != null) {
            tx.shutdownNow();
        }
    }

这在没有代理的情况下工作正常,但如果我打开代理,我认为它没有被使用。我可以这样判断:我在 if 语句中命中断点,并将 proxyHost 从“proxy.com”(存在的主机)更改为“proxy.com2”(不存在的主机)。一切都运行良好,就好像我没有打开代理代码一样。如果使用我的主机,我预计会出现错误。

如何让 S3 客户端使用我提供的代理设置?

我使用的是 1.8.4 的 amazon sdk。

最佳答案

我将 setProxyDomain 更改为 setProxyHost,它开始像我预期的那样出错。

关于java - 为什么 AmazonS3Client 不使用我设置的代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29089585/

相关文章:

java - Android - 如何访问在 onResume 中的 onCreate 中实例化的 View 对象?

amazon-web-services - dynamodb-按数组内的值扫描项目

java - 从 AMAZON S3 中删除今天之前创建的所有文件

由网络连接支持的 Java 迭代器

java - Java 中的私有(private)辅助方法与公共(public)静态实用程序方法

angular - AWS 无服务器 Lambda + Angular - TypeError : express is not a function

amazon-web-services - 增加 EC2 磁盘存储而不丢失任何数据

python - 无法使用 Python 脚本和通配符将多个文件上传到 AWS S3

java - 无法使用 Java 在 Amazon S3 中上传文件

c# - 当对集合的引用未更改时,我应该返回集合吗?