AWS S3DownloadTask无法解析主机:没有与主机名关联的地址

时间:2015-11-11 06:00:13

标签: android amazon-web-services amazon-s3 amazon-cognito

我正在尝试从Android上的Amazon S3存储桶下载,虽然我收到此错误:

java.net.UnknownHostException: Unable to resolve host "cognito-identity.us-west-2.amazonaws.com": No address associated with hostname

在这一行

Download down = manager.download(AWSClientManager.S3_BUCKET_NAME, fileToDownload, file);

我不确定为什么当 CognitoCachingCredentialsProvider 的默认值我们时,它会使用 us-west-2 东1

即便如此,我的s3存储的以下locatin有完全相同的文件:

https://console.aws.amazon.com/s3/home?region=us-east-1
https://console.aws.amazon.com/s3/home?region=us-west-2

我不知道为什么我收到上述错误,有人可以帮忙吗?

嗨@Mark, 我的CognitoCachingCredentialsProvider设置为US_EAST_1

我正在使用AmazonS3Client下载S3文件..我认为这可能是个问题。我明确地设定了该地区,尽管它似乎完全无视这一点。

这是我的错误代码:

private S3TaskResult downloadResources(String fileToDownload) {

        S3TaskResult result = new S3TaskResult();
        File file = new File(downloadDirectory, fileToDownload);

        try {

            manager.getAmazonS3Client().setRegion(com.amazonaws.regions.Region.getRegion(Regions.US_EAST_1));
            Download down = manager.download(AWSClientManager.S3_BUCKET_NAME, fileToDownload, file);
            down.addProgressListener(this);
            down.waitForCompletion();

        } catch (Exception e) { 
            // TODO:  FIGURE OUT WHY IT ERRORS HERE :(
            result.setErrorMessage(e.getMessage()); 
        }

        return result;
    }

1 个答案:

答案 0 :(得分:3)

问题似乎是你正在尝试使用Amazon Cognito是us-west-2。

java.net.UnknownHostException: Unable to resolve host "cognito-identity.us-west-2.amazonaws.com": No address associated with hostname

目前,亚马逊Cognito仅在us-east-1,eu-west-1和ap-northeast-1中可用。

这并不意味着您无法使用Cognito凭据访问其他区域中的S3存储桶,您只需将Cognito设置为使用上述区域之一(并在该区域中设置您的标识池)。然后将您的S3客户端设置为使用您的存储桶所在的任何区域。

确保使用正确的区域设置凭据提供程序:

CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
   getApplicationContext(), // Context
   "IDENTITY_POOL_ID", // Identity Pool ID
   Regions.US_EAST_1 // Region
);

如下所述:http://docs.aws.amazon.com/cognito/devguide/identity/getting-credentials/