Eug*_*ene 9 proxy amazon-s3 amazon-web-services
我有这段简单的代码试图通过代理将文件上传到Amazon S3.这是代码:
BasicAWSCredentials basicCred = new BasicAWSCredentials("my_access_key", "my_secret_key");
ClientConfiguration clientCfg = new ClientConfiguration();
clientCfg.setProtocol(Protocol.HTTP);
//setup proxy connection:
clientCfg.setProxyHost("192.168.2.12");
clientCfg.setProxyPort(80);
AmazonS3 s3 = new AmazonS3Client(basicCred, clientCfg);
String bucketName = "mybucket";
String key = "/test/Capture.JPG";
File file = new File("d:/Test_Data/Capture.JPG");
System.out.println("Uploading a new object to S3 from a file");
s3.putObject(new PutObjectRequest(bucketName, key, file));
Run Code Online (Sandbox Code Playgroud)
但是这是我从运行程序得到的错误:
Exception in thread "main" java.lang.NullPointerException
at com.amazonaws.util.BinaryUtils.fromHex(BinaryUtils.java:69)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1066)
at javaapplication8.JavaApplication8.main(JavaApplication8.java:48)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)
我正在使用亚马逊最新的aws 1.3.8 sdk.代理在我旁边的另一台PC中设置,它只是一个简单的Javascript代理(http://www.catonmat.net/http-proxy-in-nodejs/)
我无法弄明白为什么.有人可以帮帮我吗?
这是另一种方法
ClientConfiguration config = new ClientConfiguration();
config.setProtocol(Protocol.HTTPS);
config.setProxyHost("YOUR_PROXY_IP");
config.setProxyPort(YOUR_PROXY_PORT);
BasicAWSCredentials creds = new BasicAWSCredentials("YOUR_KEY", "YOUR_SECRET");
s3Client = AmazonS3ClientBuilder.standard()
.withClientConfiguration(config)
.withRegion(Regions.US_EAST_2)
.withCredentials(new AWSStaticCredentialsProvider(creds))
.build();
Run Code Online (Sandbox Code Playgroud)
我也遇到了这个问题。我在调试器中单步调试了所有内容,发现问题的原因是 Amazon S3 客户端代码需要一个名为 的标头标签"ETag",但响应包含"Etag", 小写的"t".
标头被放入 a 中Map<String,String>,因此当 Amazon S3 客户端代码调用 时get("ETag"),它会返回null,然后将其输入到该hexData()方法中并爆炸。
许多使用非 Amazon S3 服务或通过 Web 代理访问 Amazon 的 AWS S3 服务的人似乎都会遇到这种情况。
除了获取亚马逊客户端源、将Headers.ETAG值更改为"Etag"并构建JAR自己之外,我不知道有什么解决办法。
| 归档时间: |
|
| 查看次数: |
14706 次 |
| 最近记录: |