【问题标题】:Cannot connect from EC2 to S3无法从 EC2 连接到 S3
【发布时间】:2018-06-01 10:48:21
【问题描述】:

我正在尝试使用 AmazonS3Client 从 EC2 实例连接到 S3,以获取 S3 存储桶中存在的对象列表。虽然从本地计算机运行此代码时我可以连接到 S3,但我很难在 EC2 上运行相同的代码。

我是否缺少 EC2 实例上的任何设置或配置?

代码

AWSCredentials credentials = new BasicAWSCredentials("XXXX", "YYYY");

AmazonS3Client conn = new AmazonS3Client(credentials);

String bucketName = "s3-xyz";

String prefix = "123";

ObjectListing objects = conn.listObjects(bucketName, prefix);

List<S3ObjectSummary> objectSummary = objects.getObjectSummaries();

for(S3ObjectSummary os : objectSummary)
{
        System.out.println(os.getKey());
}

错误

ERROR com.amazonaws.http.AmazonHttpClient  - Unable to execute HTTP request: Connect to s3-xyz.amazonaws.com:443 timed out
    org.apache.http.conn.ConnectTimeoutException: Connect to s3-xyz.s3.amazonaws.com:443 timed out
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:551)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:318)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:202)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3037)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3008)
    at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:531)
    at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:515)  

【问题讨论】:

  • 看起来你面临着类似的问题。看看这个stackoverflow.com/questions/25754530/…
  • 谢谢!我能够通过为 AmazonS3Client 添加代理主机配置来解决这个问题。 ClientConfiguration cc = new ClientConfiguration(); cc.setProxyHost("proxy_host"); cc.setProxyPort(4567);

标签: amazon-web-services amazon-s3 amazon-ec2


【解决方案1】:
ClientConfiguration cc = new ClientConfiguration(); 
    cc.setProxyHost("10.66.80.122"); 
    cc.setProxyPort(8080);      
    propertiesCredentials = new BasicAWSCredentials(aws_access_key_id, aws_secret_access_key);
    s3 = new AmazonS3Client(propertiesCredentials,cc);

要查找代理主机和端口,请转到 LAN 设置。

【讨论】:

    猜你喜欢
    • 2018-02-01
    • 2021-09-22
    • 1970-01-01
    • 2021-09-22
    • 2021-06-05
    • 2023-03-07
    • 2021-09-18
    • 2020-07-26
    • 2013-02-27
    相关资源
    最近更新 更多