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

Android AWS S3DownloadTask无法解析主机:没有与主机名关联的地址,android,amazon-web-services,amazon-s3,amazon-cognito,Android,Amazon Web Services,Amazon S3,Amazon Cognito,我正在尝试从Android上的Amazon S3 bucket下载,尽管我遇到了以下错误: 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_NAM

我正在尝试从Android上的Amazon S3 bucket下载,尽管我遇到了以下错误:

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);
我不确定当myCognitoCachingCredentialsProvider的默认值为us-east-1时,为什么会使用us-west-2

即使如此,我的s3存储的以下位置也有完全相同的文件:

https://console.aws.amazon.com/s3/home?region=us-east-1
https://console.aws.amazon.com/s3/home?region=us-west-2
我不知道为什么我会出现上面的错误,有人能帮忙吗

嗨,马克, 我的CognitoCachingCredentialsProvider设置为US\u EAST\u 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;
    }

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

java.net.UnknownHostException: Unable to resolve host "cognito-identity.us-west-2.amazonaws.com": No address associated with hostname
目前,Amazon Cognito仅在us-east-1、eu-west-1和ap-northeast-1中提供

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

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

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

如本文所述:

问题似乎是您试图使用Amazon Cognito is us-west-2

java.net.UnknownHostException: Unable to resolve host "cognito-identity.us-west-2.amazonaws.com": No address associated with hostname
目前,Amazon Cognito仅在us-east-1、eu-west-1和ap-northeast-1中提供

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

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

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

正如这里所描述的:

fwiw:console区域在查看S3时没有传递任何有意义的信息,us-west-2没有错误,因此错误是准确的,尽管我意识到这并没有多少安慰——不清楚您的代码为什么尝试使用us-west-2。谢谢您的帮助,Michael,你提供的链接让我对AWS端点有了更多的了解:)干杯Wiw:控制台区域在查看S3时没有传递任何有意义的信息,us-west-2也没有错误,因此错误是准确的,尽管我意识到这并没有多少安慰——不清楚为什么你的代码试图使用us-west-2。谢谢你的帮助Michael,你提供的链接让我对AWS端点有了更多的了解:)谢谢,我将把这个标记为答案,因为它是正确的。我遇到的问题是,我在我的startup类(当用户已经登录并重新打开应用程序时使用的代码)和登录类上的US_EAST_1中将区域设置为默认值。我忘了检查我的创业课程:(我把我的创业课程改成了US_EAST_1,它成功了:)我知道我忽略了一些东西,但就是找不到它在哪里。谢谢你的帮助,你太棒了……救生圈我要把这个作为答案,因为它是正确的。我遇到的问题是,我在我的startup类(当用户已经登录并重新打开应用程序时使用的代码)和登录类上的US_EAST_1中将区域设置为默认值。我忘了检查我的创业课程:(我把我的创业课程改成了US_EAST_1,它成功了:)我知道我忽略了一些东西,但就是找不到它在哪里。谢谢你的帮助你太棒了…救命恩人