AWS错误从S3下载对象,“配置文件不能为空”

Xenalin:

我已经看到了这个,但没有答案来解释我的问题。我第一次使用所提供的样品在这里(GetObject的类),并且它在我的桌面上立即工作。然而,我的朋友无法得到它自己的机器上工作,也不会在我们的EC2实例工作。

有人提到,要凭证文件中指定的,这是有意义的也有,但我从来没有做到这一点,我相当肯定的默认权限被设置为允许访问该桶。

这里的堆栈跟踪:

Exception in thread "main" java.lang.IllegalArgumentException: profile file cannot be null
    at com.amazonaws.util.ValidationUtils.assertNotNull(ValidationUtils.java:37)
    at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:142)
    at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:133)
    at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:100)
    at com.amazonaws.auth.profile.ProfileCredentialsProvider.getCredentials(ProfileCredentialsProvider.java:135)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.getCredentialsFromContext(AmazonHttpClient.java:1029)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1049)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:949)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:662)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:636)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:619)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$300(AmazonHttpClient.java:587)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:574)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:446)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4035)
    at com.amazonaws.services.s3.AmazonS3Client.getBucketRegionViaHeadRequest(AmazonS3Client.java:4474)
    at com.amazonaws.services.s3.AmazonS3Client.fetchRegionFromCache(AmazonS3Client.java:4448)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4020)
    at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1307)
    at GetObject.main(GetObject.java:26)

我可以保证,无论是bucketName也不在GetObjectRequest关键PARAMS是空的。这里有什么差异?为什么会是我的电脑上才能取得成功?这是在所有相关的事实,我必须补充大量的罐的AWS-SDK罐子本来已经(杰克逊 - 数据绑定,杰克逊核心,杰克逊的注解,HttpClient的,的HttpCore,共享记录,并joda-时间)?这似乎相似,有什么用,否则不可解释的错误(给非空参数,可以在一些AWS-SDK说,这是空)。

瑞安希林:

它看起来像你的意见解决了这一点,但我得到了烧就这个问题和想离开的未来的读者更清晰的答案。要超清晰,这里的问题无关,与S3文件此错误消息有没有跟你的硬盘驱动器上的文件,也不是你想从S3推/拉文件。问题是,你喜欢的东西初始化S3:

AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());

当你这样做,它看起来在配置文件列表〜/ .aws /凭证。您的计算机上,这可能工作的高度,但不会在任何地方工作,你获得通过IAM角色(例如,LAMBDA,码头工人,EC2实例等),AWS访问。此修复程序,是初始化AmazonS3Client这样的:

AmazonS3 s3Client = new AmazonS3Client();

如果您使用的是需要某种证书提供商的代码,你也可以这样做:

AmazonS3 s3Client = new AmazonS3Client(DefaultAWSCredentialsProviderChain.getInstance());

希望帮助旁边的人。就我而言,我是用DynamoDB和SQS,但我有同样的错误。我最初忽略了这个问题,因为我觉得你的问题是S3相关,并超混淆。腕掌掴。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章